How rama-mwenda/monarch-wireless works
Monarch Wireless manages a mesh Wi-Fi hotspot business: guests select access and pay or redeem a voucher, while administrators and site managers operate the network and business through role-specific dashboards. The backend coordinates portal and admin APIs, stored records, payments, Omada access control, and SMS; a scheduled job expires sessions. The README documents broader reporting, loyalty, and operational capabilities. Some route and service implementations were not sampled, so uncertain internal call links are omitted.
Main entry points: app.js Express API · index.js SQLite database · api.js App and API client · omada.js Omada controller
Components 24
User experiences
- Captive portal
backend/src/routes/portal.js - Admin dashboard
frontend/src/pages/Dashboard.jsx - Network views
frontend/src/pages/Network.jsx - Live clients
frontend/src/pages/LiveClients.jsx - Business tools
frontend/src/pages/Reports.jsx - App and API client
frontend/src/services/api.js
Backend capabilities
- Express API
backend/src/app.js - Authentication
backend/src/routes/auth.js - Packages and vouchers
backend/src/routes/packages.js - Network API
backend/src/routes/network.js - Payments
backend/src/routes/mpesa.js - Users, reports, settings
backend/src/routes/users.js - Session authorization
backend/src/helpers/mac-auth-helper.js - Session expiry job
backend/src/jobs/session-expiry.js
External integrations
- M-Pesa service
backend/src/services/mpesa.js - Omada controller
backend/src/services/omada.js - SMS service
backend/src/services/sms.js - Omada controller service
- M-Pesa provider
- SMS provider
Security and state
- JWT and audit
backend/src/middleware/auth.js - SQLite database
backend/src/db/index.js
Other components
- Hotspot guest
- Admin or host
Connections 29
- Hotspot guest → Captive portal: opens portal
- Admin or host → Admin dashboard: uses dashboard
- Admin dashboard → App and API client: requests data
- Network views → App and API client: requests data
- Live clients → App and API client: requests clients
- Business tools → App and API client: requests data
- App and API client → Express API: sends API requests
- Express API → Authentication: dispatches auth
- Express API → Packages and vouchers: dispatches catalog
- Express API → Network API: dispatches network
- Express API → Payments: dispatches payments
- Express API → Users, reports, settings: dispatches business
- Express API → Captive portal: dispatches portal
- Authentication → JWT and audit: protects routes
- Authentication → SQLite database: reads and writes
- Packages and vouchers → SQLite database: reads and writes
- Users, reports, settings → SQLite database: reads and writes
- Network API → Omada controller: queries controller
- Payments → M-Pesa service: initiates payment
- Payments → SQLite database: records transactions
- Captive portal → SQLite database: reads and writes
- Session authorization → SQLite database: checks sessions
- Session authorization → Omada controller: authorizes devices
- Session expiry job → SQLite database: expires sessions
- Session expiry job → Omada controller: deauthorizes devices
- Session expiry job → SMS service: sends expiry notices
- M-Pesa service → M-Pesa provider: calls API
- Omada controller → Omada controller service: calls controller
- SMS service → SMS provider: sends messages