ADR Index - steilerDev/cornerstone GitHub Wiki
ADR Index
Architectural Decision Records for the Cornerstone project. Each ADR documents a significant technical decision with context, alternatives considered, and consequences.
| ADR | Title | Status |
|---|---|---|
| ADR-001 | Server Framework: Fastify | Accepted |
| ADR-002 | Frontend Framework: React | Accepted |
| ADR-003 | Database & ORM: SQLite + Drizzle ORM | Accepted |
| ADR-004 | Bundler & Build Tooling: Webpack 5.x | Accepted |
| ADR-005 | Testing Framework: Jest + Playwright | Accepted |
| ADR-006 | Styling Approach: CSS Modules | Accepted |
| ADR-007 | Project Structure: npm Workspaces Monorepo | Accepted |
| ADR-008 | CI/CD Pipeline: GitHub Actions + Semantic Release | Accepted |
| ADR-009 | API Error Handling Strategy: Typed Error Classes + Fastify Plugin | Accepted |
| ADR-010 | Authentication Architecture: Sessions + OIDC + scrypt | Accepted |
| ADR-011 | E2E Test Architecture: Playwright + Testcontainers | Accepted |
| ADR-012 | Pagination, Filtering, and Sorting Conventions: Offset-based | Accepted |
| ADR-013 | Gantt Chart Rendering Strategy: Custom SVG | Accepted |
| ADR-014 | Scheduling Engine Architecture: Server-side CPM | Accepted |
| ADR-015 | Paperless-ngx Integration Architecture: Server Proxy + Polymorphic Links | Accepted |
| ADR-016 | Household Items Architecture: Separate Entity with Parallel Structure | Accepted |
| ADR-017 | Chart Library: Recharts | Accepted |
| ADR-018 | Invoice-Budget-Line Junction Table: Many-to-Many with Itemized Amounts | Accepted |
| ADR-019 | Discretionary Funding Budget Source: System-Managed Sentinel Row | Accepted |
| ADR-020 | Construction Diary Architecture: JSON Metadata + Fire-and-Forget Events | Accepted |
| ADR-021 | Internationalization Architecture: react-i18next + Static Bundles | Accepted |
| ADR-022 | Diary Drafts via Status Column on diary_entries |
Accepted |
| ADR-028 | Areas & Trades: Structured Dimensions Replacing Tags | Accepted |
| ADR-029 | Quotation Invoices Are Included in actualCost |
Accepted |
| ADR-030 | Orphan Budget Lines via Nullable Parent FK + origin Discriminator |
Accepted |
| ADR-031 | Outbound LLM Provider Integration via OpenAI-Compatible Gateway | Accepted |
| ADR-032 | Paperless-First Invoice Creation: Stateless Extraction + Create-on-Confirm | Accepted |
| ADR-033 | Floating Element Positioning Library: Floating UI | Accepted |
| ADR-034 | Client-Side Report PDF Generation: pdfmake + pdf-lib | Accepted |
| ADR-035 | OIDC Account Linking by Verified Email, No Self-Registration | Accepted |
| ADR-036 | Scoped Projections and Predicate Scope: Ship Wider-Scope Predicates | Accepted |
| ADR-037 | Backup Archive Format v2 and In-Place Restore with Crash Recovery | Accepted |
| ADR-038 | Information Architecture v2: Sidebar Navigation, Shared Route Map, Kept URLs | Accepted (planned — EPIC-21 UX restructure) |
| ADR-039 | One Money Service: Single "Left to Spend" with Strict Verdict | Accepted (planned — EPIC-21 UX restructure) |
| ADR-040 | System Events: Metadata Parameters, Write-Time De-duplication, Backfill | Accepted (partly implemented: W1, W3, W4 in #2209; rest planned — EPIC-21 UX restructure) |