Founder & Lead Engineer, RAITHub
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.
| Module | What it does | First release? |
|---|---|---|
| Students and guardians | Admissions, profiles, guardian links, medical and contact notes | Yes |
| Academic structure | Years, terms, subjects, classes or sections, enrolments | Yes |
| Timetable | Which class meets where, with whom, in which period | Yes, entered by hand; automatic generation later |
| Attendance | Daily or per-lesson registers, lateness, absence reasons, alerts to parents | Yes |
| Assessment and report cards | Marks, grading scales, term reports | Yes, one grading scheme |
| Fees | Invoices, instalments, discounts, online payment, receipts | Yes, if the school charges fees |
| Communication | Notices, messages to guardians, a parent portal | Yes, notices first |
| Library, transport, hostel, HR and payroll, inventory | Useful to some schools, irrelevant to others | Later, 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.
| System | Answers the question | Typical users |
|---|---|---|
| School management system or SIS | Who is enrolled, where are they supposed to be, did they attend, what did they score, have fees been paid? | Office staff, teachers, leadership, parents |
| LMS | What should students learn this week, and have they done it? | Teachers and students |
| Classroom suite | Where 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 situation | Usually the right move | Why |
|---|---|---|
| One school, a standard curriculum, fees paid by bank transfer or card | Buy | Priced 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 processes | Buy, and build reports or a parent app layer on top | Keep records in the product; build only what makes you different |
| Timetables, grading or fee rules no product models, such as mixed national and international curricula | Build the part that differs, or the whole system if everything does | Spreadsheets beside a product become the real system |
| You sell a school platform, possibly in several countries | Build | You need multi-tenancy, localisation and payment gateways a school product will not give you |
| An existing product that is slow, insecure or unmaintained | Fix or replace, after an audit | A 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.
| Role | Sees and does | Must never see |
|---|---|---|
| School admin | Admissions, structure, timetable, fees, users for one school | Other schools in the same group, unless granted |
| Teacher | Registers and marks for their own classes; notes on their own students | Fee balances; safeguarding notes unless authorised |
| Guardian | Their linked children's attendance, reports, fees and notices | Any other child, including classmates' marks |
| Student | Own timetable, marks, assignments | Other students' records; teacher notes |
| Group or platform admin | Settings and reports across schools, every action logged | Nothing 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:
| Where | What the regulator or government says | What it means for the software |
|---|---|---|
| United States | FERPA 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" |
| England | Schools 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 services | The 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:
| Release | Scope | Why in this order |
|---|---|---|
| 1 | Students, guardians, structure, hand-entered timetable, attendance, notices | Teachers use it daily from week one |
| 2 | Assessment, report cards, parent portal | Needs a term of real data to get right |
| 3 | Fees, instalments, online payments | Money needs the most testing |
| 4 | OneRoster export, LMS sync, analytics, AI features | Built 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.
Related posts
Ready to discuss your project?
Book a free 15-minute technical audit with our engineering team.