DIREKT Architecture Decisions¶
Architecture decisions are recorded as ADRs in this document until individual ADR files become useful.
ADR-001 Native Android¶
Decision: Kotlin/Jetpack Compose.
Why: Android-first requirement, platform fidelity, durable background work and future Android-specific optimization.
Rejected: Flutter/React Native for Version 1 because they dilute the strict native constraint.
ADR-002 Modular monolith¶
Decision: NestJS modular monolith.
Why: Coherent transactions, simpler operations and enough boundaries for early scale.
Review trigger: measured deployment/scaling isolation need.
ADR-003 PostgreSQL/PostGIS¶
Decision: relational and geospatial system of record.
Why: verification integrity, audit, search and transactions.
ADR-004 API-owned domain¶
Decision: clients/admin use backend API, not direct database access for business operations.
Why: consistent authorization, audit and portability.
ADR-005 Check-specific verification¶
Decision: public claims derive from individual approved checks.
Why: prevents misleading universal badge.
ADR-006 Private evidence¶
Decision: evidence objects are private with short-lived audited access.
Why: identity/location/certificate sensitivity.
ADR-007 Pages for static collaboration only¶
Decision: MkDocs and synthetic prototypes on GitHub Pages.
Why: free public sharing; unsuitable for secrets/dynamic backend.
ADR-008 Sequential implementation lane¶
Decision: one build/android-v1 branch and phase checkpoints.
Why: user requires coherent agent execution.
Safeguards: workstream lock, atomic commits, CI, no force push.