Skip to content

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.