Contributing¶
Stub - flesh out with the project's actual workflow, code of conduct, and review expectations.
Principles¶
- Respect The One Law. Business logic belongs in the core behind the API. Clients (web UI, desktop, DCC plugins, SDK) never reach past the API or reimplement workflow rules.
- Keep changes small, reviewable, and behavior-preserving unless the change is the point.
- Update docs in the same change as the code they describe.
Before you open a PR¶
# backend
cd backend && ruff check . && black --check . && pytest
# frontend
cd frontend && npm run typecheck && npm run build
# docs (from repo root)
python scripts/gen_openapi.py && python -m zensical build
End-to-end tests¶
Playwright drives the highest-risk web flows (login → grid → status change → note → version) against a seeded backend. Start both servers, then run:
# 1. backend with demo data (terminal 1)
cd backend && FXQ_SEED_DEMO=1 python dev_server.py # PowerShell: $env:FXQ_SEED_DEMO=1; python dev_server.py
# 2. e2e (terminal 2 — Playwright starts the Vite dev server itself)
cd frontend && npx playwright install chromium # first run only
npm run e2e
The same suite runs in CI (the e2e job) on every push and PR.
Conventions¶
- Python: ruff + black, line length 80, Python 3.11, Google-style docstrings.
- TypeScript: strict mode; no implicit
any; one component pattern per concern. - See How the docs work for documenting your change.