Last updated

LMS

Mirrored from iblai/lms ยท README.md. This page is generated โ€” edit it in the repository, not here.

Open-source skills intelligence platform โ€” discover courses, track competencies, earn credentials, and accelerate workforce development.

Next.js React TypeScript Tailwind CSS Tauri

Features โ€ข Quick Start โ€ข Deployment โ€ข Architecture โ€ข Configuration โ€ข Contributing

Deployed at lms.ibl.ai

โฌ‡๏ธ Get Agentic LMS

Use it on the Web Download for macOS Download for Windows

Download for iOS Download for Android

Windows ARM64 ยท older builds ยท Linux โ†’ all downloads


AGENTS.md

Agent-facing guidance for AI assistants (Claude Code, Cursor, etc.) lives in AGENTS.md. It covers prettier formatting, the --no-verify ban on git pushes, and the e2e coverage maintenance protocol. CLAUDE.md is a symlink to AGENTS.md.

Skill files referenced from AGENTS.md:


What is LMS?

LMS is a production-ready learning and skills management platform that connects learners with courses, tracks competency growth, issues credentials, and delivers actionable analytics. It ships as a modern web application backed by a powerful multi-tenant API with integrated LMS and AI mentor capabilities.

Whether you're an enterprise building an internal upskilling program, a university offering online courses, or an EdTech startup creating a branded learning marketplace โ€” LMS gives you the complete stack out of the box.


Features

Course Discovery & Enrollment

  • Faceted search โ€” filter courses by subject, difficulty, skills, credential type, and content type
  • Personalized recommendations โ€” AI-powered course suggestions based on learner profile and goals
  • Course detail pages โ€” rich metadata with syllabus, learning outcomes, instructor bios, and prerequisites
  • Flexible enrollment โ€” self-enrollment, invitation-only, and Stripe-powered paid courses
  • EdX LMS integration โ€” embedded course content, progress tracking, and grading via iframe

Skills & Competency Tracking

  • Skill inventory โ€” track earned skills with proficiency levels (0โ€“5 scale)
  • Skill points โ€” accumulate points from course and unit completions
  • Skill leaderboards โ€” compare mastery across learners and cohorts
  • Self-reported skills โ€” onboarding flow for learners to declare existing competencies
  • Skills-to-course mapping โ€” see which courses develop which skills

Credentials & Badges

  • Digital credentials โ€” earn and display certificates, badges, and micro-credentials
  • Credential verification โ€” issuer metadata, expiration tracking, and sharing
  • Course-linked credentials โ€” automatic credential issuance on course completion

Programs & Learning Pathways

  • Multi-course programs โ€” structured program enrollments with progress tracking
  • Curated pathways โ€” guided learning sequences toward specific career goals
  • Program management โ€” pricing, enrollment windows, and custom metadata
  • Pathway creation โ€” build and share custom pathways for teams or organizations

Learner Profile & Analytics

  • Activity dashboard โ€” courses enrolled, courses completed, skills acquired, time spent
  • Time-spent charts โ€” daily/weekly learning activity visualization
  • Public profile โ€” shareable learner profile with education, experience, and credentials
  • Resume builder โ€” education history, work experience, and portfolio links

Analytics (Admin)

  • Overview dashboard โ€” platform-wide usage stats and engagement metrics
  • User analytics โ€” per-learner activity and cohort trends
  • Topic analysis โ€” most popular subjects and content breakdowns
  • Transcript viewer โ€” searchable session and activity logs
  • Financial reporting โ€” revenue tracking and billing analytics
  • Custom reports โ€” generate and download data exports

Enterprise & Platform

  • Multi-tenancy โ€” full tenant isolation with per-org configuration, branding, and user management
  • Role-based access control (RBAC) โ€” granular permissions with roles, policies, and group-based access
  • SSO authentication โ€” Single Sign-On with configurable identity providers
  • Stripe billing โ€” paid courses, subscription management, and checkout flows
  • Notifications โ€” in-app notification system with alert templates
  • White-labeling โ€” custom themes, logos, and advanced CSS per tenant
  • AI mentor sidebar โ€” embedded conversational AI assistant for learner support
  • Configurable onboarding โ€” skill self-assessment and profile setup flows

Tech Stack

LayerTechnology
FrameworkNext.js 15, React 19, TypeScript 5.9
StylingTailwind CSS 4, Radix UI, shadcn/ui
StateRedux Toolkit, React-Redux
FormsReact Hook Form, TanStack Form, Zod
ChartsRecharts
AnimationFramer Motion
PDFreact-pdf, pdfjs-dist
DesktopTauri 2 (Windows, macOS, Linux, iOS, Android shell)
TestingVitest, Testing Library, Playwright
SDK@iblai/iblai-js โ€” unified data layer, components, and utilities

