- Mentingo LMS Core Project
- Course Structure: Courses built from categories, modules and various lesson types
- Lesson Types: Supports text, video, presentation and quiz lessons
- Quiz Engine: Multiple-choice, single-choice, true/false, gap-filling, short/long text answers and image-based questions
- Price Configuration: Flexible setup for free and paid course access
- Progress Tracking: Automatic progress saving and course completion logic
- Daily Streak Tracking: Motivational system for tracking learning consistency
- Statistics & Insights: Detailed data on user engagement and learning results
- Admin Panel: Tools for managing users, courses, content and statistics
- User Roles: Separate experiences for students and administrators
- api: A NestJS backend application working as API
- web: A Vite Remix SPA
- reverse-proxy: For domains and https during development
- email-templates: A package for email templates
- eslint-config: A package for eslint configuration
- typescript-config: A package for typescript configuration
Before you begin, make sure you have:
- Node.js version 20.15.0 (stated in
.tool-versions)- We recommend using asdf for version management
- pnpm package manager
- Caddy v2.8.4
- Docker and Docker Compose
Run the automated setup script:
On macOS/Linux:
pnpm setup:unixOn Windows:
pnpm setup:winThe setup script will automatically:
- ✓ Verify all prerequisites and tool versions
- ✓ Configure Caddy for HTTPS development
- ✓ Install project dependencies
- ✓ Build shared packages
- ✓ Set up environment files (.env)
- ✓ Start Docker containers
- ✓ Run database migrations
- ✓ Seed the database with test data
Note
On Linux, Caddy needs permission to bind to port 443. The script will automatically handle this, but you may be prompted for your sudo password.
After setup completes, the following default accounts are available:
| Role | Password | |
|---|---|---|
| Admin | [email protected] | password |
| Student | [email protected] | password |
| Content Creator | [email protected] | password |
Note
The setup script creates a minimal production-like environment with only these three essential accounts.
Tip
If you need a populated environment with sample courses, lessons, and additional test users for development, you can run the development seed instead:
pnpm db:seedThis will create accounts:
| Role | Password | |
|---|---|---|
| Student | [email protected] | password |
| Student | [email protected] | password |
| Content Creator | [email protected] | password |
| Content Creator | [email protected] | password |
| Admin | [email protected] | password |
Note
All accounts are intended for development and testing purposes only.
To start all applications in development mode:
pnpm devAfter starting the development environment, you can access:
| Service | URL | Description |
|---|---|---|
| Web App | https://app.lms.localhost | Frontend application |
| API | https://app.lms.localhost/api | Backend API url |
| Swagger | https://api.lms.localhost/api | API documentation |
| Mailhog | https://mailbox.lms.localhost | Email testing interface |
- Format all files with Prettier
pnpm format
- Check if all files are formatted with Prettier
pnpm format:check
- Lint all files in the web app with ESLint
pnpm lint-tsc-web
- Lint all files in the api app with ESLint
pnpm lint-tsc-api
- Fix linting errors in the web app
pnpm lint-tsc-web --fix
- Fix linting errors in the api app
pnpm lint-tsc-api --fix
- Generate new migration:
pnpm db:generate
Important
After generating a migration:
- Change its name to something descriptive that explains what it does
- Make sure to update the migration name in
apps/api/src/storage/migrations/meta/_journal.jsonunder thetagkey
- Run migrations:
pnpm db:migrate
- Generate TypeScript API client based on Swagger specification:
pnpm generate:client
- Build email templates:
cd packages/email-templates pnpm build
Email templates are automatically built when starting the development server. To test emails, check the Mailhog interface at mailbox.lms.localhost.
-
Frontend tests:
-
Unit
pnpm test:web
-
E2E
bash test-e2e.sh
or
chmod +x test-e2e.sh ./test-e2e.sh
-
-
Backend tests:
pnpm test:api # Unit tests pnpm test:api:e2e # E2E tests
lms-core
├── apps
│ ├── api
│ │ ├── src
│ │ └── test
│ ├── reverse-proxy
│ └── web
│ ├── app
│ │ ├── api
│ │ ├── assets
│ │ ├── components
│ │ └── modules
│ └── e2e
└── packages
├── email-templates
├── eslint-config
├── shared
└── typescript-config
We welcome contributions to Mentingo! Please check our Contributing Guide for guidelines about how to proceed.
See Deployment Guide for more details.
This project was generated using Selleo LMS which is licensed under the MIT license.
Ready to scale your eLearning platform? Selleo will help with product-minded dev teams who are here to make it happen.

