Skip to content
All projects
School operators, single-site and multi-branchEducationOman2026

One platform that runs a single school — or a whole group of them

The same product at both ends of the market: one school switches on what it needs, a group adds branches without cloning anything, and five curricula run side by side in either.

The challenge

School software is usually built for one school and then stretched to fit a group, or built for a group and far too heavy for a single site. The moment an operator runs several branches, everything that was a single value — the fee policy, the curriculum, the grading scale — becomes a decision about who owns it. Build that in late and it never fits.

A branch does not run one curriculum either. British for the younger grades and IB for the older ones is an ordinary arrangement, and which curricula a branch offers varies branch to branch. Treating curriculum as a property of the school makes that impossible to express.

Arabic is not a translation pass. Layout direction, date handling and even a plain time range behave differently, and a product that treats RTL as a stylesheet toggle breaks in ways nobody catches until a real user reports it.

And approvals in this sector do not stop at school staff. Fee waivers and policy exceptions need sign-off from board members, group directors and per-school committees — people who are not employees and do not appear in any staff hierarchy.

Our approach
01

Isolate tenants at the database, not the query

Every row carries its tenant, and Postgres row-level security enforces it in the database rather than relying on every query being written correctly. A missed filter returns nothing instead of another school’s data.

02

Make ownership of a setting an explicit choice

A generic lock-or-delegate framework lets a group either fix a setting for every branch or hand it down — while a single school simply owns all of them, with no group layer in the way. Fee policy was the first consumer; approval chains and grading scales now run on the same mechanism.

03

Put curriculum where it actually lives

A branch declares the curricula it offers, grade levels are created per curriculum, and sections inherit from their grade with a per-section override. Exams, grading scales and report cards resolve from the section — so a British section and an IB section in the same building are graded on their own terms.

04

Build bilingual in from the first screen

English and Arabic dictionaries ship in code with a database-backed override table, so any string — or a whole new language — changes without a redeploy. Layout uses logical CSS properties throughout rather than left and right, and numeric ranges are direction-isolated so a time range does not reverse itself in Arabic.

05

Model governance as a first-class workflow

A generic approvals engine handles any request type, with either N-of-M voting or a strict sequential chain — accountant to principal to committee president to chairman — where each step unlocks only once the previous one signs, and a rejection vetoes immediately.

06

Give every role its own product

Teachers land on their own classes, with attendance and marks pre-filtered to the sections they are actually assigned to. Parents see only their own children, enforced server-side on every endpoint. Admins see the school; the operator sees the group.

One school
GROUPBranch ABritishMain campusBritishBranch BIBROW-LEVEL SECURITY · DENIED
Flagship · School Platform

One school today.
Twenty branches later.

The same product at both ends. Adding a branch adds a layer of ownership — it does not change the software underneath.

Settings ownership
Fee policyGroup-locked
Grading scaleBranch-owned
CurriculumPer grade level
Sequential sign-off
Accountant
Principal
Committee
Chairman
Approvedaudit trail per record
What we built

The system, in specifics.

Tenant isolation enforced by Postgres row-level security, so a missed filter returns nothing rather than another school’s data

A generic lock-or-delegate settings framework, proven live on both paths, now carrying fee policy, grading scales and approval chains

Curriculum modelled per grade level with a per-section override, so exams, grading scales and report cards resolve from the section rather than the school

A public, unauthenticated admissions endpoint with a manually-built tenant context, rate limiting, and row-locked test-slot booking verified under a genuine two-request race for the last seat

Offer letters generated as real PDFs without a headless-browser dependency to carry in production

Per-branch timezones, so “today” resolves to the branch’s calendar day and a school ahead of UTC never loses its own attendance

Timetable conflicts prevented on three independent axes — teacher, room and section — with accurate per-axis errors rather than a parsed database error

Right-to-left handled as layout, not translation: logical CSS properties throughout, and direction-isolated numeric ranges so a time range does not reverse itself in Arabic

Server-side ownership checks on every parent-facing endpoint, verified with live negative tests rather than hidden in the interface

Plan changes appended to a per-school history, so proration splits an invoice period across however many price changes fell inside it

Confirmed subscription prices frozen at contract time, so later rate-card edits never retroactively reprice an existing school

Video uploaded browser-to-CDN so files never touch the application servers, reconciled by webhook-verified background jobs

Every module

A school runs on more than a database.

