This directory contains Architecture Decision Records (ADRs) for Quack Chat.
| # | Decision | Status |
|---|---|---|
| 001 | Deno 2 as runtime for backend and build tooling | Accepted |
| 002 | MobX with makeAutoObservable for reactive UI state |
Accepted |
| 003 | Atomic Design hierarchy for component organization | Accepted |
| 004 | Planigale as HTTP framework | Accepted |
| 005 | Command/Query separation with Valibot validation | Accepted |
| 006 | Server-Sent Events for real-time communication | Accepted |
| 007 | styled-components for CSS-in-JS theming | Accepted |
| 008 | MongoDB with transaction support | Accepted |
| 009 | Client-side E2E encryption (AES-GCM + ECDH + PBKDF2) | Accepted |
| 010 | Core/Infra/Inter layer separation in backend | Accepted |
| 011 | Monorepo with Deno workspace for shared modules | Accepted |
| 012 | PWA-first with Capacitor native shell for Android | Accepted |
| 013 | Custom push notifications via SSE (no FCM/Google dependency) | Accepted |
| 014 | Repository pattern over ORM for database access | Accepted |
Each ADR follows this structure:
- Title — Short descriptive name
- Status — Accepted, Superseded, or Deprecated
- Context — What motivated the decision
- Decision — What was decided
- Consequences — Trade-offs and implications