Skip to content

Architecture Decision Records

This directory contains Architecture Decision Records (ADRs) for Heritage Community Hub. Every significant architectural or tool choice must be captured in an ADR before code depends on it — this is the "Decide before building" gate from the platform strategy.

What is an ADR?

An ADR is a short document that records a single architectural decision: what was decided, why, what alternatives were considered, and what the consequences are. Once accepted, an ADR is immutable — superseding it requires a new ADR that references the old one.

File naming

text
NNNN-kebab-case-slug.md

Where NNNN is a zero-padded four-digit sequence number. Use the next available number when creating a new ADR.

ADR lifecycle

StatusMeaning
ProposedUnder discussion; not yet decided
AcceptedDecision locked; code may depend on it
SupersededReplaced by a later ADR (link to it)
DeprecatedNo longer relevant

Template

Use 0000-adr-template.md as the starting point for every new ADR.

Index

ADRTitleStatus
0000ADR templateReference
0001Monorepo with three-layer structureAccepted
0002Mobile: React Native + ExpoAccepted
0003Authentication: Clerk + Apple/Google, no Entra for end usersAccepted (Android Google Sign-In path needs Phase 4 verification)
0004Cloud/hosting stack, CI/CD, and free-tier pathAccepted (compute + DB superseded by 0024)
0005Observability modelAccepted (tooling TBD; stack resolved by ADR 0024 — Container Apps + Postgres)
0006Two-plane RBAC with reconciled role modelAccepted (extended by 0023 — 6th role comms_author)
0007Account and Family-Group identity + approval workflowAccepted (schema changes in Phase 2)
0008Platform composition — how the core pieces fit togetherAccepted
0009iOS app deliveryAccepted
0010Sermons & Music HubAccepted
0011Community CalendarAccepted
0012Announcements (one-way broadcast)Accepted
0013Notification transport (channels)Accepted (SMS = Twilio, provider-neutral behind SmsProvider adapter)
0014Android app deliveryAccepted
0015Homeschool Education PortalAccepted
0016Community MarketplaceAccepted
0017Small Groups & Ministries managementAccepted
0018Pony Express Delivery NetworkAccepted
0019Community Ride Share & TravelAccepted
0020Sister Community IntegrationAccepted
0021Admin & Ministry PortalAccepted
0022Family PortalAccepted
0023Communications authoring & approval workflow (adds 6th RBAC role comms_author)Accepted
0024Cloud portability & provider abstraction (DB = Postgres; compute = container)Accepted
0025Infrastructure location, naming, and hostingAccepted
0026Production domain and DNS strategy (heritageva.app)Accepted (amended by ADR 0028)
0027Web frontend & design-system tooling (Claude Design + @hch/ui)Accepted (amended by ADR 0031)
0028Per-portal subdomain addressing & TLS (Cloudflare Universal SSL)Accepted
0029CI/CD Azure authentication: managed identity + OIDCAccepted
0030Progressive feature enablement (feature registry — dark until onboarded)Accepted
0031Code-first design workflow and cross-platform delivery (amends ADR 0027)Accepted (amended by ADR 0033 — responsive values ratified)
0032Member Directory: field visibility and role-based accessAccepted (revised 2026-06-22 — corrected to Manage-button + kid-birthday-only model)
0033Platform foundation UI & view inventory (ratifies responsive layout; amends ADR 0031)Accepted

Process

  1. Copy 0000-adr-template.md to NNNN-slug.md.
  2. Fill in all sections. Status = Proposed.
  3. Open a PR; link it to the relevant ADO work item (AB#<id>).
  4. After team review and decision, update status to Accepted and merge.
  5. If a decision changes later, create a new ADR with status Accepted and mark the old one Superseded, linking to the new ADR.

ADR authoring status (2026-06-22)

Phase-0 research workstream completed. ADRs 0001–0007 are filled in and accepted — all Phase-0 decisions are locked, and Phase-1 infrastructure scaffolding is unblocked.

Beyond Phase 0 — the full ADR set is authored (0008–0031, every entry in the index above).

  • ADR 0008 (platform composition, AB#3155) records how the platform core pieces fit together.
  • Per-feature ADRs 0009–0020 cover every delivery feature in delivery-priority order — iOS, Sermons & Music Hub (AB#3156), Calendar, Announcements, Messaging & Notifications, Android, Homeschool, Marketplace, Small Groups, and the three Signature features.
  • Admin/portal & portability ADRs 0021–0024 — Admin & Ministry Portal, Family Portal, Communications authoring & approval, and Cloud portability & provider abstraction.
  • Infrastructure & toolchain ADRs 0025–0029 — Infrastructure location, naming, and hosting (0025, AB#3675), production domain and DNS (0026, AB#3675), web frontend design-system tooling / Claude Design (0027, AB#3237), per-portal subdomains and Cloudflare Universal SSL (0028, AB#3079), and CI/CD Azure authentication via managed identity + OIDC (0029, AB#3082).
  • Platform UX & workflow ADRs 0030–0031 — Progressive feature enablement via feature registry (0030, AB#3692) and code-first design workflow + cross-platform delivery (0031, AB#3237, amends 0027).

Owner acceptance complete (2026-06-22): ADRs 0001–0033 are all Accepted. The full decision layer is locked; code may depend on any ADR. Key decisions and their forward-looking effects:

  • 0025heritageva CAF/WAF resource naming; HCS-tenant hosting; -eus region suffix.
  • 0026heritageva.app as production domain; Cloudflare DNS + email routing.
  • 0027 — Claude Design is the sole UI tool; @hch/ui is the only import path for design tokens and presentational components in every surface; background = #F5F6F8. Amended by 0031.
  • 0028 — per-portal subdomains (*.heritageva.app) routed via Cloudflare Universal SSL (free wildcard) to one SWA; amends ADR 0026 and ADR 0008.
  • 0029 — managed identity (OIDC) for CI/CD; no long-lived secrets in GitHub.
  • 0030 — feature registry drives UI visibility; un-onboarded features show nothing across web, iOS, and Android; core nav shell (bottom tab bar) always present; AB#3692.
  • 0031 — real code (packages/ui/src/) is the source of truth; Claude Design receives mirrored @dsCard HTML mockups, not the other way around; web/PWA is the verified cross-platform path; React Native fidelity through the Claude Design pipeline is deferred to the iOS phase. Amends 0027. Amended by 0033 — responsive layout values (1024 / sidebar 220px / 860px) ratified.
  • 0032 — member directory: single detail screen for all roles; adult fields (birthday, anniversary, address, phone, email); kid = birthday only; admin and minister get a "Manage" button → separate management screen. Revised from inline-tier model 2026-06-22.
  • 0033 — platform foundation view inventory (~35 views); DesignSync card naming convention; feature ADR "Views: TBA" convention; ratifies responsive layout values. Amends ADR 0031.

Tracked under Epic AB#3154 (ADR authoring) and Epic AB#3074 (Platform build).

See pmo/platform-strategy.md for the full platform roadmap.

Heritage Community Hub — Internal. Access restricted via Cloudflare Access + Entra ID.