Quick Start

Prerequisites

  • Node.js 25.3.0+ (we recommend using nvm)
  • pnpm 10+ โ€” npm install -g pnpm

1. Clone the repository

git clone https://github.com/iblai/lms.git
cd lms

The repo is named lms; the application inside is LMS.

2. Install dependencies

pnpm install

3. Configure environment

cp .env.example .env.local

Edit .env.local with your ibl.ai platform URLs and feature flags โ€” see Configuration โ€บ Environment Variables for the full reference.

4. Start the dev server

pnpm dev

Open http://localhost:3000 in your browser.

Node.js 25+ note: The dev script already includes NODE_OPTIONS='--no-experimental-webstorage' to prevent conflicts with the SDK's browser storage guards. If you customize the script, keep that flag.

Tests

pnpm test            # vitest unit tests
pnpm test:coverage   # unit tests with coverage report
pnpm test:e2e        # playwright e2e suite (headless)
pnpm test:e2e:ui     # playwright UI mode
pnpm test:e2e:headed # playwright in a headed browser

Playwright auth fixtures live under e2e/. Coverage tracking (e2e/coverage.json + e2e/COVERAGE.md) is enforced by the pre-push hook โ€” see .claude/skills/e2e-coverage.md.


Deployment

Docker

Build and run with Docker:

docker build -t lms .
docker run -p 3000:3000 --env-file .env.local lms

Standalone

pnpm build
pnpm start

pnpm start runs pnpm exec next start โ€” a standard Next.js production server. Deploy to any host with Node.js 25+ installed.

Desktop & Mobile (Tauri)

LMS ships with a Tauri 2 shell in src-tauri/ so the same Next.js bundle can be packaged as a native desktop app for Windows, macOS, and Linux, or a mobile app for iOS and Android.

There are no pnpm tauri:* scripts โ€” invoke the Tauri CLI directly from the src-tauri/ directory:

# desktop dev (hot reload)
cd src-tauri && cargo tauri dev

# desktop production build
cd src-tauri && cargo tauri build

# iOS / Android
cd src-tauri && cargo tauri ios init
cd src-tauri && cargo tauri android init

Requirements: Rust toolchain (rustup), plus platform-specific dependencies (Xcode for iOS, Android SDK + NDK for Android). See the Tauri prerequisites guide.


Architecture