The full scope, grouped by the part of the school it serves. Each school switches on only the modules its package includes.

55
Modules
6
Domains

Platform & tenancy

The layer every other module sits on: who a user is, which school they belong to, and what their group has decided they may change.

  • Multi-tenancy

    Group, branch and academic-year hierarchy with tenant isolation enforced by database row-level security rather than by query discipline.

  • Auth & RBAC

    JWT with refresh tokens and permission middleware across super admin, group admin, branch admin, teacher, parent, student, staff, librarian and accountant roles.

  • Settings inheritance

    A generic lock-or-delegate model: the group either fixes a setting for every branch or hands it down. Fee policy, grading scales and approval chains all run on it.

  • Localization engine

    English and Arabic dictionaries in code with a database-backed override table, so any string — or a whole new language — changes without a redeploy.

  • Translation console

    Locale tabs, an add-language flow, and a per-key editable table with default, customised and missing badges plus revert.

  • Notification infrastructure

    Provider-agnostic email, SMS, WhatsApp and push adapter with per-language templates.

  • Design system

    Bilingual type, RTL and LTR through logical CSS properties throughout, light and dark, and a shared component library across web and mobile.

  • Super admin console

    Create and manage tenants, school groups and branches, with global search across the whole estate.

  • Package & module assignment

    Four tier presets with per-module, per-school toggles on top and a change log behind them.

  • Audit & compliance logging

    Filterable by record, so an audit officer can pull the full history against a single invoice rather than scanning a feed.

  • Per-school branding

    Logo and accent colour theming per branch.

  • White-label

    Custom domain with automated SSL, full theme override and platform branding hidden.

  • Public API & integration hub

    Documented API, per-school API keys and webhook subscriptions.

Admissions & student records

Everything from an enquiry arriving on a public form to a student sitting in a named section of a named curriculum.

  • Admissions & online registration

    A public, no-login application flow with an opaque per-application access token, capacity-enforced entrance-test booking, and generated offer letters.

  • Student information system

    Profiles, admission numbers, guardians, siblings, documents, and enrolment history per academic year.

  • Classes, sections & curriculum

    Academic years, grade levels created per curriculum, class sections, and subjects — so British and IB grades coexist in one branch.

  • Transfers & withdrawals

    Status and movement tracked against the enrolment record rather than overwritten.

Teaching & assessment

The daily academic loop: who teaches what, who turned up, what they scored, and what goes home on the report card.

  • Teacher, subject & class assignment

    Homeroom or per-subject assignment, and the access-control foundation attendance and examinations both depend on.

  • Attendance management

    Daily and per-period marking with present, absent, late and excused states, resolved against each branch’s own timezone rather than the server clock.

  • Examinations & assessment

    Exam sittings bundling subjects with per-subject maximum and passing marks, and a marks roster that distinguishes absent from a scored zero.

  • Grading engine

    Curriculum-agnostic, with platform defaults for British, American, IB, Pakistani Federal Board and Oman national curricula, and a per-school override.

  • Gradebook & report cards

    Weighted per-subject averages across a term, mapped through the school’s scale, with GPA and IB points, per student or batched for a class.

  • Timetable & scheduling

    A weekly grid on the GCC school week with teacher, room and section conflicts each prevented independently, plus date-specific substitutions that leave the recurring pattern intact.

  • Lesson planning

    Plans authored against a class section and surfaced in the teacher’s own view.

  • LMS core

    Assignments, homework and quizzes with multiple-choice, true/false and short-answer types, plus video uploaded browser-to-CDN and processed asynchronously.

  • Digital library

    Two access tiers — class and subject resources a teacher may only create for sections they teach, and school-wide content reserved for librarians and admins.

  • AI exam & quiz grading

    Marking-scheme upload feeding an auto-grading pipeline.

  • SEN, behaviour & surveys

    Special educational needs tracking, behaviour and discipline records, and surveys and feedback.

Portals & communication

Four audiences, four products. Each one sees only what belongs to them, checked on the server rather than hidden in the interface.

  • Teacher portal

    A my-classes landing page with attendance, exams and lesson plans pre-filtered to the sections the teacher is actually assigned to.

  • Parent portal & app

    One card per linked child, then enrolment, attendance, report cards and invoices — with an ownership check on every endpoint, verified against negative tests.

  • Student portal & app

    Timetable, homework, results and library access.

  • Messaging

    Parent, teacher and admin threads with admin oversight and audit visibility for safeguarding.

  • Announcements & notice board

    School-wide posts with optional per-role audience targeting, surfaced on every role’s dashboard.

  • Events & calendar

    A month grid with multi-day date-range events, per-role targeting and an overflow chip for busy days.

  • Meeting scheduling

    Teacher availability slots with in-person and virtual bookings.

