Thank you for your interest in contributing. This document covers how to get started, branch naming, PR checks, and code style.
- Get the repo: Clone the repository and run locally. For full setup (env vars, database, migrations), see DEPLOYMENT.md.
- Quick local run:
npm install, copy.env.exampleto.env.local, fill required vars,npx prisma generate,npx prisma migrate dev,npm run dev.
Use descriptive branches:
feature/<name>- New featuresfix/<name>- Bug fixesdocs/<name>- Documentation only
Examples: feature/export-csv, fix/deal-risk-edge-case, docs/api-examples.
Run these locally before opening a pull request:
- Mandatory local quality gate:
npm run verify - Build (optional but recommended):
npm run build
Fix any failures. E2E tests are optional and should not be treated as a default gate unless explicitly requested: npm run test:e2e.
The repo includes a manual-only workflow (trigger: workflow_dispatch) that runs the same gate as locally: npm run verify (same as npm run verify:ci). It does not run on push or pull request, so commits and PRs stay clean unless you run it. To use it: GitHub → Actions → “Verify (manual)” → Run workflow. Prefer passing npm run verify on your machine before every push.
- This repo’s workflows do not auto-run on
pushorpull_request; nothing in.github/workflows/should add a check to every commit by default. - A red X on a PR can still come from repository settings, not from these files:
- Branch protection → Require status checks: if a check name is required but no workflow produces it (or the workflow was skipped), GitHub can show failing / pending expectations. Fix: Settings → Branches → edit the rule → Status checks - either remove obsolete required checks or align the name with a workflow you actually run.
- “No required checks” means branch protection is not waiting on a specific job; optional Actions you run manually still appear under the Actions tab only when you trigger them.
- Description: Clearly describe what changed and why.
- Issues: Link to an issue if the PR addresses one (e.g. "Fixes #123").
- Scope: Keep changes focused; prefer several small PRs over one large one.
- Docs: Update README or other docs if you change setup, APIs, or behavior that users rely on.
We aim for WCAG 2.1 AA. Use the skip link, keyboard navigation, and screen reader testing when adding or changing UI. See docs/ACCESSIBILITY.md.
- TypeScript: Use strict TypeScript; follow existing patterns in
src/. - Formatting: Use the project’s existing formatter/linter (ESLint is configured; run
npm run lint). - Structure: Place API routes under
src/app/api/, core logic insrc/lib/, reusable UI insrc/components/. See ARCHITECTURE.md for an overview.
- Issues & discussions: Open a GitHub Issue or use GitHub Discussions if the project has them.
- Docs: See README, ARCHITECTURE.md, and in-app Developer Docs and API Reference.