Skip to main content

Architecture

Scholiphi is a monorepo of five apps that all talk to a single backend.

High-level

What lives where

SurfaceWherePurpose
Admin Paneladmin/Web app for super admins, school admins, sub-admins
Teacher Appteacher-app/Mobile + web (Capacitor) app for teachers
Student Appfrontend/Mobile + web (Capacitor) app for students
Parent Appparent-app/Mobile + web (Capacitor) app for parents
Backendbackend/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.