# maazhussain786/nust_event_managment architecture

> Architecture diagram of the GitHub repository maazhussain786/nust_event_managment, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/maazhussain786/nust_event_managment
- Repository: https://github.com/maazhussain786/nust_event_managment

## Overview

NUST Event Management is a student-facing university society and event platform, with separate society-leadership and super-admin workflows. Students discover events and societies, register for events, and manage QR-ticket and payment-proof steps; society leaders manage membership, roles, events, and operations; administrators review and monitor platform activity. The graph preserves the README’s major capabilities and uses the supplied route excerpts for concrete wiring. Other route internals were not sampled, so their detailed calls are not inferred.

Main entry points: [`src/lib/db.ts`](https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/db.ts) (Postgres access), [`src/app/(main)`](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/(main)) (Student app), [`src/app/society/[societyId]`](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/society/%5BsocietyId%5D) (Society workspace), [`src/lib/blob.ts`](https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/blob.ts) (Blob media)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_experience["User experience"]
  node_student_ui["Student app"]
  node_auth_ui["Account flows"]
  node_pwa["Offline and install<br/>[sw.js]"]
end

subgraph group_societies["Society operations"]
  node_society_ui["Society workspace"]
  node_society_api["Society API"]
  node_invites_api["Role invitations<br/>[route.ts]"]
  node_media_api["Society media<br/>[route.ts]"]
end

subgraph group_events["Events and tickets"]
  node_events_ui["Event discovery"]
  node_events_api["Event API<br/>[route.ts]"]
  node_tickets_api["Ticket API<br/>[route.ts]"]
  node_ticket_detail["Ticket detail<br/>[route.ts]"]
  node_proof_api["Payment proof<br/>[route.ts]"]
end

subgraph group_platform["Platform administration"]
  node_event_admin["Event oversight<br/>[route.ts]"]
  node_platform_ui["Admin console"]
end

subgraph group_runtime["Runtime services"]
  node_auth_api["Authentication API"]
  node_auth_lib["Session and JWT<br/>[auth.ts]"]
  node_notifications_api["Notifications and reminders<br/>[route.ts]"]
  node_push_lib["Push delivery"]
  node_db_lib["Postgres access<br/>[db.ts]"]
  node_postgres[("PostgreSQL")]
  node_media_lib["Blob media<br/>[blob.ts]"]
  node_azure_blob[("Azure Blob Storage")]
  node_mongo[("MongoDB read model")]
end

node_students(("Students"))
node_leaders(("Society leaders"))
node_admins(("Super admins"))

node_students -->|"sign up"| node_auth_ui
node_students -->|"use app"| node_student_ui
node_leaders -->|"manage society"| node_society_ui
node_admins -->|"administer"| node_platform_ui
node_auth_ui -->|"authenticate"| node_auth_api
node_auth_api -->|"validate session"| node_auth_lib
node_auth_api -->|"read and write"| node_db_lib
node_student_ui -->|"browse events"| node_events_api
node_events_ui -->|"request listings"| node_events_api
node_events_api -->|"query events"| node_db_lib
node_society_ui -->|"manage society"| node_society_api
node_society_api -->|"read and write"| node_db_lib
node_society_ui -->|"invite members"| node_invites_api
node_invites_api -->|"identify caller"| node_auth_lib
node_invites_api -->|"validate and save invite"| node_db_lib
node_society_ui -->|"upload media"| node_media_api
node_media_api -->|"save media records"| node_db_lib
node_media_api -->|"process media"| node_media_lib
node_media_lib -->|"store files"| node_azure_blob
node_student_ui -->|"view tickets"| node_tickets_api
node_tickets_api -->|"query registrations"| node_db_lib
node_tickets_api -->|"resolve media URLs"| node_media_lib
node_student_ui -->|"open ticket"| node_ticket_detail
node_ticket_detail -->|"read and save QR"| node_db_lib
node_student_ui -->|"submit proof"| node_proof_api
node_proof_api -->|"verify and record proof"| node_db_lib
node_proof_api -->|"process and upload proof"| node_media_lib
node_admins -->|"review events"| node_event_admin
node_platform_ui -->|"manage events"| node_event_admin
node_event_admin -->|"read and write"| node_db_lib
node_student_ui -->|"view updates"| node_notifications_api
node_notifications_api -->|"read notifications"| node_db_lib
node_notifications_api -->|"dispatch reminders"| node_push_lib
node_push_lib -.->|"send push"| node_students
node_student_ui -->|"use offline app"| node_pwa
node_db_lib -->|"query and update"| node_postgres
node_society_api -.->|"read public profile model"| node_mongo