lms/
โ”œโ”€โ”€ app/                          # Next.js App Router
โ”‚   โ”œโ”€โ”€ home/                     # Learner dashboard
โ”‚   โ”œโ”€โ”€ discover/                 # Course discovery & search
โ”‚   โ”œโ”€โ”€ recommended/              # Personalized recommendations
โ”‚   โ”œโ”€โ”€ courses/[course_id]/      # Course details & enrollment
โ”‚   โ”œโ”€โ”€ course-content/           # EdX LMS integration (iframe)
โ”‚   โ”‚   โ””โ”€โ”€ [course_id]/          # Course, progress, bookmarks, forums
โ”‚   โ”œโ”€โ”€ programs/[program_id]/    # Program enrollments
โ”‚   โ”œโ”€โ”€ profile/                  # Learner profile
โ”‚   โ”‚   โ”œโ”€โ”€ skills/               # Skills inventory
โ”‚   โ”‚   โ”œโ”€โ”€ credentials/          # Earned credentials
โ”‚   โ”‚   โ”œโ”€โ”€ courses/              # Enrollment history
โ”‚   โ”‚   โ”œโ”€โ”€ programs/             # Program enrollments
โ”‚   โ”‚   โ”œโ”€โ”€ pathways/             # Learning pathways
โ”‚   โ”‚   โ””โ”€โ”€ public/               # Shareable profile
โ”‚   โ”œโ”€โ”€ analytics/                # Admin analytics
โ”‚   โ”‚   โ”œโ”€โ”€ courses/              # Course-level analytics
โ”‚   โ”‚   โ”œโ”€โ”€ users/                # User-level analytics
โ”‚   โ”‚   โ”œโ”€โ”€ programs/             # Program analytics
โ”‚   โ”‚   โ”œโ”€โ”€ topics/               # Topic breakdowns
โ”‚   โ”‚   โ”œโ”€โ”€ transcripts/          # Activity transcripts
โ”‚   โ”‚   โ”œโ”€โ”€ financial/            # Revenue & billing
โ”‚   โ”‚   โ”œโ”€โ”€ monetization/         # Monetization metrics
โ”‚   โ”‚   โ””โ”€โ”€ reports/              # Custom analytics reports
โ”‚   โ”œโ”€โ”€ notifications/            # Notification center
โ”‚   โ”‚   โ””โ”€โ”€ [notificationId]/     # Notification detail
โ”‚   โ”œโ”€โ”€ reports/[tenantKey]/      # Per-tenant reports
โ”‚   โ”œโ”€โ”€ start/                    # Onboarding flow
โ”‚   โ”œโ”€โ”€ sso-login/                # SSO authentication
โ”‚   โ”œโ”€โ”€ sso-login-complete/       # SSO completion handler
โ”‚   โ”œโ”€โ”€ error/[code]/             # Error pages
โ”‚   โ””โ”€โ”€ version/                  # App version info
โ”‚
โ”œโ”€โ”€ components/                   # React components
โ”‚   โ”œโ”€โ”€ ui/                       # 52 shadcn/ui primitives
โ”‚   โ”œโ”€โ”€ header/                   # Navigation & user profile
โ”‚   โ”œโ”€โ”€ profile/                  # Profile cards (education, experience, skills)
โ”‚   โ”œโ”€โ”€ edx-iframe/               # LMS content embedding
โ”‚   โ”œโ”€โ”€ onboarding/               # Setup wizard slides
โ”‚   โ”œโ”€โ”€ chat/                     # Chat / mentor UI
โ”‚   โ””โ”€โ”€ ...                       # Feature components (course cards, dialogs, skeletons)
โ”‚
โ”œโ”€โ”€ hooks/                        # 58 custom React hooks
โ”‚   โ”œโ”€โ”€ courses/                  # Course data, enrollment, navigation
โ”‚   โ”œโ”€โ”€ profile/                  # Profile stats, time spent, pathways
โ”‚   โ”œโ”€โ”€ skills/                   # Skill tracking & reporting
โ”‚   โ”œโ”€โ”€ discover/                 # Search & filtering
โ”‚   โ”œโ”€โ”€ search/                   # Catalog search & personalization
โ”‚   โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ features/                     # Feature modules (state + logic)
โ”‚   โ”œโ”€โ”€ mentor/                   # AI mentor sidebar
โ”‚   โ”œโ”€โ”€ rbac/                     # Role-based access control
โ”‚   โ””โ”€โ”€ tenant/                   # Multi-tenant context
โ”‚
โ”œโ”€โ”€ services/                     # API service definitions
โ”œโ”€โ”€ types/                        # TypeScript interfaces
โ”œโ”€โ”€ config/                       # Runtime configuration
โ”œโ”€โ”€ providers/                    # React context providers
โ”œโ”€โ”€ lib/                          # Utilities
โ”œโ”€โ”€ styles/                       # Global CSS
โ”œโ”€โ”€ src-tauri/                    # Tauri desktop / mobile shell
โ”œโ”€โ”€ e2e/                          # Playwright e2e suite + coverage tracking
โ”œโ”€โ”€ docs/                         # Project docs ([theme-customization.md](docs/theme-customization.md))
โ””โ”€โ”€ public/                       # Static assets

Data Flow

User โ†’ React Components โ†’ Custom Hooks โ†’ Redux (RTK Query) โ†’ ibl.ai API
                                              โ†“
                                        @iblai/iblai-js SDK
                                        โ”œโ”€โ”€ /data-layer  (API slices, reducers)
                                        โ”œโ”€โ”€ /web-utils   (auth, providers, tenant hooks)
                                        โ””โ”€โ”€ /web-containers (shared UI components)

The app uses @iblai/iblai-js as its unified SDK, which bundles the data layer, authentication utilities, and shared components under a single package.


Configuration

Environment Variables

All app config is NEXT_PUBLIC_* (exposed to the browser). Defaults below match .env.example.

