Paideia LMS
[!IMPORTANT] This project is in active development and is not yet ready for production use.
[!NOTE] We're looking for contributors and sponsors. If you're interested in helping build a modern alternative to traditional LMS platforms, we'd love to hear from you.
A lightweight Learning Management System built with Bun and React Router v7. Deploys as a single executable.

What is Paideia?
Paideia LMS is a modern alternative to platforms like Moodle. It's built with modern web tech, focuses on simplicity and performance, and packages everything into a single binary.
Features:
- Course management (assignments, quizzes, content, grading)
- User management with role-based access control
- Payment integration
- Version control and change tracking
- RESTful API
- Import from Moodle, Canvas, and other LMS platforms
Architecture:
- Single executable deployment
- Lightweight and fast
- No dynamic plugins (everything built-in)
- Designed for server deployments, not serverless
- Built with Bun, React Router v7, and TypeScript
Paideia LMS is free and non-profit forever. We welcome sponsors and donations to support development.
Documentation
Full docs at docs.paideialms.com
Installation
See docker-compose.yml and docker-compose.paideia.yml for configuration details.
Quick start:
docker compose -f docker-compose.yml -f docker-compose.paideia.yml up -d
Access:
- Frontend: http://localhost:3000
- Backend: http://localhost:3001
- VaultS3 Dashboard: http://localhost:9000/dashboard/
Binary installation: Download from GitHub Releases and configure environment variables as shown in the docker-compose files.
Or use the install script:
curl -sSL https://raw.githubusercontent.com/paideia-lms/paideia/main/scripts/install.sh | bash
See apps/paideia/server/env.ts for environment variable documentation.
Development
Start infrastructure services:
docker compose up -d
Or use the dev script:
bun dev
This starts PostgreSQL (localhost:5432), VaultS3 (localhost:9000), Drizzle Gateway (localhost:4983), and the app (localhost:3000).
The project uses two docker compose files:
docker-compose.yml- Infrastructure services (PostgreSQL, VaultS3, Drizzle Gateway)docker-compose.paideia.yml- Paideia application
This keeps the app container separate during development so you can run it locally with bun dev for hot-reloading.
Production
Build:
bun run build
Run:
bun start
Releasing
- Update version in
apps/paideia/package.json - Commit and push:
git add apps/paideia/package.json git commit -m "chore: bump version to X.X.X" git push origin main - Create and push a git tag:
git tag vX.X.X git push origin vX.X.X
The GitHub Actions workflow will build binaries and Docker images automatically. Check progress in the Actions tab.
Building Linux Binary
The Linux binary must be built in a Linux environment. Use the Docker build environment:
bun run docker:build-binary
bun run docker:builder-shell
# Inside container:
bun scripts/build-linux.ts
# Exit container, then:
bun run docker:copy-binary
Or if you have a Linux machine:
bun run build:linux
Build the Docker image:
docker build -t paideia:latest apps/paideia
Run with environment variables:
docker run -d --name paideia -p 3000:3000 -p 3001:3001 --env-file .env paideia:latest
Tech Stack
- Bun - Runtime and bundler
- React Router v7 - React framework
- Elysia - Web framework
- TypeScript - Type safety
- Payload CMS - Headless CMS
- Mantine - UI components
Development tools: Biome, Lefthook
Contributing
Contributions welcome! This is a community-driven project built with modern development practices.
Acknowledgements
Paideia LMS builds on the work of many open-source projects. We are grateful to:
- Bun — JavaScript runtime and bundler
- PostgreSQL — Database
- Payload CMS — Headless CMS
- React Router — React framework
- VaultS3 — Lightweight S3-compatible object storage used for media and file uploads
License
Paideia LMS is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
- Free and open source
- Schools can use without restrictions
- Modifications must be shared
- All forks must use AGPL-3.0
- We discourage commercial hosting of this software for schools as a paid service
If you're interested in commercial partnerships that align with our mission, reach out to discuss.