Back to BlogIndustry Guides

Building a School Management System: Modules, Cost, Build vs Buy

Rupak Amin

Founder & Lead Engineer, RAITHub

16 min read

A school management system runs a school's records: admissions, classes, timetables, attendance, grades, fees and messages to parents. A single school should usually buy one; openSIS, for example, publishes plans from $4 per staff member a month (openSIS pricing). Build when you are selling to many schools, or when your timetable, fee or reporting rules fit no product.

This guide is for school owners, school groups and EdTech founders anywhere: a private school network in the Gulf, an academy trust in the UK, a tutoring chain in South Asia, a founder selling to schools in Africa. RAITHub has not shipped a school management product. Its education work is PadhAI, an AI tutoring platform. Everything below about timetables, attendance and school records is engineering guidance, labelled that way. Where student data law comes up, it is general information: confirm the current rule with your adviser.

What modules does a school management system need?

Seven modules cover most of what a school does every day; everything else can wait. The mistake is building all twelve modules on a vendor's feature page before one teacher has taken a register.

ModuleWhat it doesFirst release?
Students and guardiansAdmissions, profiles, guardian links, medical and contact notesYes
Academic structureYears, terms, subjects, classes or sections, enrolmentsYes
TimetableWhich class meets where, with whom, in which periodYes, entered by hand; automatic generation later
AttendanceDaily or per-lesson registers, lateness, absence reasons, alerts to parentsYes
Assessment and report cardsMarks, grading scales, term reportsYes, one grading scheme
FeesInvoices, instalments, discounts, online payment, receiptsYes, if the school charges fees
CommunicationNotices, messages to guardians, a parent portalYes, notices first
Library, transport, hostel, HR and payroll, inventoryUseful to some schools, irrelevant to othersLater, or buy separately

HR and payroll deserve a special warning. Payroll follows national tax rules that change every year. Buy it, or integrate with a local payroll product; do not build it into a school system.

What is the difference between a school management system, an SIS and an LMS?

A school management system and a student information system (SIS) are usually the same thing under two names: the system of record for students, classes and results. A learning management system (LMS) is where teaching happens: courses, content, assignments and online quizzes. Many schools run both and sync them.

SystemAnswers the questionTypical users
School management system or SISWho is enrolled, where are they supposed to be, did they attend, what did they score, have fees been paid?Office staff, teachers, leadership, parents
LMSWhat should students learn this week, and have they done it?Teachers and students
Classroom suiteWhere are today's documents, meetings and assignments?Teachers and students

Classroom suites are often free to schools; Google, for example, says Google Workspace for Education Fundamentals is "available for no charge for all qualifying institutions" (Google for Education). That covers documents and assignments, not fees or timetables. If your real need is courses and content, read how to build an LMS from scratch and custom LMS vs Moodle before you start on a school system.

Should a school buy a school management system or build one?

A single school should buy. A school group with unusual rules should buy and integrate, or build a narrow layer. A company selling to schools should build, because the software is the product.

Your situationUsually the right moveWhy
One school, a standard curriculum, fees paid by bank transfer or cardBuyPriced products exist; openSIS lists Core Startup at $4 per staff member a month billed annually, and Essential at $8 with unlimited student and parent accounts
A group of schools, one brand, standard processesBuy, and build reports or a parent app layer on topKeep records in the product; build only what makes you different
Timetables, grading or fee rules no product models, such as mixed national and international curriculaBuild the part that differs, or the whole system if everything doesSpreadsheets beside a product become the real system
You sell a school platform, possibly in several countriesBuildYou need multi-tenancy, localisation and payment gateways a school product will not give you
An existing product that is slow, insecure or unmaintainedFix or replace, after an auditA rewrite is not always the answer

openSIS's figures come from its pricing page, checked 30 September 2026, and illustrate staff-based pricing; other products price per student or by quote. This is not a ranking. Trial any product with your hardest timetable and your most complicated fee structure before you sign.

How do you model timetables and attendance so the data stays correct?

Let the database refuse clashes: no teacher or room may be booked into two overlapping periods, and no student may get two attendance marks for the same lesson. The application checks first, for a friendly message; the constraints are the guarantee. PostgreSQL does this with exclusion constraints on range types, using the btree_gist extension to combine equality and overlap checks (PostgreSQL: range types). A minimal sketch written for this post:

