arch diagrams - Andre-asn/Quack-Campus-Event-Coordinator GitHub Wiki
Architecture Diagrams
Three tiers: a client that renders the map and every screen, a stateless Spring Boot API that owns logic, authorization, and persistence, and Postgres with PostGIS. The client loads tiles from Mapbox directly; the API talks to Google only during sign-in.
No queues, caches, workers, or microservices. Each adds a failure mode we cannot afford in 14 weeks.
C4 Level 1: System Context
Who uses Quack! and what it depends on. Every student can both host and attend, so there is one actor.
C4 Level 2: Container
The deployable pieces inside Quack!, their technology, and how they communicate.
Create Event Request Lifecycle
Component responsibilities
React client
Responsibility: Rendering, map interaction, form input, optimistic UI
Explicitly not responsible for: Authorization decisions, domain verification, visibility enforcement
Spring Boot API
Responsibility: OAuth callback handling, domain allowlist, sessions, validation, authorization, business rules, persistence
Explicitly not responsible for: Rendering, tile fetching, geocoding
Postgres
Responsibility: Durable storage, uniqueness constraints, spatial and temporal indexes
Explicitly not responsible for: Business logic in triggers or stored procedures
Mapbox
Responsibility: Map tiles and rendering
Explicitly not responsible for: Storing any of our event data, geocoding (not used)
OAuth provider
Responsibility: Authenticating that the user controls a school email account
Explicitly not responsible for: Authorization. Membership of the school domain is checked by us