Skip to content

Architecture Decision Records

Short records of decisions that were genuinely contested — where a competent engineer could reasonably have chosen otherwise, and where the reasoning is worth preserving after the context is forgotten.

Deliberately not recorded: choices with no real alternative (using Spring Boot in a Spring Boot project), or with an obvious answer (BCrypt for passwords). An ADR set padded with non-decisions makes the real ones harder to find.

ADR Decision Status
001 PostgreSQL as the relational database Accepted
002 Stateless JWT authentication Accepted, with known limits
003 Flyway migrations, ddl-auto=validate Accepted
004 Testcontainers over H2 for integration tests Accepted
005 Single deployable, not microservices Accepted
006 BigDecimal / NUMERIC for money Accepted

Format: context, options considered, decision, consequences — including the bad ones. An ADR that lists no downsides is marketing, not a record.