3.0 KiB
Repository Guidelines
Project Structure & Module Organization
partyhub/ is the Django project entrypoint (settings.py, urls.py, asgi.py). Backend apps live at the repo root: lobby/ handles session and player flows, fupogfakta/ owns game rules and scoring, realtime/ holds websocket/broadcast code, and core_admin/ plus voice/ cover admin and future audio integration. Shared locale data lives in shared/i18n/, helper scripts in scripts/, deployment assets in infra/, and release or smoke evidence in docs/.
Frontend code is split in two layers: frontend/src/ contains the framework-agnostic TypeScript API client and SPA state helpers, while frontend/angular/src/ contains the Angular 19 shell for host and player screens.
Build, Test, and Development Commands
Install backend dependencies with .venv/bin/pip install -r requirements.txt.
.venv/bin/python manage.py runserverstarts the Django dev server..venv/bin/python manage.py migrateapplies schema changes..venv/bin/python manage.py checkruns Django configuration checks..venv/bin/python manage.py test lobbyruns the backend suite currently enforced in CI.npm --prefix frontend testruns Vitest for the shared TypeScript client.npm --prefix frontend run buildperforms the TypeScript compile check.npm --prefix frontend/angular startserves the Angular shell locally.npm --prefix frontend/angular testruns Angular-side Vitest smoke tests..venv/bin/python scripts/check_i18n_drift.pyvalidates shared locale keys.
Coding Style & Naming Conventions
Use 4-space indentation in Python and follow Django conventions: snake_case for functions, PascalCase for models, explicit on_delete on ForeignKeys, and committed migrations in each app’s migrations/ package. Keep business rules server-authoritative.
Use 2-space indentation in TypeScript and Angular. Match the existing style: single quotes, semicolons, PascalCase classes, camelCase functions, and kebab-case filenames such as gameplay-phase-machine.ts. Keep API types in frontend/src/api/types.ts aligned with backend JSON payloads.
Testing Guidelines
Backend tests live in <app>/tests.py; frontend tests live in frontend/tests/*.test.ts and frontend/angular/src/**/*.spec.ts. No numeric coverage gate is committed, so add targeted tests for every gameplay, i18n, or payload-contract change. Before opening a PR, run manage.py check, manage.py test lobby, and npm --prefix frontend/angular test at minimum.
Commit & Pull Request Guidelines
Recent history follows short, imperative subjects with optional scopes, for example fix(gameplay): ..., test(lobby): ..., and chore: .... Keep commits small and reference issue numbers when relevant. Open PRs from feature/<name> branches with a clear problem statement, linked issue, test evidence, and screenshots for host/player UI changes. If you touch USE_SPA_UI, staging flow, or i18n artifacts, include the related smoke or parity document in docs/.