MCPcopy Index your code
hub / github.com/Selleo/mentingo

github.com/Selleo/mentingo @demo-2025.12.11

Chat with this repo
repository ↗ · DeepWiki ↗ · release demo-2025.12.11 ↗ · + Follow
2,982 symbols 8,479 edges 1,188 files 14 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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

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.

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

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.

Extension points exported contracts — how you extend this code

EmailContent (Interface)
(no doc) [1 implementers]
packages/email-templates/src/email-content.ts
ButtonProps (Interface)
(no doc)
packages/ui/src/button.tsx
TestContext (Interface)
(no doc)
apps/api/test/create-unit-test.ts
CertificateType (Interface)
(no doc)
apps/web/app/types/certificate.ts
MicrosoftProfile (Interface)
(no doc)
apps/api/src/utils/types/microsoft-auth.type.ts
CertificatesResponse (Interface)
(no doc)
apps/web/app/types/certificate.ts
RequestWithRawBody (Interface)
(no doc)
apps/api/src/stripe/stripe.controller.ts
UpdateHasCertificateBody (Interface)
(no doc)
apps/web/app/types/certificate.ts

Core symbols most depended-on inside this repo

create
called by 443
apps/api/src/certificates/certificate.repository.ts
cn
called by 333
apps/web/app/lib/utils.ts
toast
called by 229
apps/web/app/components/ui/use-toast.ts
withCredentials
called by 165
apps/api/test/factory/user.factory.ts
cookieFor
called by 118
apps/api/test/helpers/test-helpers.ts
Roles
called by 117
apps/api/src/common/decorators/roles.decorator.ts
baseResponse
called by 102
apps/api/src/common/index.ts
useToast
called by 93
apps/web/app/components/ui/use-toast.ts

Shape

Function 1,288
Method 963
Class 411
Interface 312
Enum 8

Languages

TypeScript100%

Modules by API surface

apps/web/app/api/generated-api.ts166 symbols
apps/api/src/courses/course.service.ts44 symbols
apps/api/src/settings/settings.service.ts35 symbols
apps/api/src/lesson/repositories/adminLesson.repository.ts34 symbols
apps/api/src/user/user.service.ts32 symbols
apps/api/src/courses/course.controller.ts29 symbols
apps/api/src/settings/settings.controller.ts25 symbols
apps/web/e2e/tests/admin/create-course.spec.ts24 symbols
apps/api/src/statistics/repositories/statistics.repository.ts22 symbols
apps/api/src/lesson/services/adminLesson.service.ts21 symbols
apps/api/src/ai/repositories/ai.repository.ts21 symbols
apps/api/src/lesson/lesson.controller.ts20 symbols

Datastores touched

guidebookDatabase · 1 repos

For agents

$ claude mcp add mentingo \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page