Skip to content

Selleo/mentingo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Mentingo LMS Core Project

MIT License Node.js pnpm NestJS Remix PRs Welcome
A modern, scalable Learning Management System built with cutting-edge technologies.

FeaturesGetting StartedDevelopmentContributing


Table of Contents


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
  • 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 for version management
  • pnpm package manager
  • Caddy v2.8.4
  • Docker and Docker Compose

Installation

Run the automated setup script:

On macOS/Linux:

pnpm setup:unix

On Windows:

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 [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:seed

This will create accounts:

Role Email 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.


Development

To start all applications in development mode:

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
    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

Database Commands

  • Generate new migration:
    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:
    pnpm db:migrate

HTTP Client Generation

  • Generate TypeScript API client based on Swagger specification:
    pnpm generate:client

Email Templates

  • 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.

Testing

  • 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

Project Structure

lms-core
├── apps
│   ├── api
│   │   ├── src
│   │   └── test
│   ├── reverse-proxy
│   └── web
│       ├── app
│       │   ├── api
│       │   ├── assets
│       │   ├── components
│       │   └── modules
│       └── e2e
└── packages
    ├── email-templates
    ├── eslint-config
    ├── shared
    └── typescript-config

Contributing

We welcome contributions to Mentingo! Please check our Contributing Guide for guidelines about how to proceed.


Deployment

See Deployment Guide for more details.

Legal notice

This project was generated using Selleo LMS which is licensed under the MIT license.

Partners

selleo

Ready to scale your eLearning platform? Selleo will help with product-minded dev teams who are here to make it happen.