# rudrasalokhe/findrome-event-registration architecture

> Architecture diagram of the GitHub repository rudrasalokhe/findrome-event-registration, 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/rudrasalokhe/findrome-event-registration
- Repository: https://github.com/rudrasalokhe/findrome-event-registration

## Overview

Findrome is a multi-event registration and attendee check-in web app. Attendees submit a registration and retrieve a QR pass; volunteers scan or enter pass codes to verify attendees and record check-ins. Administrators manage event settings and activation, review attendee rosters and attendance metrics, and export registrations. The Flask application in app.py owns these operations and accesses MongoDB. The source excerpts are partial, so the diagram limits backend connections to documented behavior and does not infer unshown route wiring.

Main entry points: [`static/js/scanner.js`](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/static/js/scanner.js) (QR scanner), [`static/js/admin.js`](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/static/js/admin.js) (Admin controls), [`app.py`](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py) (Registration and lookup), [`templates/index.html`](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/templates/index.html) (Registration page)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_attendee["Attendee registration"]
  node_registration_page["Registration page<br/>[index.html]"]
  node_registration_ui["Registration and pass<br/>[app.js]"]
end

subgraph group_operations["Check-in operations"]
  node_volunteer_page["Volunteer portal<br/>[volunteer.html]"]
  node_scanner_ui["QR scanner<br/>[scanner.js]"]
end

subgraph group_administration["Event administration"]
  node_admin_page["Admin console<br/>[admin.html]"]
  node_admin_ui["Admin controls<br/>[admin.js]"]
end

subgraph group_backend["Flask application"]
  node_registration_api["Registration and lookup<br/>[app.py]"]
  node_event_config["Event configuration<br/>[app.py]"]
  node_checkin_api["Verification and check-in<br/>[app.py]"]
  node_checkin_stats["Attendance metrics<br/>[app.py]"]
  node_admin_api["Event and roster management<br/>[app.py]"]
  node_export_api["Registration export<br/>[app.py]"]
end

node_attendee_actor(("Attendee"))
node_checkin_actor(("Volunteer"))
node_admin_actor(("Administrator"))
node_mongo[("MongoDB")]

node_attendee_actor -->|"opens"| node_registration_page
node_registration_page -->|"loads"| node_registration_ui
node_registration_ui -->|"submits and looks up"| node_registration_api
node_registration_api -->|"reads and writes"| node_mongo
node_registration_api -->|"gets active event"| node_event_config
node_event_config -->|"reads settings"| node_mongo
node_checkin_actor -->|"opens"| node_volunteer_page
node_volunteer_page -->|"loads"| node_scanner_ui
node_scanner_ui -->|"verifies pass"| node_checkin_api
node_scanner_ui -->|"requests metrics"| node_checkin_stats
node_checkin_api -->|"reads and updates"| node_mongo
node_checkin_stats -->|"queries attendance"| node_mongo
node_admin_actor -->|"opens"| node_admin_page
node_admin_page -->|"loads"| node_admin_ui
node_admin_ui -->|"manages events and roster"| node_admin_api
node_admin_ui -->|"requests export"| node_export_api
node_admin_api -->|"reads and writes"| node_mongo
node_export_api -->|"reads registrations"| node_mongo

click node_registration_page "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/templates/index.html"
click node_registration_ui "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/static/js/app.js"
click node_registration_api "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py"
click node_event_config "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py"
click node_volunteer_page "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/templates/volunteer.html"
click node_scanner_ui "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/static/js/scanner.js"
click node_checkin_api "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py"
click node_checkin_stats "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py"
click node_admin_page "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/templates/admin.html"
click node_admin_ui "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/static/js/admin.js"
click node_admin_api "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py"
click node_export_api "https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.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_registration_page,node_registration_ui toneBlue
class node_volunteer_page,node_scanner_ui,node_mongo toneAmber
class node_admin_page,node_admin_ui toneMint
class node_registration_api,node_event_config,node_checkin_api,node_checkin_stats,node_admin_api,node_export_api toneRose
class node_attendee_actor,node_checkin_actor,node_admin_actor toneIndigo
```

## Components

### Attendee registration

- [Registration page](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/templates/index.html): `templates/index.html`
- [Registration and pass](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/static/js/app.js): `static/js/app.js`

### Check-in operations

- [Volunteer portal](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/templates/volunteer.html): `templates/volunteer.html`
- [QR scanner](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/static/js/scanner.js): `static/js/scanner.js`

### Event administration

- [Admin console](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/templates/admin.html): `templates/admin.html`
- [Admin controls](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/static/js/admin.js): `static/js/admin.js`

### Flask application

- [Registration and lookup](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py): `app.py`
- [Event configuration](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py): `app.py`
- [Verification and check-in](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py): `app.py`
- [Attendance metrics](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py): `app.py`
- [Event and roster management](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py): `app.py`
- [Registration export](https://github.com/rudrasalokhe/findrome-event-registration/blob/main/app.py): `app.py`

### Other components

- **Attendee**
- **Volunteer**
- **Administrator**
- **MongoDB**

## Connections

- Attendee → Registration page: opens
- Registration page → Registration and pass: loads
- Registration and pass → Registration and lookup: submits and looks up
- Registration and lookup → MongoDB: reads and writes
- Registration and lookup → Event configuration: gets active event
- Event configuration → MongoDB: reads settings
- Volunteer → Volunteer portal: opens
- Volunteer portal → QR scanner: loads
- QR scanner → Verification and check-in: verifies pass
- QR scanner → Attendance metrics: requests metrics
- Verification and check-in → MongoDB: reads and updates
- Attendance metrics → MongoDB: queries attendance
- Administrator → Admin console: opens
- Admin console → Admin controls: loads
- Admin controls → Event and roster management: manages events and roster
- Admin controls → Registration export: requests export
- Event and roster management → MongoDB: reads and writes
- Registration export → MongoDB: reads registrations
