Records the decision: client-side AES-256-GCM, double-PBKDF2 auth/enc-key split, server-as-blind-store, in-memory key lifecycle, and Phase 1 limitations (forgotten password = data loss; Phase 2 recovery wrapping deferred). |
||
|---|---|---|
| .. | ||
| android-health-connect-data-types.md | ||
| backend-deployment-constraints.md | ||
| frontend-decision-summary.md | ||
| jwt-authentication-decision.md | ||
| mobile-health-frameworks-data.md | ||
| mongodb-schema-decision.md | ||
| monorepo-structure.md | ||
| README.md | ||
| state-management-decision.md | ||
| tech-stack-decision.md | ||
| zero-knowledge-encryption.md | ||
Architecture Decision Records
This directory holds the project's decision records — the "why" behind the
major technical choices. These were originally written during Phase 1 research
(dated Jan–Feb 2026) and moved here from the old thoughts/research/ tree during
the documentation reconciliation. They are historical context, not current specs.
Decisions
| Record | Topic |
|---|---|
| tech-stack-decision.md | Master stack choice: Rust/Axum backend, React frontend, MongoDB, JWT |
| mongodb-schema-decision.md | Document model + at-rest encryption approach |
| jwt-authentication-decision.md | JWT access/refresh tokens, recovery phrases |
| frontend-decision-summary.md | React (web) + React Native (mobile, future) split |
| state-management-decision.md | Client state — superseded: decision was Redux Toolkit, actual code uses Zustand |
| monorepo-structure.md | Repository layout (backend/, web/, mobile/, docs/) |
| backend-deployment-constraints.md | Deployment requirements (Solaria, Docker) |
| mobile-health-frameworks-data.md | HealthKit / Health Connect data-type reference (for future mobile work) |
| android-health-connect-data-types.md | Android Health Connect data types |
| zero-knowledge-encryption.md | Client-side zero-knowledge encryption (AES-256-GCM, double-PBKDF2, Phase 1) |
Note
: Where a decision diverges from the implemented code (e.g. state management), the code is the source of truth and the ADR is kept only as historical record of the reasoning at the time.