The open-source platform for digitising the day-to-day operations of Sri Lankan schools.
OpenSchool brings everyday school work into one system: student and staff records, classes, attendance, curriculum, timetables, marks, notifications, reports, and administration. It replaces paper records and disconnected tools with a single source of truth.
It is designed to be self-hosted. A school or public-sector organisation can run it on infrastructure it controls, which keeps student and administrative data under local control. It is released under the Apache License 2.0, with no licence fees and no vendor lock-in.
Status: OpenSchool is pre-1.0 and under active development. Interfaces and data models may change between releases. See the changelog.
- School setup: academic years, grades, classes, houses, and streams
- People: student, teacher, guardian, and non-academic staff records
- Attendance: daily student and staff attendance
- Academics: subjects, curriculum choices, term marks, and promotions
- Timetables: planning, review, and publishing
- Operations: in-app notifications, reports, dashboards, and automation checks
- Portals: separate interfaces for administrators, teachers, students, and parents
The feature guide describes each module in detail.
| Layer | Technology |
|---|---|
| Backend | Go, Gin |
| Frontend | React, TypeScript, Vite |
| Database | PostgreSQL |
| Identity and access | ThunderID |
The backend is a modular monolith: one application, one database, and clear feature modules. See the architecture guide for details.
Prerequisites: Go 1.25+, Node.js 18+ with pnpm, Docker with Docker Compose.
git clone https://github.com/openschool-org/openschool.git
cd openschool
make setup # start PostgreSQL and ThunderID, configure environment, install dependencies
make dev # run the backend (:8080) and the frontend (:5173)Open http://localhost:5173 and create the first administrator account.
make setup starts ThunderID with OpenSchool's resources preloaded, generates a client secret, and writes the .env files. To configure ThunderID by hand, see the ThunderID guide. For a step-by-step manual setup, see the setup guide.
| Document | Description |
|---|---|
| Setup | Run OpenSchool locally and set up a new school |
| ThunderID | Configure the identity provider |
| Features | What the system can do, by module |
| Architecture | Project structure and data model |
| Architecture decisions | Why key technical decisions were made |
| Changelog | Release history |
Contributions are welcome. Read CONTRIBUTING.md before opening an issue or pull request, and follow the Code of Conduct.
Do not report security issues in a public issue. Follow the process in SECURITY.md.
OpenSchool is licensed under the Apache License 2.0.