Skip to content

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.