Skip to content

Get started ​

edtech4good is an open-source, offline-first learning management system for classrooms with unreliable or no internet. A cloud LMS holds curriculum, accounts and reporting. A classroom server, usually a Raspberry Pi on the school network, serves lessons to tablets with no internet required. A learner app runs on the tablets in Khmer and English. Content syncs down from the cloud to the classroom server, and student progress syncs back up when a connection is available.

Three doors ​

  • Run it on your laptop. Get the API, UI and learner app running locally to explore the code or develop a change. See Local development.
  • Host it for a school or programme. Stand up the cloud API, the classroom server and the web UI for real use. See Self-hosting.
  • Understand how the pieces fit. Read the system overview, the sync flows and the ports and repos involved. See Architecture.

What you need ​

  • Node 22
  • MySQL 8
  • Docker, for the hosted path
  • An S3-compatible object store for media. This is optional for a first local run; see Object storage.

Where the code is ​

  • edtech-lms-api is the central cloud API: schools, users, curriculum, quiz content and student logs.
  • edtech-lms-rpi-api is the classroom API that runs on a Raspberry Pi or any Linux box on the school network. It serves lessons and records progress locally.
  • edtech-lms-ui is the Angular admin, teacher and student web UI that talks to the central API.
  • edtech-expo is the Expo learner app, in Khmer and English, for Android, iOS and the web from one codebase.

Documentation under CC BY 4.0. Code under AGPL-3.0-only.