How guramigorgadze/global-arena works
Global Arena is a conference platform combining delegate registration and organizing workflows with chair-facing MUN session tools, voting, and a marathon feature. The main delegate flow is registration through confirmation and organizer records; the chair flow configures a committee session, manages debate and voting, and persists session state. Registration integrations are described in the README; sampled code directly supports the session synchronization, authorization, and persistence links shown here.
Main entry points: users.js Registration handler · mun.js MUN routes · munSession.js Session handler · voting.js Voting API client
Components 34
Public site
- Site and routes
frontend/src/App.jsx - Landing page
frontend/src/routes/Home.jsx
Registration
- Registration wizard
frontend/src/routes/Registration.jsx - Registration API client
frontend/src/api/user.js - User routes
backend/routes/users.js - Registration handler
backend/controllers/users.js - Delegate records
backend/models/delegates.js - Email sender
backend/utils/mailSender.js - Sheets sync
backend/utils/googleSheets.js
MUN sessions
- Session command
frontend/src/routes/SessionCommandPage.jsx - Session engine
frontend/src/hooks/useSessionEngine.js - MUN API client
frontend/src/api/mun.js - MUN routes
backend/routes/mun.js - Committee authorization
backend/middleware/committeeAuth.js - Session handler
backend/controllers/munSession.js - Live sessions
backend/models/CommitteeSession.js - Session archive
backend/models/CommitteeSessionArchive.js - Session schema
backend/models/schemas/SessionFields.js
Voting
- Voting pages
frontend/src/routes/VotingScreen.jsx - Voting control
frontend/src/routes/VotingControl.jsx - Voting API client
frontend/src/api/voting.js - Voting routes
backend/routes/voting.js - Voting handlers
backend/controllers/voting.js - Vote records
backend/models/voting.js
Conference operations
- Marathon page
frontend/src/routes/Marathon.jsx - Marathon API client
frontend/src/api/marathon.js - Marathon routes
backend/routes/marathon.js - Marathon handlers
backend/controllers/marathon.js - Marathon results
backend/models/marathonResults.js
Other components
- Delegate
- Committee chair
- Organizer
- Email service
- Google Sheets
Connections 32
- Delegate → Site and routes: visits
- Site and routes → Landing page: routes
- Delegate → Registration wizard: submits details
- Registration wizard → Registration API client: sends registration
- Registration API client → User routes: calls API
- User routes → Registration handler: dispatches
- Registration handler → Delegate records: stores delegate
- Registration handler → Email sender: sends confirmation
- Email sender → Email service: sends email
- Registration handler → Sheets sync: syncs registration
- Sheets sync → Google Sheets: posts registration
- Committee chair → Session command: operates session
- Session command → Session engine: uses engine
- Session engine → MUN API client: syncs session
- MUN API client → MUN routes: calls API
- MUN routes → Committee authorization: protects session routes
- MUN routes → Session handler: dispatches
- Session handler → Live sessions: reads and writes
- Session handler → Session archive: archives on reset
- Live sessions → Session schema: uses fields
- Session archive → Session schema: uses fields
- Committee chair → Voting control: controls votes
- Voting pages → Voting API client: requests voting
- Voting control → Voting API client: controls voting
- Voting API client → Voting routes: calls API
- Voting routes → Voting handlers: dispatches
- Voting handlers → Vote records: reads and writes
- Organizer → Marathon page: uses marathon
- Marathon page → Marathon API client: requests data
- Marathon API client → Marathon routes: calls API
- Marathon routes → Marathon handlers: dispatches
- Marathon handlers → Marathon results: reads and writes