Documentation

Architecture decisions

The full log of architecture decision records (ADRs), with their status.

252 of 252 decisions
  • ADR-001
    Decision
    Modular monolith Go backend with run-mode deployables
    Status
    Accepted
    Date
    2026-07-13
  • ADR-002
    Decision
    CTFd upstream, unforked, plugin plus custom theme only
    Status
    Superseded
    Date
    2026-07-13
  • ADR-003
    Decision
    One React plus TypeScript front end (Next.js App Router)
    Status
    Accepted
    Date
    2026-07-13
  • ADR-004
    Decision
    Control plane on Azure AKS (EU Data Boundary); bounded portability
    Status
    Superseded
    Date
    2026-07-13
  • ADR-005
    Decision
    Self-hosted Keycloak OIDC broker; split staff/tenant realms
    Status
    Accepted
    Date
    2026-07-13
  • ADR-006
    Decision
    PostgreSQL schema-per-module with Row-Level Security
    Status
    Accepted
    Date
    2026-07-13
  • ADR-007
    Decision
    Valkey plus asynq queue plus transactional outbox
    Status
    Accepted
    Date
    2026-07-13
  • ADR-008
    Decision
    OpenAPI 3.1 externally; specified CTFd-to-Go grading contract
    Status
    Accepted
    Date
    2026-07-13
  • ADR-009
    Decision
    Provisioner isolated; queue intents authenticated and authorised
    Status
    Accepted
    Date
    2026-07-13
  • ADR-010
    Decision
    Range as a pool of standing, reset-between-runs environments
    Status
    Accepted
    Date
    2026-07-13
  • ADR-011
    Decision
    Tiered scenario isolation by risk
    Status
    Accepted
    Date
    2026-07-13
  • ADR-012
    Decision
    OIDC workload-identity federation; no long-lived range secrets
    Status
    Accepted
    Date
    2026-07-13

We use only essential and functional cookies to run the platform and remember your settings, with no tracking, analytics, or advertising. See our Cookie Policy.