# swaroopedupulapati/vmp_media architecture

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

- Interactive diagram: https://gitdiagram.com/swaroopedupulapati/vmp_media
- Repository: https://github.com/swaroopedupulapati/vmp_media

## Overview

VMP is a role-based volunteer management platform. Volunteers discover events, request participation, check in to attendance sessions, accrue hours, and view impact; coordinators manage event lifecycles and attendance, while administrators oversee users and platform activity. Flask registers the domain blueprints and serves role-specific interfaces, with MongoDB-backed state and GridFS media storage. The README also documents certificates, real-time chat, an Ollama assistant, and web push. Some route implementations were not sampled, so uncertain integrations and internal call links are omitted.

Main entry points: [`vmp/__init__.py`](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/__init__.py) (Flask application), [`vmp/models.py`](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/models.py) (MongoDB collections), [`vmp/utils.py`](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/utils.py) (Shared utilities), [`vmp/routes/attendance.py`](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/attendance.py) (Attendance tracking)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web platform"]
  node_app["Flask application<br/>[__init__.py]"]
  node_auth["Authentication<br/>[auth.py]"]
  node_student["Volunteer experience<br/>[student.py]"]
  node_coordinator["Coordinator tools<br/>[coordinator.py]"]
  node_admin["Administration<br/>[admin.py]"]
  node_roleviews["Role dashboards"]
end

subgraph group_events["Events and impact"]
  node_eventview["Event discovery<br/>[main.py]"]
  node_attendance["Attendance tracking<br/>[attendance.py]"]
  node_impact["Hours and badges<br/>[impact.py]"]
  node_certificates["Certificate generation<br/>[certificates.py]"]
end

subgraph group_community["Community features"]
  node_feed["Social feed<br/>[main.py]"]
  node_connections["Volunteer connections<br/>[connections.py]"]
  node_chat["Real-time chat<br/>[chat.py]"]
  node_socket["Socket events<br/>[socket_events.py]"]
end

subgraph group_services["Platform services"]
  node_ai["AI assistant<br/>[ai.py]"]
  node_ollama["Ollama"]
  node_push["Push notifications<br/>[push.py]"]
  node_pushclient["Push browser client"]
  node_serviceworker["Offline and push worker<br/>[sw.js]"]
  node_utils["Shared utilities<br/>[utils.py]"]
end

subgraph group_state["Persistence"]
  node_mongo[("MongoDB collections<br/>[models.py]")]
  node_gridfs[("GridFS media<br/>[models.py]")]
end

node_visitor(("Platform users"))

node_visitor -->|"uses"| node_app
node_app -->|"registers routes"| node_auth
node_app -->|"registers routes"| node_student
node_app -->|"registers routes"| node_coordinator
node_app -->|"registers routes"| node_admin
node_app -->|"registers routes"| node_eventview
node_app -->|"registers routes"| node_attendance
node_app -->|"registers routes"| node_impact
node_app -->|"registers routes"| node_feed
node_app -->|"registers routes"| node_connections
node_app -->|"registers routes"| node_chat
node_app -->|"registers routes"| node_ai
node_app -->|"registers routes"| node_push
node_app -->|"selects templates"| node_roleviews
node_auth -->|"reads and writes"| node_mongo
node_auth -->|"uses helpers"| node_utils
node_eventview -->|"reads data"| node_mongo
node_eventview -->|"serves media"| node_gridfs
node_coordinator -->|"reads and writes"| node_mongo
node_coordinator -->|"notifies and logs"| node_utils
node_attendance -->|"reads and writes"| node_mongo
node_attendance -->|"notifies and logs"| node_utils
node_attendance -->|"renders attendance"| node_roleviews
node_impact -->|"reads activity"| node_mongo
node_student -->|"reads data"| node_mongo
node_admin -->|"reads and writes"| node_mongo
node_admin -->|"logs actions"| node_utils
node_feed -->|"reads and writes"| node_mongo
node_feed -->|"creates notifications"| node_utils
node_connections -->|"reads and writes"| node_mongo
node_chat -->|"reads and writes"| node_mongo
node_app -->|"loads handlers"| node_socket
node_socket -->|"joins chat rooms"| node_chat
node_ai -.->|"requests responses"| node_ollama
node_pushclient -->|"submits subscription"| node_push
node_pushclient -->|"registers worker"| node_serviceworker
node_push -->|"stores subscriptions"| node_mongo
node_serviceworker -->|"shows notifications"| node_visitor
node_serviceworker -->|"serves offline pages"| node_visitor
node_certificates -->|"generates PDF"| node_visitor

