You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full-featured Learning Management System -- courses, quizzes, learning paths, certifications, SCORM, ILT, compliance training, gamification, discussions, analytics, and ratings.
EMP LMS is the learning management module of the EmpCloud HRMS ecosystem. It provides a course builder with drag-reorder modules and lessons, 7-type quiz engine with auto-grading, multi-course learning paths, certificate generation with PDF export, SCORM 1.2/2004 package support, video learning with progress tracking, instructor-led training (virtual and in-person), mandatory compliance training with due dates and overdue tracking, gamification with points/badges/leaderboards, course discussions and Q&A, ratings and reviews, AI-powered recommendations via OpenAI, a content marketplace, extended enterprise portals, and comprehensive analytics with CSV export.
Service worker caches app shell and API responses. Responsive UI. PWA manifest for installable experience.
Training Needs
Links to EMP Performance skills gap API for targeted course recommendations.
API Documentation
Health check endpoint. Full route documentation.
Tech Stack
Layer
Technology
Runtime
Node.js 20+
Backend
Express 5, TypeScript 5.7
Frontend
React 19, Vite 6, Tailwind CSS 3.4
Database
MySQL 8 via Knex.js (emp_lms database)
Queue
BullMQ + Redis 7
Auth
JWT (HS256), SSO via EmpCloud OAuth2
Validation
Zod 3.24
Testing
Vitest 2.1 (657 tests)
State
Zustand 5, TanStack React Query 5
Charts
Recharts 2.14
Email
Nodemailer + Handlebars templates (7 templates)
PDF
Puppeteer (certificate generation)
Monorepo
pnpm workspaces (3 packages)
Quick Start
Prerequisites
Node.js 20+
pnpm 9+
MySQL 8+
Redis 7+
EMP Cloud running (for SSO authentication)
Install & Run
# 1. Clone
git clone https://github.com/EmpCloud/emp-lms.git
cd emp-lms
# 2. Install dependencies
pnpm install
# 3. Start infrastructure
docker compose up -d # MySQL (3306), Redis (6379), Mailpit (8025/1025)# 4. Configure
cp .env.example .env # Edit DB credentials, JWT secret# 5. Run migrations & seed
pnpm run db:migrate
pnpm run db:seed
# 6. Start development
pnpm run dev # Server on :6021, Client on :5183
pnpm run dev # Start server + client concurrently
pnpm run dev:server # Server only (tsx watch)
pnpm run dev:client # Client only (vite dev)
pnpm run build # Build all packages
pnpm run test# Run all tests (657 passing)
pnpm run db:migrate # Run database migrations
pnpm run db:seed # Load sample data
pnpm run db:rollback # Rollback last migration
pnpm run docker:up # Start Docker services
pnpm run docker:down # Stop Docker services
Docker Deployment
# Build images
docker build -t emp-lms-server packages/server
docker build -t emp-lms-client packages/client
# Or use compose
docker compose up -d
Server: Node 20 Alpine + Chromium (for Puppeteer PDF generation), port 6021.
Client: Nginx Alpine serving Vite build, port 80 with SPA routing.