|
All checks were successful
Lint and Build / format (pull_request) Successful in 36s
Lint and Build / clippy (pull_request) Successful in 1m42s
Lint and Build / build (pull_request) Successful in 3m47s
Lint and Build / test (pull_request) Successful in 3m57s
Lint and Build / format (push) Successful in 38s
Lint and Build / clippy (push) Successful in 1m58s
Lint and Build / build (push) Successful in 3m48s
Lint and Build / test (push) Successful in 3m57s
backend/src/auth/claims.rs was orphaned dead code: auth/mod.rs never declared 'mod claims', so the file wasn't compiled into the crate at all. It defined two structs: - AccessClaims — referenced nowhere; a latent trap (carried family_id/permissions fields that suggested enforcement that doesn't exist). - RefreshClaims — a duplicate of the LIVE RefreshClaims in jwt.rs, which is what JwtService actually uses. Deleted the file. Updated the JWT ADR to mark the open item done and note the removal historically. Build/clippy/fmt clean (the file wasn't compiled anyway). Closes #5. |
||
|---|---|---|
| .. | ||
| 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 | ||
| multi-person-sharing.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, token_version revocation, refresh rotation — reconciled with code 2026-07-18 |
| 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, wrapped-DEK recovery; Phase 1 + Phase 2 implemented) |
| multi-person-sharing.md | Per-profile DEK + X25519 envelope for family/caregiver sharing — Decided, not yet implemented (issue #3) |
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.