What is an ADR?
An Architecture Decision Record (ADR) captures a significant design or technology choice, the context that led to it, and the tradeoffs accepted. They are write-once records — decisions are not revised in place. A superseding decision results in the original ADR being markedSuperseded and a new ADR being created.
Decision Index
ADR-001 — Event-Driven Pipeline
Status: Accepted — Async Kafka-based pipeline for all media processing stages in place of synchronous HTTP chaining.
ADR-002 — CDN-First Media Delivery
Status: Accepted — All media delivered via CDN; origin storage (S3) is never directly client-accessible.
ADR-003 — Nigeria Residency via IAM
Status: Accepted — Nigeria data residency enforced at the IAM bucket policy layer, not the application layer.
ADR-004 — Multi-DRM CMAF
Status: Accepted — CMAF CENC+CBCS dual encryption for a single segment set serving all DRM ecosystems.
ADR-005 — Automated Storage Tiering
Status: Accepted — Automated hot/cold/archive tiering engine based on access frequency thresholds.
ADR-006 — Two-Tower ML Model
Status: Accepted — Two-tower neural network with ANN (FAISS/ScaNN) for personalised content retrieval at catalogue scale.
ADR-007 — Dual-Currency Payout
Status: Accepted — Paystack (NGN) + Stripe (USD) dual-processor architecture with FX rate locking at payout period start.
ADR-008 — Saga Orchestration
Status: Accepted — Orchestration-based distributed sagas via Temporal.io for multi-service transactions.