How hseha/omnivote works
OmniVote is a school SSG election system: students enroll and vote by secret ballot, while election staff administer candidates and election phases and publish results. The React console and Flutter student app use the Laravel API, which the README identifies as authoritative for rules; the clients deliberately use different authentication transports. The Flutter Dart sources are not in the supplied tree, so its node uses the existing app directory and its internal flow is not expanded. Backend relationships beyond the excerpts are included only where the README or source index supports them.
Main entry points: api.php API routes · Models Election records · App.jsx Admin console · AdminUserController.php User administration
Components 20
User applications
- Admin console
admin-react/src/App.jsx - Admin screens
admin-react/src - Console auth
admin-react/src/lib/AuthContext.jsx - Console API client
admin-react/src/lib/api.js - Student app
user-flutter
API and access
- API routes
backend-laravel/routes/api.php - Admin authentication
backend-laravel/app/Http/Controllers/AdminAuthController.php - Student access
backend-laravel/app/Http/Controllers/StudentAuthController.php
Election operations
- Enrollment and imports
backend-laravel/app/Http/Controllers/RegistrarImportController.php - Candidate management
backend-laravel/app/Http/Controllers/AdminCandidateController.php - Election setup
backend-laravel/app/Http/Controllers/ElectionController.php - Ballot and voting
backend-laravel/app/Http/Controllers/BallotController.php - Results and archive
backend-laravel/app/Http/Controllers/ResultsController.php - Announcements
backend-laravel/app/Http/Controllers/AnnouncementController.php - User administration
backend-laravel/app/Http/Controllers/AdminUserController.php
Shared services
- Election records
backend-laravel/app/Models - Notifications
backend-laravel/app/Support/Notifier.php
Other components
- Election staff
- Students
- Email service
Connections 23
- Election staff → Admin console: administers
README.md - Admin console → Admin screens: switches views
admin-react/src/App.jsx - Admin console → Console auth: provides auth
admin-react/src/App.jsx - Console auth → Console API client: sets handlers
admin-react/src/lib/AuthContext.jsx - Console API client → API routes: sends requests
README.md - Students → Student app: uses
README.md - Student app → API routes: sends requests
README.md - API routes → Admin authentication: routes to
backend-laravel/routes/api.php - API routes → Student access: routes to
backend-laravel/routes/api.php - API routes → Enrollment and imports: routes to
backend-laravel/routes/api.php - API routes → Candidate management: routes to
backend-laravel/routes/api.php - API routes → Election setup: routes to
backend-laravel/routes/api.php - API routes → Ballot and voting: routes to
backend-laravel/routes/api.php - API routes → Results and archive: routes to
backend-laravel/routes/api.php - API routes → Announcements: routes to
backend-laravel/routes/api.php - API routes → User administration: routes to
backend-laravel/routes/api.php - Admin authentication → Election records: uses accounts
backend-laravel/app/Http/Controllers/AdminAuthController.php - Enrollment and imports → Election records: uses student records
backend-laravel/app/Http/Controllers/RegistrarImportController.php - Candidate management → Election records: uses candidates
backend-laravel/app/Http/Controllers/AdminCandidateController.php - Results and archive → Election records: reads election data
backend-laravel/app/Http/Controllers/ResultsController.php - User administration → Election records: manages accounts
backend-laravel/app/Http/Controllers/AdminUserController.php - User administration → Notifications: notifies admins
backend-laravel/app/Http/Controllers/AdminUserController.php - Notifications → Email service: sends email
backend-laravel/app/Support/Notifier.php