This folder is the single source of truth for every product and architecture decision in the project.
prd/: product requirement documents describing what we build and why.high-level-design/: system-level designs (HLD-<nnn>-<slug>.md) with flow diagrams, trade-offs, CAP position, and rejected alternatives.low-level-design/: class-level designs (LLD-<nnn>-<slug>.md) with class diagrams, schema DDL, and concurrency strategy.adr/: short architecture decision records (ADR-<nnn>-<slug>.md) capturing one decision each, including options rejected.tasks/: the phased task breakdown with definitions of done and edge cases.tasks/tech-debt-register.md: PR review findings and deferred decisions, each with a priority and a concrete effect, tracked until resolved.learning-log.md: running record of new concepts learned, kept for revision.
- A feature starts with a GitHub issue labelled
high-level-design. - The design is discussed interview-style, then documented here before any code is written.
- A
low-level-designissue follows, then afeatureissue. - Issues close strictly in that order.
This gate applies to every feature going forward.
The controller/service/repository/entity code already committed for users, groups, and expenses predates this process; it is not retroactively redesigned, but its current state and gaps are captured once in low-level-design/LLD-000-baseline-review.md before new HLD work begins.
- One sentence per line.
- Plain dash only, never em dash.
- Every design doc has a "Rejected Alternatives" section.
- Every design doc ends with a "Failure Modes" section listing at least two ways the design can break.