# sayanpal-adi/campuspulse architecture

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

- Interactive diagram: https://gitdiagram.com/sayanpal-adi/campuspulse
- Repository: https://github.com/sayanpal-adi/campuspulse

## Overview

CampusPulse is a Flask campus-event discovery and management application. Students browse events and register; organizers create, publish, and manage events and participant lists; administrators oversee users, events, registrations, and analytics. The implemented backend centers on Flask routes, SQLAlchemy models, and a configured database. Browser dashboards and templates form the user-facing layer. The README describes the full product scope, but several frontend files and route sections were not sampled, so some documented feature links are shown as unverified rather than asserted as inspected implementation.

Main entry points: [`campuspulse/__init__.py`](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/__init__.py) (Flask application), [`campuspulse/routes.py`](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py) (Accounts and access), [`campuspulse/models.py`](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/models.py) (User, event, registration models), [`campuspulse/static/js/admin.js`](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/static/js/admin.js) (Admin dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_admin_ui["Admin dashboard<br/>[admin.js]"]
  node_organizer_ui["Organizer dashboard<br/>[organizer.js]"]
  node_registration_ui["Registration form checks<br/>[register.js]"]
  node_student_page["Student dashboard"]
  node_organizer_page["Organizer dashboard page"]
  node_admin_page["Admin dashboard page"]
  node_browse_page["Event discovery page<br/>[index.html]"]
end

subgraph group_backend["Application backend"]
  node_flask["Flask application<br/>[__init__.py]"]
  node_auth["Accounts and access<br/>[routes.py]"]
end

subgraph group_domain["Event operations"]
  node_event_routes["Event API<br/>[routes.py]"]
  node_registration_ops["Event registration<br/>[routes.py]"]
  node_admin_ops["Admin operations<br/>[routes.py]"]
end

subgraph group_persistence["Persistence"]
  node_models["User, event, registration models<br/>[models.py]"]
  node_database[("Configured database")]
end

node_people(("Campus users"))

node_people -->|"use"| node_flask
node_flask -->|"registers routes"| node_auth
node_flask -->|"registers routes"| node_event_routes
node_flask -->|"renders"| node_student_page
node_flask -->|"renders"| node_organizer_page
node_flask -->|"renders"| node_admin_page
node_auth -->|"loads users"| node_models
node_event_routes -->|"queries events"| node_models
node_registration_ops -->|"queries registrations"| node_models
node_admin_ops -->|"queries users and events"| node_models
node_flask -->|"initializes ORM"| node_database
node_auth -->|"reads and writes"| node_database
node_event_routes -->|"reads and writes"| node_database
node_registration_ops -->|"checks capacity and saves"| node_database
node_admin_ops -->|"reads and updates"| node_database
node_admin_ui -->|"calls API"| node_admin_ops
node_organizer_ui -->|"calls event API"| node_event_routes
node_registration_ui -.->|"validates form"| node_auth
node_people -.->|"browse events"| node_browse_page
node_student_page -.->|"register for events"| node_registration_ops
node_organizer_page -.->|"hosts dashboard script"| node_organizer_ui
node_admin_page -.->|"hosts dashboard script"| node_admin_ui
node_organizer_ui -.->|"views participants"| node_registration_ops
node_admin_ui -.->|"loads analytics"| node_admin_ops

click node_flask "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/__init__.py"
click node_auth "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py"
click node_event_routes "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py"
click node_registration_ops "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py"
click node_admin_ops "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py"
click node_admin_ui "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/static/js/admin.js"
click node_organizer_ui "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/static/js/organizer.js"
click node_registration_ui "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/static/js/register.js"
click node_student_page "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/templates/student_dashboard.html"
click node_organizer_page "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/templates/organizer_dashboard.html"
click node_admin_page "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/templates/admin_dashboard.html"
click node_browse_page "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/templates/index.html"
click node_models "https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/models.py"

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_admin_ui,node_organizer_ui,node_registration_ui,node_student_page,node_organizer_page,node_admin_page,node_browse_page,node_people toneBlue
class node_flask,node_auth toneAmber
class node_event_routes,node_registration_ops,node_admin_ops toneMint
class node_models,node_database toneRose
```

## Components

### Web experience

- [Admin dashboard](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/static/js/admin.js): `campuspulse/static/js/admin.js`
- [Organizer dashboard](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/static/js/organizer.js): `campuspulse/static/js/organizer.js`
- [Registration form checks](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/static/js/register.js): `campuspulse/static/js/register.js`
- [Student dashboard](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/templates/student_dashboard.html): `campuspulse/templates/student_dashboard.html`
- [Organizer dashboard page](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/templates/organizer_dashboard.html): `campuspulse/templates/organizer_dashboard.html`
- [Admin dashboard page](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/templates/admin_dashboard.html): `campuspulse/templates/admin_dashboard.html`
- [Event discovery page](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/templates/index.html): `campuspulse/templates/index.html`

### Application backend

- [Flask application](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/__init__.py): `campuspulse/__init__.py`
- [Accounts and access](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py): `campuspulse/routes.py`

### Event operations

- [Event API](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py): `campuspulse/routes.py`
- [Event registration](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py): `campuspulse/routes.py`
- [Admin operations](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/routes.py): `campuspulse/routes.py`

### Persistence

- [User, event, registration models](https://github.com/sayanpal-adi/campuspulse/blob/main/campuspulse/models.py): `campuspulse/models.py`
- **Configured database**

### Other components

- **Campus users**

## Connections

- Campus users → Flask application: use (evidence: `README.md`)
- Flask application → Accounts and access: registers routes (evidence: `campuspulse/__init__.py`)
- Flask application → Event API: registers routes (evidence: `campuspulse/__init__.py`)
- Flask application → Student dashboard: renders (evidence: `campuspulse/__init__.py`)
- Flask application → Organizer dashboard page: renders (evidence: `campuspulse/__init__.py`)
- Flask application → Admin dashboard page: renders (evidence: `campuspulse/__init__.py`)
- Accounts and access → User, event, registration models: loads users (evidence: `campuspulse/routes.py`)
- Event API → User, event, registration models: queries events (evidence: `campuspulse/routes.py`)
- Event registration → User, event, registration models: queries registrations (evidence: `campuspulse/routes.py`)
- Admin operations → User, event, registration models: queries users and events (evidence: `campuspulse/routes.py`)
- Flask application → Configured database: initializes ORM (evidence: `campuspulse/__init__.py`)
- Accounts and access → Configured database: reads and writes (evidence: `campuspulse/routes.py`)
- Event API → Configured database: reads and writes (evidence: `campuspulse/routes.py`)
- Event registration → Configured database: checks capacity and saves (evidence: `campuspulse/routes.py`)
- Admin operations → Configured database: reads and updates (evidence: `campuspulse/routes.py`)
- Admin dashboard → Admin operations: calls API (evidence: `campuspulse/static/js/admin.js`)
- Organizer dashboard → Event API: calls event API (evidence: `campuspulse/static/js/organizer.js`)
- Registration form checks → Accounts and access: validates form
- Campus users → Event discovery page: browse events
- Student dashboard → Event registration: register for events
- Organizer dashboard page → Organizer dashboard: hosts dashboard script
- Admin dashboard page → Admin dashboard: hosts dashboard script
- Organizer dashboard → Event registration: views participants
- Admin dashboard → Admin operations: loads analytics
