Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 2.72 KB

File metadata and controls

47 lines (35 loc) · 2.72 KB

Architecture Decision Records (ADRs)

This directory holds the binding architecture decisions for this project. Each decision is one file. Each file stays once written — to revise, write a new ADR that supersedes the old one and update the old one's status.

Why ADRs?

So that anyone (including future-us) can answer "why did we do it this way?" by reading one short document — not by archeology through commits, issues, and chat logs.

How to read

Start with 0001-two-container-architecture.md, which is the highest-level decision. The others slot into it.

Each ADR follows the Nygard format: Context → Decision → Consequences.

Statuses

Status Meaning
Proposed Drafted, not yet accepted
Accepted Live and binding
Deprecated No longer recommended but still present
Superseded by N Replaced — see ADR N for the current decision

Index

# Title Status
0001 Two-container architecture (separate backend and frontend) Accepted
0002 Python + FastAPI for the backend Accepted
0003 Go + Tailwind + HTMX + PWA for the frontend Accepted
0004 Plugin architecture for printer models Accepted
0005 Print queue is mandatory (printer has none) Accepted
0006 Status sources by phase (ESC i S / passive / SNMP) Accepted
0007 Docker image tag scheme Accepted
0008 Conventional Commits + semantic-release Accepted
0009 Server-Sent Events instead of WebSockets Accepted
0010 PWA with progressive enhancement Accepted
0011 OpenAPI as the canonical API contract (oapi-codegen + interactive docs) Accepted
0012 Label layouts are first-class, integration-scoped, multi-instance Accepted
0013 Browse + cart + bulk-print UI pattern Accepted

How to write a new ADR

  1. Copy _template.md to NNNN-short-slug.md where NNNN is the next free number, zero-padded
  2. Fill in the sections honestly — including options not chosen
  3. Open a PR with the ADR alone (separate from implementation, when feasible)
  4. After merge, update the index above