Finance & operations

The money and the moving parts — from a parent’s overdue invoice to the buses, the clinic and the stock cupboard.

  • Fee management & payments

    Invoice generation per structure and cycle, many-to-one allocation so one payment settles several overdue invoices, and automatic late-fee computation.

  • Fee policy engine

    Fixed or percentage late fees, grace periods and an arrears ladder, owned at group level with an optional branch lock.

  • Operator billing & subscriptions

    The group billed per period and itemised per branch, with multi-currency rate cards and day-accurate proration across mid-period plan changes.

  • Accounting & general ledger

    Budgeting, expense tracking and multi-currency financial reporting.

  • Payroll & GCC compliance

    WPS wage-protection file generation, gratuity and end-of-service calculation, and GOSI/PASI integration.

  • Staff & HR core

    Contracts, leave, staff attendance and document-expiry tracking.

  • Procurement & inventory

    Purchase orders, stock tracking and supplier records.

  • Facility & asset management

    Maintenance requests, room booking and asset registers.

  • Library management

    Catalogue, circulation and fines.

  • Health & clinic

    Medical records, vaccination tracking and nurse visit and incident logs.

  • Transportation

    Routes, GPS tracking, driver records and transport fee billing.

  • Hostel, cafeteria & gate security

    Boarding, canteen accounts and visitor management.

  • Recruitment, CPD & alumni

    Hiring and onboarding, performance and development, and alumni records.

Governance & analytics

Who signs off on what, and what the numbers say afterwards. The part most school software leaves to email and spreadsheets.

  • Approvals & governance engine

    A request-anything engine with three governance roles, notifications on create and decide, auto-escalation for stale requests and a needs-my-vote filter.

  • Sequential sign-off chains

    Accountant to principal to committee president to chairman, each step unlocking only once the previous one signs — or N-of-M voting where order does not matter.

  • Group console

    Multi-campus consolidation dashboards and group-level settings management built on the inheritance framework.

  • Performance dashboards

    Attendance, academic and financial trend views per school.

  • Custom report builder

    Cross-module drag-and-build reports with scheduled exports.

  • Regulatory reporting

    Pre-formatted exports per country’s ministry and authority requirements.

  • Predictive analytics

    At-risk student flags, auto-drafted report-card comments and a parent-facing assistant.

The product

What it looks like in use.

The admin dashboard: attendance, fees, school activity and upcoming events
The admin dashboard: attendance, fees, school activity and upcoming events
Outcome

What changed.

47
Modules live
Across admissions, academics, finance, HR, operations and governance
5
Curricula supported
British, American, IB, Pakistani Federal Board and Oman national
AR / EN
Bilingual throughout
Full RTL, with any string overridable without a redeploy

A single school runs on it with no multi-branch overhead, and a group adds branches without cloning anything

British and IB grades coexist in the same branch, graded on their own scales

Fee policy is owned where the group wants it owned — locked centrally or delegated

Board and committee sign-off happens inside the product, with an audit trail per record

Arabic is a first-class interface, not a translated afterthought

Next

Related work.

Aufgaben Management — Task, project and deadline management for delivery teams

Aufgaben Management

Aufgaben ManagementEnterpriseGermany

Task, project and deadline management for delivery teams

Assignment, progress tracking and collaboration in one place, so teams know who owns what.

React NativeReactNode.js
Read case study
SCORA — Security posture assessment without the consultant invoice

SCORA

SCORAEnterpriseGlobal

Security posture assessment without the consultant invoice

A security, compliance and risk assessment platform that scores an organisation against NIST CSF 2.0, ISO 27001:2022 and an SME health check, then returns a prioritised action plan.

Next.jsTypeScriptPostgreSQL
Read case studySee SCORA live
Jointstore — Bilingual e-commerce platform with crypto payments

Jointstore

JointStoreE-CommerceGermany

Bilingual e-commerce platform with crypto payments

A German and English storefront across web and mobile, taking bank transfer, PayPal and crypto.

React.jsReact NativeLaravel
Read case study