Architecture Decision Records¶
This directory contains Architecture Decision Records (ADRs) for cs-lewis-backend.
Index¶
| ADR | Title | Status | Date |
|---|---|---|---|
| 0001 | Backend Architecture | Proposed | 2026-06-25 (upd. 2026-07-01) |
| 0002 | Infrastructure-as-Code Tooling and Compute Platform | Proposed | 2026-07-01 |
| 0003 | Authentication via Firebase | Accepted | 2026-07-01 |
| 0004 | Mobile API Framework — Django Ninja vs DRF (with Wagtail) | Accepted | 2026-07-02 |
| 0005 | API conventions — gating, versioning, and error contract | Accepted | 2026-07-06 |
| 0006 | Content Model & Serialization — unified readable type, source, review state, Markdown | Proposed | 2026-07-08 |
| 0007 | Book Ingestion Pipeline — two-file contract, importer, and provenance | Accepted | 2026-07-09 |
| 0008 | Content models are Wagtail snippets, not Pages | Accepted | 2026-07-09 |
| 0009 | Image rendition contract — one width ladder, generated on save | Accepted | 2026-08-11 |
| 0010 | Inline images in editorial Article bodies | Accepted | 2026-08-17 |
| 0011 | Derived reader state in SQL, so per-reader lists can be paginated | Accepted | 2026-09-02 |
| 0012 | Transactional email via Amazon SES | Accepted | 2026-09-16 |
| 0013 | RevenueCat as the subscription source of truth | Accepted | 2026-09-17 |
| 0014 | Audio Studio generation runs in a background thread, not the editor's request | Accepted | 2026-09-30 |
| 0015 | A journey chapter owns its passage | Accepted | 2026-10-05 |
| 0016 | Subscription notice emails are logged rows, started by the webhook and a daily job | Accepted | 2026-10-07 |
| 0017 | Account deletion with a Firebase token does not need the app key | Accepted | 2026-10-07 |
| 0018 | Licensed content needs a short-lived content-access token | Accepted | 2026-10-07 |
Creating a New ADR¶
- Scan this directory for the highest existing number; increment by one.
- Copy
template.mdtoNNNN-title-with-dashes.md. - Fill it in and submit for review.
- Before merging,
git fetch originand re-check the highest number againstmain— parallel branches can claim the same number (this happened once:0009collided on rebase and was renumbered to0010). Renumber and fix cross-references if yours was taken. - Update this index after acceptance.
Status values¶
- Proposed: under discussion
- Accepted: decision made, implementing
- Deprecated: no longer relevant
- Superseded: replaced by another ADR (link it)
- Rejected: considered but not adopted