How the apps integrate
EduPrime is one system with a single student record at its centre, not a bundle of separate apps. Every module reads from and writes to that record, so data is entered once and is consistent everywhere. This section documents exactly how — the patterns, the models, the triggers and the edge cases.
Three integration principles
| Principle | What it means | Why it matters |
|---|---|---|
| Single record | Every app points at the same ep.student — never a private copy. | Change an address once; it is correct on the invoice, the register and the bus list. |
| Loose coupling via bridges | Apps don't import each other; small bridge modules join them and auto-install only when both sides are present. | Run Fees + SIS alone, or add Transport and billing wires itself — no rework. |
| Compute, don't copy | Totals, balances and risk scores are computed from source data on demand or by cron. | No stale duplicates; the ledger and the analytics always reflect reality. |
The three integration hubs
| Hub | Module | Owns | Read by |
|---|---|---|---|
| Student record (SIS) | ep_core | ep.student and its lifecycle | every app |
| Academic backbone | ep_academic | classes, subjects, timetable, ep.gradebook, ep.attendance.line, ep.mark.entry | exams, reports, Bria |
| Financial hub | ep_fees | ep.fee.assignment / .line, ep.fee.invoice, ep.fee.payment | portal, Bria, bridges |
Read next
- The bridge pattern — how modules stay independent yet integrated.
- Admission → enrolment — the lifecycle flow.
- Service billing — transport, hostel and meals onto one invoice.
- Model & data-object reference — the records that cross app boundaries.
Was this page helpful?

