Thank you for your interest in contributing! This guide covers everything you need — from filing a bug to merging a pull request.
By participating in this project you agree to abide by our Code of Conduct.
If this is your first open-source contribution, welcome! Here is a gentle starting path:
- Read the Development Guide to get the project running locally.
- Browse issues labelled
good first issue— these are small, well-scoped tasks with clear acceptance criteria. - Leave a comment on the issue to let maintainers know you are working on it.
- Follow the Pull Requests steps below.
Not sure where to start? Open a Discussion and ask — we are happy to help.
- Search existing issues before opening a new one.
- For large changes, open an issue first to discuss the approach — this avoids wasted effort.
- Branch from
development, notmain.
Open an issue using the Bug Report template. Include:
- A clear, descriptive title
- Steps to reproduce
- Expected vs actual behaviour
- Your environment (OS, Bun version, Docker version, MongoDB version)
- Relevant logs or screenshots
Open an issue using the Feature Request template. Describe:
- The problem or limitation it addresses
- Your proposed solution
- Any alternatives you considered
git clone https://github.com/abdullahmia/compooss.git
cd compooss
git checkout development
git checkout -b feat/your-feature-name
# or: fix/your-bug-fixbun installFollow the coding standards below. Keep PRs focused — one feature or fix per PR.
bun lint
bun type-checkFollow Conventional Commits — Commitlint will reject non-conforming messages:
feat: add collection rename dialog
fix: correct index drop confirmation behaviour
docs: update development guide
- Fill out the pull request template
- Reference any related issues (
Closes #123) - Describe what changed and why
- Add the appropriate label (see CI & Labels below)
This project uses GitHub Actions to automate builds and deployments. Workflows are triggered by labels added to pull requests.
| Label | Effect |
|---|---|
app:compooss |
Triggers the App Deploy workflow for the Compooss app |
- Open your pull request.
- In the right-hand sidebar, click Labels and add the label that matches what your PR affects.
- The corresponding workflow will run automatically under the Actions tab.
Note: If a label is already on the PR when you push new commits, the workflow re-runs automatically on each push.
If you are unsure which label to apply, leave a comment and a maintainer will add it for you.
apps/compooss/src/lib/
├── components/ # UI components, grouped by feature
├── config/ # ApiClient singleton
├── constants/ # ENDPOINTS and ROUTE_PATHS
├── core-modules/ # Base repository + shell evaluator
├── driver/ # MongoDriver + ConnectionManager
├── hooks/ # Zustand ↔ URL/session bridge hooks
├── providers/ # React context providers
├── schemas/ # Zod schemas + form types
├── services/ # TanStack Query hooks
├── storage/ # IndexedDB browser-side connection store
├── stores/ # Zustand stores
└── types/ # TypeScript entity + response types
See docs/DEVELOPMENT.md for the full architecture guide.
- TypeScript for all new code — no
anywithout a comment explaining why. - Follow the existing ESLint configuration (
bun lintmust pass). - Use functional components and hooks — no class components.
- Keep components small and focused; one responsibility per file.
- Name files
kebab-case.component.tsxand use named exports. - Import from
@/aliases — never relative paths like../../.
- A maintainer will review your PR within a few days of submission.
- If changes are requested, address them in new commits — do not force-push once a review has started.
- Once approved, a maintainer will squash-merge the PR into
developmentand it will be included in the next release. - All checks (lint, type-check, CI workflows) must pass before a PR can be merged.
Open a Discussion or drop a comment on a related issue.