Skip to main content

23 modules. 4 layers. One school system.

OpenSchool isn't 23 disconnected features - it's four layers that build on one another, and every module below shows exactly what it does: a secured foundation, the academic structure for a year, the people inside it, and the daily operations that run on top.

A teacher and students in a classroom in Sri Lanka
4
platform layers
23
modules
88
individual capabilities
Layer 01 · Foundation

Platform Foundation

The base every other module sits on - the school profile, ThunderID-backed identity, the in-app leadership hierarchy, and the audit log.

School Management

The school profile and the first-run Setup wizard that gets a fresh instance from empty to operational.

  • Guided School Setup wizard: school details → houses → grades → classes → mediums
  • One authoritative school profile: name, address, contact info, inline logo
  • Editable grade range (1-13) the school runs
  • Resumable and idempotent - safe to skip steps and finish later from Settings

Identity & Password Lifecycle

Account provisioning and password lifecycle, backed by ThunderID.

  • Every account authenticates through ThunderID - no locally stored login password
  • NIC-based default passwords for teachers/guardians, index-number defaults for students
  • Forced first-login password change via a full-page interstitial
  • Self-service "Forgot password?" with a short-lived, single-use reset token
  • Rate limiting, security headers, and CORS allow-listing API-wide

Roles & Positions

An in-app leadership hierarchy layered on top of the four ThunderID roles.

  • Four base roles from ThunderID: admin, teacher, student, parent
  • In-app position hierarchy: Principal → Vice Principal → Section Head → Class Teacher → Subject Teacher → Teacher
  • Position determines notification reach and dashboard framing
  • Principal/Vice Principal are permanent; Section Head/Class Teacher/Subject Teacher are year-scoped

Audit Log

An append-only record of sensitive changes, with actor and before/after state.

  • House reassignments, attendance-lock overrides, and other sensitive actions logged
  • Actor, before/after state, and an optional reason recorded per entry
  • Admin-only, readable from Settings → Audit Log
Layer 02 · Academic Structure

Academic Structure

How a school year is organized before a single student is enrolled - years, the full Grade 1-13 flow, streams, mediums, and curriculum.

Academic Year Management

Create academic years and flip exactly one to current - the scope almost every other module reads.

  • Create and list academic years
  • Set the single current academic year
  • View every class tied to a given year
  • Delete academic years

Grades & Classes

The full Grade 1-13 flow, with lettered class sections per grade.

  • Model the full flow from Grade 1 to Grade 13, not just A/Level
  • Covers Scholarship years (1-5), O/Level (10-11), and A/Level (12-13)
  • Lettered class sections per grade (10-A, 10-B, …)
  • Form and subject teacher assignment per class
  • Full enrollment control: enroll and remove students

Streams & Stream Groups

A/L streams and stream groups for Grade 12/13.

  • Model streams like Physical Science, Bio Science, Commerce, Arts, Technology
  • Editable short codes and section counts (12-M1, 13-C1, …)
  • Stream groups for finer subject grouping (e.g. Physical vs. Bio Science)
  • Section Head / teacher-in-charge assignment per grade or grade+stream

Mediums

Sinhala, Tamil, English, or custom languages of instruction.

  • Add Sinhala/Tamil/English or fully custom mediums
  • Optionally pin a class to a medium
  • Medium-pinned classes are excluded from promotion's auto-fill pools
  • Medium-pinned students carry straight over to the same-medium class next grade

Subjects & Curriculum

The subject catalogue, curriculum levels, and elective selection groups.

  • Subject catalogue: name and code
  • Per-grade curriculum levels and selection groups
  • Subject buckets for elective choices (e.g. "choose 3 of these 6")
  • Per-student subject enrollment and selection tracking
Layer 03 · People & Classes

People & Classes

Where the academic structure meets real people - students, teachers, guardians, non-academic staff, houses, and the prefect board.

Student Management

Student profiles, enrollment, and an 8-tab detail view covering their full school record.

  • Profile, enrollment status, house, and up to 2 guardians per student
  • 8-tab detail view: Profile, Guardians, Subject Enrollment, Progress Reports, Activities, Leadership & Awards, Disciplinary, Records
  • Shared guardians supported for siblings

Teacher Management

