Architecture Decision Records (ADRs)
This folder records significant architectural decisions made during the design of Curriculab. Each ADR explains what was decided, why, and what alternatives were considered.
Format
# ADR-NNN: Title
**Date:** YYYY-MM-DD
**Status:** Proposed | Accepted | Deprecated | Superseded by ADR-NNN
## Context
What situation or problem prompted this decision?
## Decision
What was decided?
## Consequences
What are the results of this decision — positive, negative, and neutral?
## Alternatives Considered
What other options were evaluated and why were they rejected?
Index
| ADR | Title | Status |
|---|---|---|
| ADR-001 | PostgreSQL as the Primary Database | Accepted |
| ADR-002 | UUID v4 as Primary Keys for All Entities | Accepted |
| ADR-003 | Single User Table with Joined-Table Inheritance for Student | Accepted |
| ADR-004 | Database Constraint Enforcement for Section Enrollment Concurrency | Accepted |
| ADR-005 | Docusaurus as the Documentation Platform | Accepted |
| ADR-006 | Grade on Enrollment with GradeCorrection as the Audit Trail | Accepted |
| ADR-007 | Application-Managed Waitlist Position | Accepted |
| ADR-008 | Immutable JSONB Blob for Degree Audit Snapshots | Accepted |
| ADR-009 | Field-Level Diff for Course Change History | Accepted |
| ADR-010 | Payment Gateway Token Storage — No Raw Card Data | Accepted |
ADRs are append-only. To reverse a decision, create a new ADR with status Supersedes ADR-NNN rather than editing the original.