https://github.com/selleo/mentingo
Learning Management System (LMS) build with react and node
https://github.com/selleo/mentingo
canvaslms education k12education learning lms moodle nodejs react
Last synced: 5 months ago
JSON representation
Learning Management System (LMS) build with react and node
- Host: GitHub
- URL: https://github.com/selleo/mentingo
- Owner: Selleo
- License: mit
- Created: 2024-08-01T10:17:21.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2025-07-14T08:32:35.000Z (12 months ago)
- Last Synced: 2025-07-14T09:15:50.227Z (12 months ago)
- Topics: canvaslms, education, k12education, learning, lms, moodle, nodejs, react
- Language: TypeScript
- Homepage: https://mentingo.com/
- Size: 8.16 MB
- Stars: 53
- Watchers: 8
- Forks: 1
- Open Issues: 46
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Mentingo LMS Core Project
[](https://choosealicense.com/licenses/mit/) [](https://nodejs.org/) [](https://pnpm.io/) [](https://nestjs.com/) [](https://remix.run/) [](http://makeapullrequest.com)
A modern, scalable Learning Management System built with cutting-edge technologies.
[Features](#features) • [Getting Started](#getting-started) • [Development](#development) • [Contributing](#contributing)
## Table of Contents
- [Mentingo LMS Core Project](#mentingo-lms-core-project)
- [Table of Contents](#table-of-contents)
- [Features](#features)
- [Overview](#overview)
- [Apps](#apps)
- [Packages](#packages)
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Environment Setup](#environment-setup)
- [Database Setup](#database-setup)
- [Migrations](#migrations)
- [Database Seeding](#database-seeding)
- [Default User Accounts](#default-user-accounts)
- [Development](#development)
- [Available Services](#available-services)
- [Commands Reference](#commands-reference)
- [Formatting](#formatting)
- [Database Commands](#database-commands)
- [HTTP Client Generation](#http-client-generation)
- [Email Templates](#email-templates)
- [Testing](#testing)
- [Project Structure](#project-structure)
- [Contributing](CONTRIBUTING.md)
- [Deployment](#deployment)
- [Legal notice](#legal-notice)
- [Partners](#partners)
## Features
- **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
## Overview
### Apps
- **api**: A NestJS backend application working as API
- **web**: A Vite Remix SPA
- **reverse-proxy**: For domains and https during development
### Packages
- **email-templates**: A package for email templates
- **eslint-config**: A package for eslint configuration
- **performance-tests**: K6 performance testing suite
- **typescript-config**: A package for typescript configuration
## Getting Started
### Prerequisites
Before you begin, make sure you have:
- Node.js version 20.15.0 (stated in `.tool-versions`)
- We recommend using [asdf](https://asdf-vm.com/) for version management
- [pnpm](https://pnpm.io/) package manager
- [Caddy](https://caddyserver.com/docs/install#homebrew-mac) v2.8.4
- Docker and Docker Compose
### Installation
Run the automated setup script:
**On macOS/Linux:**
```bash
pnpm setup:unix
```
**On Windows:**
```bash
pnpm setup:win
```
The 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.
### Default User Accounts
After setup completes, the following default accounts are available:
| Role | Email | Password |
| --------------- | -------------------------- | -------- |
| Admin | admin@example.com | password |
| Student | user@example.com | password |
| Content Creator | contentcreator@example.com | 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:
>
> ```bash
> pnpm db:seed
> ```
>
> This will create accounts:
>
> | Role | Email | Password |
> | --------------- | --------------------------- | -------- |
> | Student | student@example.com | password |
> | Student | student2@example.com | password |
> | Content Creator | contentcreator@example.com | password |
> | Content Creator | contentcreator2@example.com | password |
> | Admin | admin@example.com | password |
> [!NOTE]
> All accounts are intended for development and testing purposes only.
## Development
To start all applications in development mode:
```bash
pnpm dev
```
### Available Services
After 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 |
## Commands Reference
### Formatting
- Format all files with Prettier
```bash
pnpm format
```
- Check if all files are formatted with Prettier
```bash
pnpm format:check
```
- Lint all files in the web app with ESLint
```bash
pnpm lint-tsc-web
```
- Lint all files in the api app with ESLint
```bash
pnpm lint-tsc-api
```
- Fix linting errors in the web app
```bash
pnpm lint-tsc-web --fix
```
- Fix linting errors in the api app
```bash
pnpm lint-tsc-api --fix
```
### Database Commands
- Generate new migration:
```bash
pnpm db:generate
```
> [!IMPORTANT]
> After generating a migration:
>
> 1. Change its name to something descriptive that explains what it does
> 2. Make sure to update the migration name in `apps/api/src/storage/migrations/meta/_journal.json` under the `tag` key
- Run migrations:
```bash
pnpm db:migrate
```
### HTTP Client Generation
- Generate TypeScript API client based on Swagger specification:
```bash
pnpm generate:client
```
### Email Templates
- Build email templates:
```bash
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](https://mailbox.lms.localhost).
### Testing
- Frontend tests:
- Unit
```bash
pnpm test:web
```
- E2E
```bash
bash test-e2e.sh
```
or
```bash
chmod +x test-e2e.sh
./test-e2e.sh
```
- Backend tests:
```bash
pnpm test:api # Unit tests
pnpm test:api:e2e # E2E tests
```
- Performance tests (requires [k6](https://k6.io/docs/getting-started/installation/)):
```bash
pnpm perf:load # Load test
pnpm perf:stress # Stress test
pnpm perf:spike # Spike test
pnpm perf:load:dashboard # Load test with live dashboard
```
> [!NOTE]
> Performance tests require k6 to be installed globally and proper configuration. See [packages/performance-tests/README.md](packages/performance-tests/README.md) for detailed setup and usage instructions.
## Project Structure
```
lms-core
├── apps
│ ├── api
│ │ ├── src
│ │ └── test
│ ├── reverse-proxy
│ └── web
│ ├── app
│ │ ├── api
│ │ ├── assets
│ │ ├── components
│ │ └── modules
│ └── e2e
└── packages
├── email-templates
├── eslint-config
├── performance-tests
├── shared
└── typescript-config
```
## Contributing
We welcome contributions to Mentingo! Please check our [Contributing Guide](CONTRIBUTING.md) for guidelines about how to proceed.
---
## Deployment
See [Deployment Guide](docs/deployment.md) for more details.
## Legal notice
This project was generated using [Selleo LMS](https://github.com/Selleo/lms-core) which is licensed under the MIT license.
## Partners

Ready to scale your eLearning platform? [Selleo](https://selleo.com/lms-software-development) will help with product-minded dev teams who are here to make it happen.