VariableRequiredDefaultDescription
NODE_ENVNodevelopmentNode environment
NEXT_PUBLIC_API_BASE_URLYeshttps://api.iblai.appBase API URL โ€” /dm, /axd, /lms, /studio are derived from this
NEXT_PUBLIC_LMS_URLYeshttps://learn.iblai.appEdX LMS host
NEXT_PUBLIC_DM_URL_TESTNoOverride DM URL for testing
NEXT_PUBLIC_AUTH_URLYeshttps://login.iblai.appAuthentication service URL
NEXT_PUBLIC_MFE_URLYeshttps://apps.learn.iblai.appOpen edX micro-frontends host
NEXT_PUBLIC_SPA_ANALYTICS_URLNohttps://analytics.iblai.appAnalytics SPA URL
NEXT_PUBLIC_MENTOR_URLNohttps://mentorai.iblai.appAI mentor service URL
NEXT_PUBLIC_PLATFORM_BASE_DOMAINNoTenant subdomain root
NEXT_PUBLIC_SUPPORT_EMAILNosupport@ibl.aiSupport contact email
NEXT_PUBLIC_COPYRIGHTNoFooter copyright string
NEXT_PUBLIC_HIDE_RECOMMENDED_TABNofalseHide the recommendations page
NEXT_PUBLIC_COURSE_ELIGIBILITY_ENABLEDNofalseEnable enrollment prerequisite checks
NEXT_PUBLIC_ENABLE_COURSE_ELIGIBILITY_LICENSE_CHECKNofalseGate eligibility on license status
NEXT_PUBLIC_ENABLE_START_ROLENofalseEnable onboarding skill self-assessment
NEXT_PUBLIC_ENABLE_MENTORNotrueEnable embedded AI mentor sidebar
NEXT_PUBLIC_ENABLE_GRAVATAR_ON_PROFILE_PICNotrueUse Gravatar for profile pictures
NEXT_PUBLIC_ENABLE_RBACNofalseEnable role-based access control
NEXT_PUBLIC_USE_FOOTER_MENUSNofalseEnable custom footer navigation
NEXT_PUBLIC_ENABLE_COMBINED_RECOMMENDATION_REPORTNofalseAggregate recommendation reports
NEXT_PUBLIC_DISCOVER_FACETS_FILTERS_TO_HIDENoComma-separated list of discover facets to hide
NEXT_PUBLIC_FOOTER_MENUSNoJSON array of footer menu items
NEXT_PUBLIC_DEFAULT_EMBEDDED_MENTOR_NAMENomentorAIDefault mentor identifier
NEXT_PUBLIC_COMBINED_RECOMMENDATION_REPORTSNoCombined recommendation reports config

Theming

Brand colors, fonts, and theme override entrypoints are documented in docs/theme-customization.md. Tenant-specific theming lives in tenant metadata.

Feature Flags

Feature flags are set via NEXT_PUBLIC_* environment variables and control which features are visible at runtime:

  • Onboarding flow โ€” NEXT_PUBLIC_ENABLE_START_ROLE=true
  • AI mentor โ€” NEXT_PUBLIC_ENABLE_MENTOR=true
  • RBAC โ€” NEXT_PUBLIC_ENABLE_RBAC=true
  • Course eligibility โ€” NEXT_PUBLIC_COURSE_ELIGIBILITY_ENABLED=true
  • Recommendations tab โ€” NEXT_PUBLIC_HIDE_RECOMMENDED_TAB=false
  • Skill leaderboard โ€” configured via tenant metadata (isSkillsLeaderBoardEnabled)

Scripts

ScriptDescription
pnpm devStart dev server (port 3000)
pnpm buildProduction build
pnpm startStart production server (next start)
pnpm lintESLint with auto-fix + typecheck
pnpm typecheckTypeScript type checking
pnpm formatFormat with Prettier
pnpm testUnit tests (Vitest)
pnpm test:coverageUnit tests with coverage report
pnpm test:e2ePlaywright e2e suite (headless)
pnpm test:e2e:uiPlaywright UI mode
pnpm test:e2e:headedPlaywright in a headed browser
pnpm releaseRelease via release-it
pnpm prepareHusky pre-commit / pre-push hook install

Tauri builds are not exposed as npm scripts โ€” run cargo tauri dev / cargo tauri build from src-tauri/ directly (see Deployment โ€บ Desktop & Mobile).


ibl.ai Platform

LMS is built on the ibl.ai platform. To use this app, you need access to an ibl.ai backend instance which provides:

  • Skills & Course API โ€” course catalog, enrollment, progress tracking, and skill management
  • EdX LMS โ€” course content delivery, grading, and certificate issuance
  • Authentication โ€” SSO, OAuth, JWT-based auth with multi-tenant support
  • Data Platform โ€” analytics, billing, user management, and notification services
  • AI Mentor API โ€” conversational AI for learner support (optional)

Visit ibl.ai to set up your backend or request a hosted instance.


Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to get started.

Before pushing, review AGENTS.md and the skill files under .claude/skills/ โ€” the pre-push hook runs build, lint, typecheck, unit tests, coverage, and e2e validation, and --no-verify is not an option.


Built With


Made with care by the ibl.ai team

Copyright ยฉ ibl.ai | support@iblai.zendesk.com