Architecture Decision Records¶
Each significant decision gets one short, numbered record: the context, the decision, the options considered, and the consequences. Records are never deleted. During initial design, before any code implements a decision, its record may be edited directly. After that, a changed decision gets a new record that supersedes the old one.
| # | Decision | Status |
|---|---|---|
| 0001 | Record architecture decisions | Accepted |
| 0002 | Documentation as code, in the repository | Accepted |
| 0003 | Open-source licence: Apache 2.0 | Accepted |
| 0004 | Multi-tenant SaaS, with row-level isolation | Accepted |
| 0005 | Accounting systems behind a plugin interface | Accepted |
| 0006 | Shop-specific behaviour is configuration, not code | Accepted |
| 0007 | Back end: .NET and ASP.NET Core | Accepted |
| 0008 | Database: PostgreSQL | Accepted |
| 0009 | Front end: React, TypeScript and Mantine | Accepted |
| 0010 | API first: one API for every client and every actor | Accepted |
| 0011 | Documentation before implementation | Accepted |
| 0012 | Testing strategy | Accepted |
| 0013 | Work in the open | Accepted |
| 0014 | Build journal | Accepted |
| 0015 | Separate deployments for UI and API, served from one origin | Accepted |
| 0016 | API queries use RQL | Accepted |
| 0017 | Object IDs | Accepted |
| 0018 | Soft deletion by default | Accepted |
| 0019 | Audit trail | Proposed |
| 0020 | URL structure | Accepted |
| 0021 | Authentication | Accepted |
| 0022 | Authorisation and roles | Accepted |
| 0023 | Email sending | Accepted |
| 0024 | Product analytics | Accepted |
| 0025 | Observability: logs, traces, metrics and alerts | Accepted |
| 0026 | Modular monolith | Accepted |
| 0027 | File storage | Accepted |
New records use the ADR template.