Skip to Content
Living documentation — last reviewed 2026-05-28
DecisionsArchitecture decisions

Architecture decisions

Short, dated records of structural decisions and why they were made. ADRs capture context that gets lost otherwise — they’re for the next engineer (or agent) who asks “why is it like this?”

Index

#TitleStatus
0001Nx monorepo, pnpm workspacesAccepted
0002Clerk for authenticationAccepted
0003Drizzle ORM over Prisma / TypeORMAccepted
0004Multi-org isolation by organization_id, enforced in codeAccepted
0005API-first; business logic lives in the APIAccepted
0006Hebrew/RTL as a first-class languageAccepted
0007R2 with separate compliance bucketAccepted
0008Platform tiers as the feature-gate primitiveAccepted
0009Background jobs via BullMQ on RedisAccepted
0010Spotter agent architectureAccepted (Phase 1 shipped)

Writing a new ADR

Use the next free number. Keep it short — under 200 lines. Include:

  1. Context — what triggered the decision.
  2. Decision — what we picked.
  3. Consequences — positive AND negative. Be honest about the costs.
  4. Alternatives considered — what else was on the table and why we rejected it.
  5. Related — links to other ADRs / runbooks / feature docs.

When superseding an older ADR, link forward AND back, and update its Status: to Superseded by ADR-NNNN.