click node_student_ui "https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/(main)"
click node_auth_ui "https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/(auth)"
click node_auth_api "https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/api/auth"
click node_auth_lib "https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/auth.ts"
click node_society_ui "https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/society/%5BsocietyId%5D"
click node_society_api "https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/api/societies"
click node_invites_api "https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/invites/route.ts"
click node_media_api "https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/upload/society-media/route.ts"
click node_events_ui "https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/(main)/events"
click node_events_api "https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/events/route.ts"
click node_tickets_api "https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/tickets/route.ts"
click node_ticket_detail "https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/tickets/%5Bid%5D/route.ts"
click node_proof_api "https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/payments/submit-proof/route.ts"
click node_event_admin "https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/admin/events/route.ts"
click node_platform_ui "https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/platform"
click node_notifications_api "https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/notifications/route.ts"
click node_push_lib "https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/push-notifications.ts"
click node_pwa "https://github.com/maazhussain786/nust_event_managment/blob/main/public/sw.js"
click node_db_lib "https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/db.ts"
click node_media_lib "https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/blob.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_student_ui,node_auth_ui,node_pwa toneBlue
class node_society_ui,node_society_api,node_invites_api,node_media_api toneAmber
class node_events_ui,node_events_api,node_tickets_api,node_ticket_detail,node_proof_api toneMint
class node_event_admin,node_platform_ui toneRose
class node_auth_api,node_auth_lib,node_notifications_api,node_push_lib,node_db_lib,node_postgres,node_media_lib,node_azure_blob,node_mongo,node_students,node_leaders,node_admins toneIndigo
```

## Components

### User experience

- [Student app](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/(main)): `src/app/(main)`
- [Account flows](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/(auth)): `src/app/(auth)`
- [Offline and install](https://github.com/maazhussain786/nust_event_managment/blob/main/public/sw.js): `public/sw.js`

### Society operations

- [Society workspace](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/society/%5BsocietyId%5D): `src/app/society/[societyId]`
- [Society API](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/api/societies): `src/app/api/societies`
- [Role invitations](https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/invites/route.ts): `src/app/api/invites/route.ts`
- [Society media](https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/upload/society-media/route.ts): `src/app/api/upload/society-media/route.ts`

### Events and tickets

- [Event discovery](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/(main)/events): `src/app/(main)/events`
- [Event API](https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/events/route.ts): `src/app/api/events/route.ts`
- [Ticket API](https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/tickets/route.ts): `src/app/api/tickets/route.ts`
- [Ticket detail](https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/tickets/%5Bid%5D/route.ts): `src/app/api/tickets/[id]/route.ts`
- [Payment proof](https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/payments/submit-proof/route.ts): `src/app/api/payments/submit-proof/route.ts`

### Platform administration

- [Event oversight](https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/admin/events/route.ts): `src/app/api/admin/events/route.ts`
- [Admin console](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/platform): `src/app/platform`

### Runtime services

- [Authentication API](https://github.com/maazhussain786/nust_event_managment/tree/main/src/app/api/auth): `src/app/api/auth`
- [Session and JWT](https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Notifications and reminders](https://github.com/maazhussain786/nust_event_managment/blob/main/src/app/api/notifications/route.ts): `src/app/api/notifications/route.ts`
- [Push delivery](https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/push-notifications.ts): `src/lib/push-notifications.ts`
- [Postgres access](https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/db.ts): `src/lib/db.ts`
- **PostgreSQL**
- [Blob media](https://github.com/maazhussain786/nust_event_managment/blob/main/src/lib/blob.ts): `src/lib/blob.ts`
- **Azure Blob Storage**
- **MongoDB read model**

### Other components

- **Students**
- **Society leaders**
- **Super admins**

## Connections

- Students → Account flows: sign up
- Students → Student app: use app
- Society leaders → Society workspace: manage society
- Super admins → Admin console: administer
- Account flows → Authentication API: authenticate
- Authentication API → Session and JWT: validate session
- Authentication API → Postgres access: read and write
- Student app → Event API: browse events
- Event discovery → Event API: request listings
- Event API → Postgres access: query events
- Society workspace → Society API: manage society
- Society API → Postgres access: read and write
- Society workspace → Role invitations: invite members
- Role invitations → Session and JWT: identify caller
- Role invitations → Postgres access: validate and save invite
- Society workspace → Society media: upload media
- Society media → Postgres access: save media records
- Society media → Blob media: process media
- Blob media → Azure Blob Storage: store files
- Student app → Ticket API: view tickets
- Ticket API → Postgres access: query registrations
- Ticket API → Blob media: resolve media URLs
- Student app → Ticket detail: open ticket
- Ticket detail → Postgres access: read and save QR
- Student app → Payment proof: submit proof
- Payment proof → Postgres access: verify and record proof
- Payment proof → Blob media: process and upload proof
- Super admins → Event oversight: review events
- Admin console → Event oversight: manage events
- Event oversight → Postgres access: read and write
- Student app → Notifications and reminders: view updates
- Notifications and reminders → Postgres access: read notifications
- Notifications and reminders → Push delivery: dispatch reminders
- Push delivery → Students: send push
- Student app → Offline and install: use offline app
- Postgres access → PostgreSQL: query and update
- Society API → MongoDB read model: read public profile model
