Decision Log

We document significant architectural decisions as Architecture Decision Records (ADRs). Each ADR captures the context, the options considered, the decision made, and the trade-offs accepted.

ADR-001: Smithy as API IDL

Why we chose Smithy over OpenAPI-first or hand-written contracts as the single source of truth.

ADR-002: Rust + Actix-web

Why Rust over Go/Node for the backend, and why Actix-web + Diesel over Axum or SQLx.

ADR-003: JWT Auth Design

Token rotation, OTP hashing, device-level sessions, and the stateless access token approach.

Decision Summary Table

#DecisionStatusDate
ADR-001Smithy IDL as API source of truthAccepted2025-Q1
ADR-002Rust + Actix-web + Diesel + PostgreSQLAccepted2025-Q1
ADR-003JWT stateless auth with token rotationAccepted2025-Q1
ADR-004Async wallet provisioning with retry workerAccepted2025-Q1
ADR-005No OpenAPI in Smithy codegen pathAccepted2025-Q1

How We Make Decisions