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.