A complete course-selling and learning-management platform inspired by modern course marketplaces. It includes a public course marketplace, paid enrollment, learner classroom, instructor studio, administrator console, analytics, coupons, quizzes, progress tracking, certificates, live-session scheduling, Docker deployment, migrations, seed data and automated tests.

This repository is an enterprise-ready reference implementation and strong production starter. The included checkout uses a mock payment provider and lesson videos use URL-based placeholders. Connect a real gateway such as Razorpay/Stripe and a secure video provider before accepting production payments.
- Frontend: React 19, TypeScript, Vite, React Router, Axios, Lucide icons
- Backend: FastAPI, SQLAlchemy 2, Pydantic Settings, JWT, Argon2
- Database: SQLite locally; PostgreSQL through Docker/production configuration
- Infrastructure: Alembic migrations, Docker Compose, Nginx, health endpoint
- Quality: Ruff, Pytest, strict TypeScript, production Vite build
- Responsive landing page and course catalogue
- Keyword search, category/level filters and sorting
- Course details, curriculum preview, outcomes and requirements
- Instructor profile, ratings and learner counts
- Coupon-based checkout and wishlist
- Public content controlled by administrator settings
- Registration and secure JWT login
- Purchased-course library
- Structured classroom with sections and lessons
- Video/article/resource lesson support
- Lesson completion and saved progress
- Quizzes and pass/fail attempts through API
- Reviews restricted to enrolled learners
- Automatic completion certificate code
- Wishlist and order-backed enrollment
- Instructor registration and role workspace
- Revenue, course and learner analytics
- Draft course creation and pricing
- Curriculum builder for sections and lessons
- Video, article, resource and preview lesson types
- Quiz creation API
- Live-session scheduling API
- Course submission for administrator moderation
- Platform KPI dashboard and gross revenue
- User activation, role and verification APIs
- Course review, approval, rejection and featured controls
- Category management
- Coupon and campaign management
- Order and payment visibility
- Storefront hero, announcement and support settings
- Audit-log persistence for sensitive actions
The database includes 18 application tables plus Alembic metadata:
users, categories, courses, sections, lessons, enrollments, lesson_progress, coupons, orders, order_items, reviews, wishlists, quizzes, questions, quiz_attempts, live_sessions, site_settings, and audit_logs.
eduforge-lms-enterprise/
├── backend/
│ ├── app/
│ │ ├── api/ # Auth, public, student, instructor and admin APIs
│ │ ├── core/ # Configuration and security
│ │ ├── db/ # SQLAlchemy engine/session
│ │ ├── models/ # Enterprise LMS entities
│ │ ├── schemas/ # Validated request schemas
│ │ ├── services/ # Serializers/domain helpers
│ │ ├── main.py # FastAPI application
│ │ └── seed.py # Demonstration data
│ ├── alembic/ # Database migration
│ ├── tests/ # End-to-end API workflow
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── components/ # Layout, guards, cards and dashboard shell
│ │ ├── context/ # Authentication state
│ │ ├── pages/ # Marketplace and all role workspaces
│ │ ├── api.ts
│ │ ├── types.ts
│ │ └── styles.css
│ ├── Dockerfile
│ ├── nginx.conf
│ └── package.json
├── docs/
├── scripts/
└── docker-compose.yml
| Role | Password | |
|---|---|---|
| Student | student@eduforge.com |
Student123! |
| Instructor | instructor@eduforge.com |
Instructor123! |
| Administrator | admin@eduforge.com |
Admin123! |
These credentials are seed data only. Change or remove them before production deployment.
Requirements: Python 3.11+ and Node.js 20+.
Set-ExecutionPolicy -Scope Process Bypass
.\scripts\setup-windows.ps1Start the API:
.\scripts\start-backend.ps1Start the frontend in a second PowerShell window:
.\scripts\start-frontend.ps1./scripts/setup-unix.sh
./scripts/start-backend.shIn another terminal:
./scripts/start-frontend.sh- Storefront:
http://localhost:5173 - Student dashboard:
http://localhost:5173/student - Instructor studio:
http://localhost:5173/instructor - Administrator panel:
http://localhost:5173/admin - API documentation:
http://localhost:8000/docs - Health endpoint:
http://localhost:8000/health
docker compose up --buildOpen http://localhost:8080.
Docker starts PostgreSQL, runs the Alembic migration, starts FastAPI, builds the React frontend and serves it with Nginx.
cd backend
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
alembic upgrade head
uvicorn app.main:app --reloadcd frontend
npm install
cp .env.example .env
npm run devBackend:
cd backend
.venv/bin/ruff check app tests
.venv/bin/pytest -qFrontend:
cd frontend
npm run build
npm audit --omit=devBackend .env:
SECRET_KEY=replace-with-at-least-64-random-characters
DATABASE_URL=sqlite:///./eduforge.db
CORS_ORIGINS=http://localhost:5173,http://localhost:8080
ENVIRONMENT=development
SEED_DEMO_DATA=trueFrontend .env:
VITE_API_URL=http://localhost:8000/api/v1The source isolates the places where production services belong. Before a real launch, connect:
- Razorpay, Stripe or another payment gateway with signed webhooks
- Object storage such as S3/R2 and signed upload URLs
- Secure video streaming such as Mux, Vimeo OTT or Cloudflare Stream
- Transactional email and notification queues
- Redis caching/rate limiting and background workers
- Search engine for a very large catalogue
- Observability, centralized logs, alerting and secrets management
- Tax invoices, refunds and regional compliance rules
See docs/ARCHITECTURE.md and docs/SECURITY.md.