CREATE EXTENSION IF NOT EXISTS btree_gist;

CREATE TABLE term (
  id        uuid PRIMARY KEY,
  school_id uuid NOT NULL REFERENCES school(id),
  name      text NOT NULL,                 -- 'Term 2, 2027'
  during    daterange NOT NULL
);

CREATE TABLE class_section (
  id       uuid PRIMARY KEY,
  term_id  uuid NOT NULL REFERENCES term(id),
  subject  text NOT NULL,
  label    text NOT NULL                   -- 'Grade 8 Maths, section B'
);

-- One weekly slot. minutes = minutes after midnight, [540, 585) is 09:00 to 09:45.
CREATE TABLE timetable_slot (
  id          uuid PRIMARY KEY,
  term_id     uuid NOT NULL REFERENCES term(id),
  section_id  uuid NOT NULL REFERENCES class_section(id),
  teacher_id  uuid NOT NULL REFERENCES staff(id),
  room_id     uuid NOT NULL REFERENCES room(id),
  cycle_week  smallint NOT NULL DEFAULT 1, -- 1 and 2 for a two-week timetable
  weekday     smallint NOT NULL CHECK (weekday BETWEEN 1 AND 7),
  minutes     int4range NOT NULL,
  EXCLUDE USING GIST (term_id WITH =, teacher_id WITH =, cycle_week WITH =, weekday WITH =, minutes WITH &&),
  EXCLUDE USING GIST (term_id WITH =, room_id WITH =, cycle_week WITH =, weekday WITH =, minutes WITH &&)
);

-- A lesson that actually happened (or was cancelled) on a date.
CREATE TABLE class_session (
  id         uuid PRIMARY KEY,
  slot_id    uuid NOT NULL REFERENCES timetable_slot(id),
  on_date    date NOT NULL,
  cancelled  boolean NOT NULL DEFAULT false,
  UNIQUE (slot_id, on_date)
);

CREATE TABLE attendance_mark (
  session_id   uuid NOT NULL REFERENCES class_session(id),
  student_id   uuid NOT NULL REFERENCES student(id),
  status       text NOT NULL CHECK (status IN ('present', 'late', 'absent_authorised', 'absent_unauthorised')),
  recorded_by  uuid NOT NULL REFERENCES staff(id),
  recorded_at  timestamptz NOT NULL DEFAULT now(),
  PRIMARY KEY (session_id, student_id)     -- one mark per student per lesson
);

Five decisions matter more than the SQL:

  • Half-open ranges. A lesson ending at 09:45 and the next starting at 09:45 do not clash, so back-to-back periods work.
  • Weekly slots and dated sessions are different things. The timetable says "Tuesdays, period 2"; the register belongs to a lesson on a date. Holidays, cover teachers and cancelled lessons live on the session, not the slot.
  • Corrections leave a trail. A changed mark is updated, but the old value, who changed it and why go to an audit log. Attendance disputes with parents are common; the audit log design guide covers the pattern.
  • Attendance codes are configuration. The four statuses above are a starting point. Many countries and school boards publish their own codes and reporting rules; store the code set per school, and map it to national codes where they apply.
  • Timetable generation is a separate problem. Automatically generating a clash-free timetable from teacher availability, room sizes and subject hours is a constraint-solving problem. Start with hand entry validated by the constraints above; buy or add a solver later.

How should roles and permissions work for staff, teachers, parents and students?

Start from a small set of roles, scope every one of them to a school and, for teachers, to their own classes, and treat the guardian link as a permission in its own right. Parents should see their own children and nothing else.

RoleSees and doesMust never see
School adminAdmissions, structure, timetable, fees, users for one schoolOther schools in the same group, unless granted
TeacherRegisters and marks for their own classes; notes on their own studentsFee balances; safeguarding notes unless authorised
GuardianTheir linked children's attendance, reports, fees and noticesAny other child, including classmates' marks
StudentOwn timetable, marks, assignmentsOther students' records; teacher notes
Group or platform adminSettings and reports across schools, every action loggedNothing hidden, which is why the logging matters

Two details catch school systems out. A guardian link needs its own attributes, because not every adult linked to a child may collect them, see their reports or receive messages; a court order or a school's safeguarding decision can restrict one guardian and not the other. And a platform selling to many schools needs tenant isolation, so one school's data is invisible to another. The RBAC design guide covers the permission matrix, and the PostgreSQL row-level security guide covers isolation enforced by the database.

