Skip to main content

๐Ÿ›๏ธ Architecture Decision Records

Why we made the big calls. One decision per record, kept short.

:::tip What's an ADR? An Architecture Decision Record captures a decision, its context, the alternatives considered, and the consequences. Based on Michael Nygard's format.

Write one when a decision is:

  • Non-obvious in retrospect (future-you will ask "why did we do this?")
  • Expensive to reverse
  • Controversial at the time :::

๐Ÿ“œ Record logโ€‹

#TitleStatusDate
0001Use RunPod Serverless for GPU processingโœ… Accepted2025-09-12
0002Chunk videos client-side before uploadDeferred / superseded2025-10-03
0003Use Firestore as the job queueSuperseded in part2025-10-15
0004Deploy all Cloud Functions to europe-west1โœ… Accepted2025-08-20
0005Use PostHog EU for product analyticsโœ… Accepted2026-04-25
0006Allow crawlers on public marketing pagesAccepted; docs exception2026-04-26
0007Expose the REST and MCP agent APIโœ… Accepted2026-04-26
0008Hold file size with a two-directional ratchetโœ… Accepted2026-08-19
0009Put the pose model behind a backend switch (Ultralytics AGPL)โœ… Accepted2026-08-20

โœ๏ธ Writing a new ADRโ€‹

  1. Copy the template into decisions/NNNN-short-title.md
  2. Number sequentially โ€” do not reuse a number even if a prior ADR is superseded
  3. Fill in all sections (Context, Decision, Consequences at minimum)
  4. Add it to this index table above
  5. Commit + open a PR

:::info Superseded decisions Never delete an old ADR. If a later decision replaces it, mark the old one ๐Ÿ—ƒ๏ธ Superseded by #NNNN and add a link. History is the whole point. :::


๐ŸŽฏ Next Stepsโ€‹