Skip to content

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

  1. Scan this directory for the highest existing number; increment by one.
  2. Copy template.md to NNNN-title-with-dashes.md.
  3. Fill it in and submit for review.
  4. Before merging, git fetch origin and re-check the highest number against main — parallel branches can claim the same number (this happened once: 0009 collided on rebase and was renumbered to 0010). Renumber and fix cross-references if yours was taken.
  5. 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