How do school fees and online payments work across countries?

Store every amount in integer minor units with its currency, model instalments and discounts as data rather than code, and plan for more than one payment gateway if you sell in more than one country. Card processors that work in London may not be how parents pay in Dhaka, Lagos or Riyadh.

  • Minor units are not always cents. Stripe, for example, expects 1000 to charge 10 USD but 10 to charge 10 JPY, because the yen is a zero-decimal currency (Stripe: supported currencies), and a few currencies use 3 decimal places. Store the exponent with the currency; never assume 2.
  • Instalments and sibling discounts are rules. A fee plan says "3 instalments, 10% off for the second child"; the invoice is generated from it. Changing the rule should not rewrite paid invoices.
  • Payments are confirmed by the gateway, not the browser. Record a payment when the gateway's webhook confirms it, and make a replayed webhook harmless. The payments and webhooks testing guide shows how to test that.
  • Gateways differ by market. PadhAI, the tutoring platform RAITHub built, integrates 9 payment gateways for this reason. For card-based subscription billing, the Stripe billing guide covers the mechanics.

What privacy rules apply to student data in a school system?

They depend on the country, and they are stricter for children. Three examples, as general information only; confirm the current rule with your adviser:

WhereWhat the regulator or government saysWhat it means for the software
United StatesFERPA gives parents rights to access their children's education records, to seek amendment, and some control over disclosure; the rights transfer to the student at 18 or on entering postsecondary education (US Department of Education)Parent access to records, correction requests, a disclosure log, and a switch when a student becomes an "eligible student"
EnglandSchools must complete a DPIA (data protection impact assessment) when processing is likely to be high risk, check where supplier data is stored including international transfers, and set responsibilities in a contract or data processing agreement (DfE: procuring EdTech)Be ready for a school's DPIA questions, name your hosting region, and sign a DPA
UK online servicesThe ICO's Children's code has 15 standards for online services likely to be accessed by children; DfE notes schools are not directly in scope but EdTech suppliers often are (ICO: Children's code)Privacy-protective defaults for student-facing features

Elsewhere, national data protection laws apply, and many ministries publish their own rules for school data. Design for the strictest market you plan to sell into: minimal data, clear roles, logged access and exportable records.

How does a school management system connect to an LMS and other tools?

Through a published standard where one exists, rather than a custom sync for every product. 1EdTech's OneRoster standard exists to "securely and reliably exchange roster information, course materials, and grades between systems"; version 1.2 defines rostering, gradebook and resource services, over CSV files or REST web services (1EdTech: OneRoster). If your school system can export OneRoster, many learning tools can read your classes and students without bespoke work. Build the CSV export first; it is simpler and covers most integrations.

Where does AI fit in a school management system?

Mostly outside the records system, not inside it. Attendance, fees and marks need to be exact, and a language model should never decide them. AI earns its place in learning: tutoring, practice questions and feedback drafts that a teacher reviews. PadhAI shows the pattern: a Socratic tutor that guides with questions, with math verification and RAG (retrieval-augmented generation, which grounds answers in source material), and a 70/20/10 LLM router that sends most queries to cheaper models to keep cost per learner down. The AI tutor guide covers the design. A tutor like that can read a student's timetable and enrolments from the school system; it should not write to them.

What does a custom school management system cost, and how long does it take?

RAITHub does not publish rates; each build gets a fixed written quote after a free 15-minute technical audit. What drives the number is the module list, the number of schools and countries, and the integrations. A realistic phasing:

ReleaseScopeWhy in this order
1Students, guardians, structure, hand-entered timetable, attendance, noticesTeachers use it daily from week one
2Assessment, report cards, parent portalNeeds a term of real data to get right
3Fees, instalments, online paymentsMoney needs the most testing
4OneRoster export, LMS sync, analytics, AI featuresBuilt on data that is already clean

A focused first release, one audience and one core workflow, typically takes 4 to 6 weeks at fixed scope with RAITHub; a multi-school platform is several releases. The LMS development cost guide breaks down similar drivers, and the MVP cost estimator gives a first range for your module list. Compare it honestly with three years of a product's per-staff or per-student fees.

How does working with a Dhaka team fit school hours around the world?

RAITHub works from Dhaka, UTC+6, with no daylight saving. On a 9:00 to 18:00 day at both ends, Dubai and Singapore get about 7 hours of overlap, Riyadh and Nairobi 6, Johannesburg 5, Lagos 4, Central Europe 4 in winter and 5 in summer, the UK 3 in winter and 4 in summer, and Sydney 5 (AEST) or 4 (AEDT). US clients get a daily 2-hour evening overlap, Dhaka 19:00 to 21:00, which is 08:00 to 10:00 US East. The working week is agreed per client, and everything else runs on written daily handoffs, which suits school leaders who read updates after the school day.

Why RAITHub for this

  • Education work that shipped. PadhAI, built by RAITHub: 11 services (9 Node/TypeScript, 2 Python), a Socratic tutor with math verification and RAG, a 70/20/10 LLM router, and delivery across a PWA, WhatsApp and Telegram. See the PadhAI case study (PDF) and the EdTech industry page.
  • Payments in many markets. PadhAI's 9 payment gateways are the same problem as school fees in several countries.
  • Roles and isolation, tested. Sundor Skin has 88 permission codes, 12 staff roles and 146 PostgreSQL tables with row-level security, the discipline a guardian-and-teacher permission model needs.
  • Honest scope. RAITHub has not built a school management system. Timetables, attendance and report cards would be new work, quoted as such. See SaaS development for what a build includes, and the EdTech software development guide for the wider picture.
  • Clear terms. A free 15-minute technical audit, then a fixed written quote, fixed scope or a dedicated monthly team. You own the IP, and an NDA is standard. RAITHub is not SOC 2 or ISO 27001 certified; it signs DPAs and SCCs and follows your controls.

When you don't need us

  • You run one school with standard processes. Buy a school management system and spend the difference on teachers.
  • You mainly need courses and assignments. That is an LMS or a classroom suite, some of which are free to qualifying schools.
  • You need payroll. Buy a local payroll product; national tax rules change too often to build.
  • You need a native iOS or Android app. RAITHub builds web apps and PWAs only; a PWA installs on parents' phones without an app store.
  • You need legal advice on student data. Ask a data protection adviser; RAITHub builds the controls they specify.
  • You want developers placed in your team by the hour. RAITHub does not offer staff augmentation.

If you already have a school system that double-books rooms or loses registers, start with a fix rather than a rebuild.

Sources checked on 30 September 2026. Student data rules are general information only; confirm the current rule with your adviser.

If you are building a school platform, or your current system fights your timetable or fee rules, book the free 15-minute technical audit. Bring your module list, your number of schools and one week's timetable.

Frequently asked questions

What is a school management system?

A school management system is software that runs a school's records and operations: admissions, students and guardians, classes, timetables, attendance, grades, report cards, fees and parent communication. It is often called a student information system (SIS) and is usually separate from the LMS where teaching content lives.

What modules should a school management system have?

Start with seven: students and guardians, academic structure, timetable, attendance, assessment and report cards, fees and communication. Library, transport, hostel, HR and inventory modules can come later or be bought separately. Payroll is usually better bought than built.

Should a school build its own school management system?

A single school usually should not; priced products exist, such as openSIS from $4 per staff member a month billed annually. Building makes sense for companies selling a school platform, or for school groups whose timetable, fee or grading rules no product models.

How do you stop a timetable double-booking a teacher or room?

Store each slot's time as a range and add database exclusion constraints that reject two slots for the same teacher, or the same room, on the same day with overlapping times. PostgreSQL supports this with range types and the btree_gist extension.

What is the difference between an SIS and an LMS?

An SIS or school management system is the record of who is enrolled, where they should be, whether they attended and what they scored. An LMS is where teaching happens: courses, content, assignments and quizzes. Standards such as OneRoster let the two exchange rosters and grades.

Has RAITHub built a school management system?

No. RAITHub built PadhAI, an AI tutoring platform with 11 services, a Socratic tutor with RAG, a 70/20/10 LLM router and 9 payment gateways. A school management system would be new work, and RAITHub quotes it that way after a free technical audit.

school management systemstudent information systemschool erptimetable softwareattendance systemedtech

Ready to discuss your project?

Book a free 15-minute technical audit with our engineering team.