Teacher profiles, employment status, and position assignment.

  • Profile: title, gender, NIC, auto-assigned employee number
  • Employment status: active, resigned, transferred
  • House and in-app position assignment
  • Form and subject teacher assignment across classes

Guardian Management

A searchable guardian directory with notification history and portal-login status.

  • Dedicated, searchable directory - not just inline on a student page
  • Notification history and portal-login status per guardian
  • Shared guardians across siblings, linked from each child's Guardians tab
  • Delete blocked while a guardian is still linked to a student

Non-academic Staff

Lab assistants, librarians, office staff, and other non-teaching roles.

  • Lab Assistant, Librarian, Office Staff, Development Officer, IT Officer, Security, Minor Employee
  • Profiles with no login/IDP account
  • Shares the employee-number sequence with teachers

Houses

Named houses that students and staff self-balance into automatically.

  • Named houses with an editable color
  • Least-populated-house-with-random-tiebreak auto-assignment
  • Manual reassignment, audit-logged

Prefect Board

Rank-based prefect appointments per academic year, with a read-only archive of past years.

  • Rank-based appointments: Head Prefect down to House Captain / Vice House Captain
  • Scoped per academic year
  • Year selector switches past years into a read-only archive

Societies

Clubs and societies with a teacher-in-charge and a five-role student roster, archived by year.

  • Science Society, Interact/Leo Club, Scouts, and other clubs, each with an admin-assigned Teacher-in-Charge
  • Five-role student roster: Leader, Deputy Leader, Secretary, Treasurer, Member
  • Year-scoped, with the same read-only past-year archive view as the prefect board
  • Teacher-in-Charge manages their own society's roster from a "My Society" page; admins can manage any society
Layer 04 · Daily Operations

Daily Operations

What runs every school day, once the structure and people are in place - attendance, records, promotion, timetables, notifications, and reports.

Attendance Management

Daily sessions for students and staff, with locking and guardian notifications.

  • Per-class daily sessions: present/absent/late/excused
  • Sessions lock 24 hours after creation; admin override is audit-logged
  • Guardian notification on a newly-marked absence
  • Separate staff attendance covering teachers and non-academic staff

Academic Records

Term marks and a full student portfolio - reports, activities, leadership, awards, discipline.

  • School's term/semester structure per academic year
  • Per-subject term marks with aggregate ranking
  • Progress reports, activities, leadership roles, awards, and disciplinary records per student

Promotion & Class Reassignment

Preview-then-commit promotion between academic years, with marks-based or random auto-fill.

  • Preview computes each student's next grade and a same-class/medium carryover suggestion
  • Distribute-by-marks or assign-randomly bulk-assist per grade group
  • Every assignment individually overridable before commit
  • Nothing visible until the target year is separately flipped to current

Timetable

A config → build → review → publish pipeline, one class at a time.

  • Timetable Settings, Grade Sections, Classrooms, and Subject Period Requirements
  • Grid editor with clash/availability/requirement validation
  • Submit for Review → Section Head Approve/Reject → Publish
  • Revise a published timetable into a new chained draft

Notifications

In-app notifications with role-scoped recipient targeting and a per-user Notification Center.

  • Shared composer for admins and teachers, scoped server-side by role
  • Recipient rules: Everyone, By Grade, By Class, By Grade Section, By Subject, or a specific person
  • Send now or save as draft
  • Notification Center with Unread/Read/Archived tabs and search

Reports & Analytics

PDF report export and an aggregate analytics dashboard.

  • PDF export: Attendance and Marks templates, admin-only
  • Analytics dashboard: enrollment, attendance trends, performance, notification and timetable stats
  • Rendered as stat tiles and lightweight charts, no charting library dependency

Automation & Watchers

Five background agents that watch for data issues and keep the database backed up, without sitting on any request's critical path.

  • Five agents covering structural integrity, people compliance, academic delivery, security auditing, and system health/backups
  • Each agent runs several checks concurrently, from statistical audit-log anomaly detection to attendance-compliance tracking
  • Findings surface as dismissible banners on the relevant admin page, plus a central Automation panel
  • Every agent independently toggleable except System Health, which is always on
  • Runs on its own schedule or via an admin-triggered "Run now" - never as part of a page load

Ready to see it running?

Stand up a fresh instance with the Setup Walkthrough.

Setup Walkthrough