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).
25 lines
1.8 KiB
Markdown
25 lines
1.8 KiB
Markdown
# 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](./tech-stack-decision.md) | Master stack choice: Rust/Axum backend, React frontend, MongoDB, JWT |
|
||
| [mongodb-schema-decision.md](./mongodb-schema-decision.md) | Document model + at-rest encryption approach |
|
||
| [jwt-authentication-decision.md](./jwt-authentication-decision.md) | JWT access/refresh tokens, recovery phrases |
|
||
| [frontend-decision-summary.md](./frontend-decision-summary.md) | React (web) + React Native (mobile, future) split |
|
||
| [state-management-decision.md](./state-management-decision.md) | Client state — *superseded*: decision was Redux Toolkit, **actual code uses Zustand** |
|
||
| [monorepo-structure.md](./monorepo-structure.md) | Repository layout (`backend/`, `web/`, `mobile/`, `docs/`) |
|
||
| [backend-deployment-constraints.md](./backend-deployment-constraints.md) | Deployment requirements (Solaria, Docker) |
|
||
| [mobile-health-frameworks-data.md](./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.md) | Android Health Connect data types |
|
||
| [zero-knowledge-encryption.md](./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.
|