Architecture
Scholiphi is a monorepo of five apps that all talk to a single backend.
High-level
What lives where
| Surface | Where | Purpose |
|---|---|---|
| Admin Panel | admin/ | Web app for super admins, school admins, sub-admins |
| Teacher App | teacher-app/ | Mobile + web (Capacitor) app for teachers |
| Student App | frontend/ | Mobile + web (Capacitor) app for students |
| Parent App | parent-app/ | Mobile + web (Capacitor) app for parents |
| Backend | backend/ | Express API, BullMQ workers, cron jobs |
How features cut across apps
Most features in Feature Flows involve at least two of the four front-end apps. A typical lifecycle:
Every Feature Flow page in these docs follows this same shape — actor lanes for each role, app lane for each surface, backend in the middle.
Real-time
The backend runs Socket.IO with per-user rooms (user-${userId}). Live class signalling, chat updates, notification badges, and group-study rooms all use these channels.
Background work
- BullMQ workers handle email (Resend), notifications (Firebase), document processing, and analytics roll-ups.
- node-cron jobs run scheduled attendance reminders and alerts.
Most cross-app effects (e.g. "teacher creates assignment → all parents notified") flow through BullMQ rather than happening in the request path.