AAttendrix Docsv1.0
Architecture
ExplanationImplemented

System Architecture

High-level C4 System Context and Container architecture of the Attendrix platform.

System Architecture

Attendrix is designed as an offline-first, event-driven university companion platform. It reconciles high-frequency mobile client interactions with an authoritative PostgreSQL relational core and asynchronous background workers.


C4 Level 1: System Context

The System Context diagram illustrates how university students, campus staff, and external third-party services interact with the Attendrix ecosystem.

C4 Level 1: System Context Diagram
High-level boundary of Attendrix, student users, and external SaaS providers.
C4 Level 1
Rendering architecture diagram...

C4 Level 2: Container Architecture

The Container diagram breaks down Attendrix into its major runtime environments: the Flutter client runtime, the Supabase managed cloud tier, asynchronous Deno isolates, and relational persistence.

C4 Level 2: Container Architecture Diagram
Runtime containers, protocols, and persistent storage layers.
C4 Level 2
Rendering architecture diagram...

Architectural Invariants Enforced

InvariantTarget SubsystemFormal Contract
INV-ATT-01Attendance EngineAbsences are explicitly recorded in public.absences. Presence is derived dynamically.
INV-ATT-02Client Attendance CacheClient-side aggregated percentages must equal server calculation within ±0.0% after cache expiry.
INV-SCH-01Timetable EngineNo two active slot occurrences may occupy the same physical building room for overlapping time windows.
INV-GCAL-01Calendar SyncCalendar reconciliation triggers fire at the SQL statement level, coalescing bulk changes into single PGMQ jobs.
INV-ROUT-01Pedestrian RoutingLookups between any campus building nodes resolve in O(1)O(1) time with zero runtime network requests.
INV-SEC-01Storage BoundaryStudents cannot access or mutate records outside their auth.uid(), verified by PostgreSQL RLS.
INV-SEC-02Queue Isolationpublic.notification_queue and public.gcal_sync_queue must never be exposed to PostgREST anon or authenticated roles.

Was this page helpful?

Your feedback directly guides the engineering documentation roadmap.

On this page