lms-front
Health Pass
- License — License: MIT
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Community trust — 19 GitHub stars
Code Warn
- network request — Outbound network request in .agents/skills/ai-elements/scripts/audio-player.tsx
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Open-source multi-tenant LMS for creators and schools: sell courses on your own subdomain. Next.js 16 + React 19 + Supabase (RLS) + Stripe Connect, an AI tutor over MCP, gamification, certificates, i18n (en/es). Self-hostable.
LMS Platform
Open-source, multi-tenant LMS for creators and schools. Every school gets its own subdomain (school.platform.com), its own branding, and its own students. Educators build courses and sell them; students enroll, learn, take exams, and earn verifiable certificates.
Live instance: preciopana.com · Setup: docs/GETTING_STARTED.md · Contribute: CONTRIBUTING.md
Stack: Next.js 16 · React 19 · TypeScript · Supabase (Postgres + Auth + RLS) · Shadcn UI (base-mira) · Tailwind CSS v4 · Stripe Connect · next-intl (en/es)
What's in it
| Multi-tenancy | Subdomain-per-school, tenant theming, per-tenant roles — one deployment, many schools. Isolation is enforced in Postgres with Row Level Security, not in application code. |
| Courses | Block-editor lessons with rich MDX components, exercises, checkpoints, exams with AI-assisted grading, progress tracking, FSRS spaced repetition. |
| Payments | Stripe Connect (platform fee + revenue split), PayPal, Lemon Squeezy, Solana, Binance, and manual/offline receipts for markets where cards fail. Provider-agnostic contract — adding one is a single module. |
| Monetization | One-off products, subscriptions, plan-based feature gating, payouts, invoices, revenue dashboard. Separate platform billing for schools paying you. |
| AI tutor | An MCP server (mcp-server/) exposing the LMS as tools + interactive widgets: drill practice, weak-topic remediation, exam readiness, ask-a-teacher. Works from any MCP client, auth'd via Supabase OAuth 2.1 with RLS intact. |
| Engagement | XP, levels, streaks, achievements, challenges, weekly leagues, coin store, certificates with public verification, community spaces with polls and moderation. |
| Creator tools | AI landing-page generation, drag-and-drop page builder, guided onboarding, guided tours. |
| i18n | Full English + Spanish across the app, built for LATAM and English-speaking markets. |
Self-host it, fork it for your own school, or use it as a reference for multi-tenant Supabase + Next.js patterns. MIT licensed.
Prerequisites
- Node.js 20+
- Docker (required for local Supabase)
- Supabase CLI
- Stripe CLI (optional — only for testing webhooks locally)
Quick Start
Clone and install
git clone https://github.com/guillermoscript/lms-front.git cd lms-front npm installConfigure environment
cp .env.example .env.localFor local Supabase, set these four. Run
supabase status(after step 3) and copy its Publishable and Secret keys — they are local-only dev keys, the same on every machine:NEXT_PUBLIC_SUPABASE_URL=http://127.0.0.1:54321 NEXT_PUBLIC_SUPABASE_PUBLISHABLE_OR_ANON_KEY=<Publishable key from `supabase status`> SUPABASE_SERVICE_ROLE_KEY=<Secret key from `supabase status`> NEXT_PUBLIC_PLATFORM_DOMAIN=lvh.me:3000Start local Supabase (requires Docker)
supabase start npm run db:reset # applies all migrations + seeds tenants, users, courses, productsRun the dev server
npm run devOpen the app at
http://lvh.me:3000— notlocalhostTenant resolution reads the subdomain;
lvh.meresolves*.lvh.meto127.0.0.1. Onlocalhostno tenant resolves and authenticated pages bounce to/join-school.http://lvh.me:3000— Default School (free plan)http://code-academy.lvh.me:3000— Code Academy Pro (enterprise plan)
Log in with a seeded account (all passwords
password123), on the subdomain matching its tenant:Email Tenant Role [email protected]Default School ( lvh.me:3000)student [email protected]Default School ( lvh.me:3000)admin + super admin [email protected]Code Academy ( code-academy.lvh.me:3000)admin [email protected]Code Academy ( code-academy.lvh.me:3000)student Local-dev credentials only — seeded by
npm run db:reset.
Full walkthrough — seed contents, migrations, tests, optional services, troubleshooting: docs/GETTING_STARTED.md.
npm Scripts
| Script | Command |
|---|---|
npm run dev |
Start dev server |
npm run build |
Production build (TypeScript + lint) |
npm run lint |
Run ESLint |
npm run typecheck |
tsc --noEmit |
npm run test:unit |
Vitest unit tests |
npm test |
Playwright E2E tests (dev server must already be running) |
npm run db:reset |
Reset local DB (migrations + seed) |
npm run db:push |
Push migrations to cloud Supabase |
npm run db:types |
Regenerate lib/database.types.ts |
npm run mcp:build |
Build the MCP server sub-project |
Documentation
docs/GETTING_STARTED.md— full local setup guide: env, seed data, migrations, tests, troubleshootingCLAUDE.md— architecture reference for AI agents and developersdocs/DATABASE_SCHEMA.md— complete DB schemadocs/AUTH.md— authentication flowsdocs/MONETIZATION.md— billing and paymentsdocs/MCP_SETUP.md— the MCP server and AI tutor tooling
More in docs/ — deployment, i18n, gamification, community spaces, the landing-page builder.
Contributing
Contributions are welcome — bug reports, translations, docs fixes, new payment providers, features.
- Read
CONTRIBUTING.mdfor the workflow and what reviewers look for - Browse
good first issueandhelp wanted - Questions and ideas: Discussions
- Found a vulnerability?
SECURITY.md— please report it privately - By participating you agree to the Code of Conduct
License
MIT — free to self-host, fork, and build a business on.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found