- .github/workflows/ci.yml: two jobs — frontend (tsc --noEmit, lint, build, Playwright) and backend (Postgres 16 + odoo:19 --test-enable --test-tags encoach_api) — catches regressions before merge. - docs/adr/: start an Architecture Decision Record trail with 0001 canonical directory layout, 0002 JWT refresh flow, 0003 paginated response envelope, 0004 RAG metadata + chunking. - docs/PROJECT_SUMMARY.md §21 Hardening Release: full recap of the AI quality loop, compliance, Paymob, i18n, and CI work shipped in this drop, plus new DB tables, REST routes, frontend routes, verification results, and operator-facing configuration. - README.md refreshed for the v4 split-repo doctrine and the new feature surface. - new_project/DEPRECATED.md: formal retirement notice pointing at backend/ as the canonical tree. Made-with: Cursor
2.0 KiB
2.0 KiB
ADR 0001: Canonical backend/ and frontend/ directory layout
- Status: Accepted
- Date: 2026-04-08
- Deciders: Platform team
Context
The repository historically contained two overlapping copies of server code:
backend/custom_addons/— Odoo addons, actively developed.new_project/custom_addons/— older snapshot, intermittently used for one-off scripts and diverging subtly frombackend/.
Both paths showed up in odoo.conf variants, deploy scripts, and developer
onboarding docs. Contributors routinely edited the wrong copy, shipped drift,
or rediscovered that fixes "weren't taking" because they landed in the stale
tree.
The same ambiguity existed implicitly on the client side: several prototype
apps lived under new_project/frontend/ in addition to the main
frontend/ workspace.
Decision
Declare a single canonical layout:
backend/custom_addons/**— the only Odoo addons tree. All deployments, tests, and Docker images read from here.frontend/**— the only React/Vite workspace.new_project/— deprecated. ADEPRECATED.mdis committed inside the directory explaining the policy; no new files may be added.
New encoach_* modules and frontend features MUST land under the canonical
paths. Existing imports, Dockerfiles, and docs were updated accordingly.
Consequences
- Positive: one obvious place to work, deterministic CI, no drift.
- Positive:
PROJECT_SUMMARY.mdand this README become credible onboarding material. - Negative: scripts that hard-coded
new_project/paths had to be migrated (one-time cost, done).
Alternatives considered
- Delete
new_project/outright. Rejected for now because a few historic tarballs and experiment scripts still reference it; leaving the tree with aDEPRECATED.mdmarker lets us retire it in a later cleanup pass without blocking the hardening release. - Rename
backend/toodoo/to mirror Odoo's own layout. Rejected becauseodoo/is already used for the upstream Odoo source checkout.