click node_app "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/__init__.py"
click node_auth "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/auth.py"
click node_student "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/student.py"
click node_coordinator "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/coordinator.py"
click node_admin "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/admin.py"
click node_roleviews "https://github.com/swaroopedupulapati/vmp_media/tree/main/templates"
click node_eventview "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/main.py"
click node_attendance "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/attendance.py"
click node_impact "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/impact.py"
click node_certificates "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/certificates.py"
click node_feed "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/main.py"
click node_connections "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/connections.py"
click node_chat "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/chat.py"
click node_socket "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/socket_events.py"
click node_ai "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/ai.py"
click node_push "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/push.py"
click node_pushclient "https://github.com/swaroopedupulapati/vmp_media/blob/main/static/js/push-notifications.js"
click node_serviceworker "https://github.com/swaroopedupulapati/vmp_media/blob/main/static/sw.js"
click node_utils "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/utils.py"
click node_mongo "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/models.py"
click node_gridfs "https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/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_app,node_auth,node_student,node_coordinator,node_admin,node_roleviews,node_visitor toneBlue
class node_eventview,node_attendance,node_impact,node_certificates toneAmber
class node_feed,node_connections,node_chat,node_socket toneMint
class node_ai,node_ollama,node_push,node_pushclient,node_serviceworker,node_utils toneRose
class node_mongo,node_gridfs toneIndigo
```

## Components

### Web platform

- [Flask application](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/__init__.py): `vmp/__init__.py`
- [Authentication](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/auth.py): `vmp/routes/auth.py`
- [Volunteer experience](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/student.py): `vmp/routes/student.py`
- [Coordinator tools](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/coordinator.py): `vmp/routes/coordinator.py`
- [Administration](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/admin.py): `vmp/routes/admin.py`
- [Role dashboards](https://github.com/swaroopedupulapati/vmp_media/tree/main/templates): `templates`

### Events and impact

- [Event discovery](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/main.py): `vmp/routes/main.py`
- [Attendance tracking](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/attendance.py): `vmp/routes/attendance.py`
- [Hours and badges](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/impact.py): `vmp/routes/impact.py`
- [Certificate generation](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/certificates.py): `vmp/certificates.py`

### Community features

- [Social feed](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/main.py): `vmp/routes/main.py`
- [Volunteer connections](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/connections.py): `vmp/routes/connections.py`
- [Real-time chat](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/chat.py): `vmp/routes/chat.py`
- [Socket events](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/socket_events.py): `vmp/socket_events.py`

### Platform services

- [AI assistant](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/ai.py): `vmp/routes/ai.py`
- **Ollama**
- [Push notifications](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/routes/push.py): `vmp/routes/push.py`
- [Push browser client](https://github.com/swaroopedupulapati/vmp_media/blob/main/static/js/push-notifications.js): `static/js/push-notifications.js`
- [Offline and push worker](https://github.com/swaroopedupulapati/vmp_media/blob/main/static/sw.js): `static/sw.js`
- [Shared utilities](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/utils.py): `vmp/utils.py`

### Persistence

- [MongoDB collections](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/models.py): `vmp/models.py`
- [GridFS media](https://github.com/swaroopedupulapati/vmp_media/blob/main/vmp/models.py): `vmp/models.py`

### Other components

- **Platform users**

## Connections

- Platform users → Flask application: uses
- Flask application → Authentication: registers routes
- Flask application → Volunteer experience: registers routes
- Flask application → Coordinator tools: registers routes
- Flask application → Administration: registers routes
- Flask application → Event discovery: registers routes
- Flask application → Attendance tracking: registers routes
- Flask application → Hours and badges: registers routes
- Flask application → Social feed: registers routes
- Flask application → Volunteer connections: registers routes
- Flask application → Real-time chat: registers routes
- Flask application → AI assistant: registers routes
- Flask application → Push notifications: registers routes
- Flask application → Role dashboards: selects templates
- Authentication → MongoDB collections: reads and writes
- Authentication → Shared utilities: uses helpers
- Event discovery → MongoDB collections: reads data
- Event discovery → GridFS media: serves media
- Coordinator tools → MongoDB collections: reads and writes
- Coordinator tools → Shared utilities: notifies and logs
- Attendance tracking → MongoDB collections: reads and writes
- Attendance tracking → Shared utilities: notifies and logs
- Attendance tracking → Role dashboards: renders attendance
- Hours and badges → MongoDB collections: reads activity
- Volunteer experience → MongoDB collections: reads data
- Administration → MongoDB collections: reads and writes
- Administration → Shared utilities: logs actions
- Social feed → MongoDB collections: reads and writes
- Social feed → Shared utilities: creates notifications
- Volunteer connections → MongoDB collections: reads and writes
- Real-time chat → MongoDB collections: reads and writes
- Flask application → Socket events: loads handlers
- Socket events → Real-time chat: joins chat rooms
- AI assistant → Ollama: requests responses
- Push browser client → Push notifications: submits subscription
- Push browser client → Offline and push worker: registers worker
- Push notifications → MongoDB collections: stores subscriptions
- Offline and push worker → Platform users: shows notifications
- Offline and push worker → Platform users: serves offline pages
- Certificate generation → Platform users: generates PDF
