# rowdro/eventora architecture

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

- Interactive diagram: https://gitdiagram.com/rowdro/eventora
- Repository: https://github.com/rowdro/eventora

## Overview

Eventora is a browser-based event discovery and management app with attendee, organizer, and admin experiences, plus an SSLCommerz checkout flow. The principal purchase path runs from attendee checkout through session creation and gateway payment, back to the SPA for server-side transaction verification before ticket issuance. The README documents the wider event, dashboard, and schedule capabilities; sampled source confirms the SPA’s monolithic structure and parts of its Supabase and payment integration, but does not expose all internal call wiring.

Main entry points: [`app.js`](https://github.com/rowdro/eventora/blob/main/app.js) (App, auth and routing), [`index.html`](https://github.com/rowdro/eventora/blob/main/index.html) (SPA shell), [`api/sslcommerz/create-session.js`](https://github.com/rowdro/eventora/blob/main/api/sslcommerz/create-session.js) (Create payment session), [`api/sslcommerz/success.js`](https://github.com/rowdro/eventora/blob/main/api/sslcommerz/success.js) (Payment redirects)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web application"]
  node_shell["SPA shell<br/>[index.html]"]
  node_runtime_config["Runtime config<br/>[config.js]"]
  node_app["App, auth and routing<br/>[app.js]"]
end

subgraph group_events["Event operations"]
  node_event_discovery["Event discovery<br/>[app.js]"]
  node_event_management["Event management<br/>[app.js]"]
  node_schedule_builder["Schedule builder<br/>[app.js]"]
  node_ticketing["Order and ticketing<br/>[app.js]"]
end

subgraph group_payments["Payment flow"]
  node_create_session["Create payment session<br/>[create-session.js]"]
  node_redirect_handlers["Payment redirects<br/>[success.js]"]
  node_redirect_helper["Redirect helper<br/>[_redirect.js]"]
  node_verify_payment["Verify transaction<br/>[verify.js]"]
  node_ipn_handler["IPN endpoint<br/>[ipn.js]"]
end

subgraph group_services["External services"]
  node_supabase[("Supabase")]
  node_sslcommerz["SSLCommerz gateway"]
end

node_attendees(("Attendees"))
node_organizers(("Organizers"))
node_admin(("Admin"))
node_browser(("Browser"))

node_attendees -->|"open app"| node_shell
node_organizers -->|"open app"| node_shell
node_admin -->|"open app"| node_shell
node_shell -->|"loads"| node_app
node_runtime_config -->|"configures"| node_app
node_app -->|"routes to"| node_event_discovery
node_app -->|"routes to"| node_event_management
node_app -->|"routes to"| node_schedule_builder
node_app -->|"handles checkout"| node_ticketing
node_app -->|"uses auth and profiles"| node_supabase
node_ticketing -->|"starts payment"| node_create_session
node_create_session -->|"creates session"| node_sslcommerz
node_sslcommerz -->|"posts result"| node_redirect_handlers
node_redirect_handlers -->|"dispatches redirect"| node_redirect_helper
node_redirect_helper -->|"redirects to SPA"| node_browser
node_browser -->|"returns callback"| node_app
node_app -->|"requests verification"| node_verify_payment
node_verify_payment -->|"validates transaction"| node_sslcommerz
node_app -->|"issues verified ticket"| node_ticketing
node_sslcommerz -.->|"sends IPN"| node_ipn_handler

click node_shell "https://github.com/rowdro/eventora/blob/main/index.html"
click node_runtime_config "https://github.com/rowdro/eventora/blob/main/config.js"
click node_app "https://github.com/rowdro/eventora/blob/main/app.js"
click node_event_discovery "https://github.com/rowdro/eventora/blob/main/app.js"
click node_event_management "https://github.com/rowdro/eventora/blob/main/app.js"
click node_schedule_builder "https://github.com/rowdro/eventora/blob/main/app.js"
click node_ticketing "https://github.com/rowdro/eventora/blob/main/app.js"
click node_create_session "https://github.com/rowdro/eventora/blob/main/api/sslcommerz/create-session.js"
click node_redirect_handlers "https://github.com/rowdro/eventora/blob/main/api/sslcommerz/success.js"
click node_redirect_helper "https://github.com/rowdro/eventora/blob/main/api/sslcommerz/_redirect.js"
click node_verify_payment "https://github.com/rowdro/eventora/blob/main/api/sslcommerz/verify.js"
click node_ipn_handler "https://github.com/rowdro/eventora/blob/main/api/sslcommerz/ipn.js"

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_shell,node_runtime_config,node_app,node_browser toneBlue
class node_event_discovery,node_event_management,node_schedule_builder,node_ticketing toneAmber
class node_create_session,node_redirect_handlers,node_redirect_helper,node_verify_payment,node_ipn_handler toneMint
class node_supabase,node_sslcommerz toneRose
class node_attendees,node_organizers,node_admin toneIndigo
```

## Components

### Web application

- [SPA shell](https://github.com/rowdro/eventora/blob/main/index.html): `index.html`
- [Runtime config](https://github.com/rowdro/eventora/blob/main/config.js): `config.js`
- [App, auth and routing](https://github.com/rowdro/eventora/blob/main/app.js): `app.js`

### Event operations

- [Event discovery](https://github.com/rowdro/eventora/blob/main/app.js): `app.js`
- [Event management](https://github.com/rowdro/eventora/blob/main/app.js): `app.js`
- [Schedule builder](https://github.com/rowdro/eventora/blob/main/app.js): `app.js`
- [Order and ticketing](https://github.com/rowdro/eventora/blob/main/app.js): `app.js`

### Payment flow

- [Create payment session](https://github.com/rowdro/eventora/blob/main/api/sslcommerz/create-session.js): `api/sslcommerz/create-session.js`
- [Payment redirects](https://github.com/rowdro/eventora/blob/main/api/sslcommerz/success.js): `api/sslcommerz/success.js`
- [Redirect helper](https://github.com/rowdro/eventora/blob/main/api/sslcommerz/_redirect.js): `api/sslcommerz/_redirect.js`
- [Verify transaction](https://github.com/rowdro/eventora/blob/main/api/sslcommerz/verify.js): `api/sslcommerz/verify.js`
- [IPN endpoint](https://github.com/rowdro/eventora/blob/main/api/sslcommerz/ipn.js): `api/sslcommerz/ipn.js`

### External services

- **Supabase**
- **SSLCommerz gateway**

### Other components

- **Attendees**
- **Organizers**
- **Admin**
- **Browser**

## Connections

- Attendees → SPA shell: open app
- Organizers → SPA shell: open app
- Admin → SPA shell: open app
- SPA shell → App, auth and routing: loads
- Runtime config → App, auth and routing: configures
- App, auth and routing → Event discovery: routes to
- App, auth and routing → Event management: routes to
- App, auth and routing → Schedule builder: routes to
- App, auth and routing → Order and ticketing: handles checkout
- App, auth and routing → Supabase: uses auth and profiles
- Order and ticketing → Create payment session: starts payment
- Create payment session → SSLCommerz gateway: creates session
- SSLCommerz gateway → Payment redirects: posts result
- Payment redirects → Redirect helper: dispatches redirect
- Redirect helper → Browser: redirects to SPA
- Browser → App, auth and routing: returns callback
- App, auth and routing → Verify transaction: requests verification
- Verify transaction → SSLCommerz gateway: validates transaction
- App, auth and routing → Order and ticketing: issues verified ticket
- SSLCommerz gateway → IPN endpoint: sends IPN
