Thanks for contributing. This document defines the expected workflow for issues, changes, and pull requests.
- Be respectful and constructive. Follow
CODE_OF_CONDUCT.md. - Keep changes focused and reviewable.
- Write clear commit messages and PR descriptions.
- Include tests or explain why tests are not applicable.
- Never commit secrets, keys, or credentials.
Prerequisites:
- Node.js 20+
- npm 10+
- Python 3.11+ (for Python services and sanity checks)
Backend setup:
npm install
npm run setup
npm run devFrontend setup (separate shell):
cd frontend
npm install
npm start- Branch from
main. - Use short, descriptive branch names:
feat/<name>fix/<name>docs/<name>chore/<name>
- Keep PRs small enough for targeted review.
- Follow existing project patterns in
src/,frontend/, andscripts/. - Pre-Commit Check: We use a standardized validation script to ensure code quality and security. Run this command locally before pushing or opening a PR:
npm run commit-checkThis script performs:
- Backend Tests: Runs Jest unit and integrity tests.
- Frontend Validation: Runs linting (
eslint) and smoke tests. - Python Sanity: Compiles all Python services to detect syntax errors.
- Security Audit: Scans dependencies for known vulnerabilities.
- Local CodeQL: (Optional) Performs deep static analysis if the
codeqlCLI is installed.
For deep security analysis mirroring our CI, we recommend installing the CodeQL CLI. If found in your PATH, commit-check will automatically run it and output results to .tmp/codeql/.
If you need to increase memory for a local run:
CODEQL_JS_RAM_MB=8192 npm run commit-check- Open an issue first for large or breaking changes.
- Open a PR with:
- concise summary
- rationale
- testing notes
- migration notes if applicable
- Link related issues (
Fixes #<id>). - Ensure CI is green before requesting final review.
- Obtain approval from a code owner/maintainer.
- This project uses Semantic Versioning (
MAJOR.MINOR.PATCH). - User-facing notable changes should be recorded in
CHANGELOG.md. RELEASE_NOTES.mdcan be used for richer release narratives.
If you find a vulnerability, do not open a public issue. Follow SECURITY.md.