Skip to content

Architecture Decision Records

ADRs capture why we chose one option over others for a decision we expect to live with for years. Keep them short. Date them. When superseding, link back and mark the old one deprecated.

#TitleStatusDate
0001Stack choice: NestJS + Next.js + Postgres + PrismaAccepted2026-04-17
0002OSS/Community + commercial Enterprise splitAccepted2026-04-17
0003Multi-tenancy model: row-level with tenant-scoped queriesAccepted2026-04-17
0004Product name: PanoramaProposed2026-04-17
0005Licensing: AGPL-3.0-or-later for CommunityAccepted2026-04-17
0006Plugin / extension SDK boundaryDraft2026-04-17
0007Tenant Owner role (designated admin)Accepted2026-04-18
0008Invitation flow (email-token, TTL, one-time-use, audit)Accepted2026-04-18
0009Reservation domain (two-axis state, conflicts, blackouts, approval)Accepted2026-04-18
0010Snipe-IT compat shim — auth model (per-user PATs)Accepted2026-04-18
0011Notification event bus — architectureAccepted2026-04-18
0012Inspection checklists + photo evidence pipelineAccepted2026-04-18
0013Staging deploy architecture (internal only)Accepted2026-04-19
0014Public hosted instance (Community deployed, free preview)Accepted2026-05-16
0015BYPASSRLS removal refactor (SECURITY DEFINER bypass function)Accepted2026-04-19
0016Asset maintenance flow (Snipe-IT-compatible)Accepted (v3 2026-04-26)2026-04-19
0017AI/LLM integration principlesAccepted2026-04-23
0018Observability stack (pino + Sentry + request-id ALS)Accepted2026-05-16
0019Worker process boundary (photo pipeline defer-with-trigger)Accepted2026-05-16
0020Self-serve OIDC signup (Wave 0.5)Proposed2026-05-16
0021Web frontend architecture (features/ + RSC + role-aware /)Accepted2026-05-18
0022Driver native mobile architecture (Expo / React Native)Accepted2026-05-18

Template

# ADR-NNNN: <short title>

- Status: Proposed | Accepted | Deprecated | Superseded by ADR-XXXX
- Date: YYYY-MM-DD
- Deciders: @alice, @bob

## Context
What is the problem? What constraints are we working under? What did we try before?

## Decision
What did we pick? State it as a sentence; avoid hedging.

## Alternatives considered
Brief list with why each was rejected.

## Consequences
Positive, negative, and neutral outcomes. What this locks us into. What this frees us up for.

AGPL-3.0-or-later · LICENSE