Skip to content

CreativeLabs-LMS/platform

Repository files navigation

CLabs LMS

License: AGPL v3 Live demo

Production-ready, open-source adaptive maths platform for UK primary schools (Years 1–6). Self-host on your own infrastructure — schools keep full control of pupil data.

Repository: github.com/CreativeLabs-LMS/platform · Live demo: lms.creativelabs.app · Project site: creativelabs.app

Preview

CreativeLabs Math mascot Children enjoying maths practice Study online illustration

Illustrations from the project website — interactive modules include fraction walls, place-value blocks, MTC drills, and more.

Stack

Layer Technology
Frontend React 18 + TypeScript + Vite
Canvas Konva.js (clock module)
Drag & Drop @dnd-kit/core
Backend Go 1.26 + Gin
Database PostgreSQL 16
Cache Redis 7
Deployment Docker Compose + Helm 3

Quick Start (Docker)

git clone https://github.com/CreativeLabs-LMS/platform.git
cd platform
docker compose up --build

Demo Accounts

Select Maple Grove Demo School on the login screen. Full credential tables in docs/development.md.

Role Username Credential
Pupil alex.j PIN 123456
Teacher jsmith teacher123
IT Admin admin teacher123

Contribute

Local Development

Backend

cd backend
export DATABASE_URL=postgres://maths:maths_dev_password@localhost:5432/maths_lms?sslmode=disable
export REDIS_URL=redis://localhost:6379/0
export JWT_SECRET=dev-jwt-secret-change-in-production-min-32-chars
go run ./cmd/server

Frontend

cd frontend
npm install
npm run dev

Start PostgreSQL and Redis via docker compose up postgres redis.

Features Implemented

Curriculum Modules (13 interactive components)

  • Base 10 / Place Value Blocks
  • Fraction Wall
  • Number Line Estimator
  • Column Method (addition & subtraction)
  • Long Multiplication
  • BODMAS Sequencer
  • Times Tables Rapid Recall
  • Analog Clock (Konva canvas)
  • Shape Classification Matrix (Carroll diagram)
  • Perimeter & Area Grid
  • Live Graph Builder
  • Pictogram Builder
  • Fraction Visualiser

Backend Services

  • JWT auth (8h pupil / 2h staff + refresh tokens)
  • Account lockout after 5 failed attempts
  • Adaptive engine with EMS scoring (SM-2 hybrid)
  • Spaced repetition queue composition (40/30/20/10 split)
  • Persistent struggle detection + teacher alerts
  • All REST API endpoints (/api/v1/...)
  • Prometheus metrics at /metrics
  • Health checks at /healthz and /readyz

Dashboards

  • Pupil practice session with progress bar
  • Constellation badge map + skill progress
  • Teacher class overview with EMS table
  • Individual pupil drill-down
  • Teacher intervention alerts

Kubernetes Deployment

Build, push, and install (production)

Private registry on the cluster (localhost:32000 from nodes). Set REGISTRY_PUSH in the Makefile to your build host (see make push).

# Build images and push to registry
make push

# Deploy to Kubernetes (ingress: https://lms.creativelabs.app)
make helm-install

Or in one step:

make all

Production settings: copy helm/values-prod.yaml.example to helm/values-prod.yaml and set your domain, registry, and secrets. Override at deploy time:

make helm-install VERSION=5.0.1 NAMESPACE=lms

Manual Helm install

helm upgrade --install lms ./helm \
  -f helm/values.yaml \
  -f helm/values-prod.yaml

Access at https://lms.creativelabs.app (point DNS to your ingress controller).

Tests

make test                 # backend (go test) + frontend (vitest)
cd backend && go test ./...
cd frontend && npm test

Backend tests cover adaptive EMS, validation (all 17 UI types), auth/JWT, middleware, MTC assessment, generators, and admin role checks.

Security & Privacy

Project Structure

platform/
├── backend/           Go API + adaptive engine
├── frontend/          React SPA + module registry
├── website/           Marketing site + privacy + contribute pages
├── migrations/        PostgreSQL schema + demo seed data
├── helm/              Kubernetes Helm chart
├── docker-compose.yml Local development stack

Documentation

See the docs/ folder:

License

Licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).

You may use, modify, and self-host this software freely. If you run a modified version as a network service, you must release your source code under the same license. Commercial relicensing is not permitted without written permission from the copyright holders.