{"id":29561604,"url":"https://github.com/selleo/mentingo","last_synced_at":"2026-02-06T12:30:17.324Z","repository":{"id":258512867,"uuid":"836673211","full_name":"Selleo/mentingo","owner":"Selleo","description":"Learning Management System (LMS) build with react and node","archived":false,"fork":false,"pushed_at":"2025-07-14T08:32:35.000Z","size":8556,"stargazers_count":53,"open_issues_count":46,"forks_count":1,"subscribers_count":8,"default_branch":"main","last_synced_at":"2025-07-14T09:15:50.227Z","etag":null,"topics":["canvaslms","education","k12education","learning","lms","moodle","nodejs","react"],"latest_commit_sha":null,"homepage":"https://mentingo.com/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Selleo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-08-01T10:17:21.000Z","updated_at":"2025-07-12T05:41:10.000Z","dependencies_parsed_at":"2024-11-05T11:24:57.201Z","dependency_job_id":"1858099c-f946-4c75-8125-0f44841cf677","html_url":"https://github.com/Selleo/mentingo","commit_stats":null,"previous_names":["selleo/lms-core","selleo/mentingo"],"tags_count":38,"template":false,"template_full_name":null,"purl":"pkg:github/Selleo/mentingo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Selleo%2Fmentingo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Selleo%2Fmentingo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Selleo%2Fmentingo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Selleo%2Fmentingo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Selleo","download_url":"https://codeload.github.com/Selleo/mentingo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Selleo%2Fmentingo/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265793684,"owners_count":23829180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["canvaslms","education","k12education","learning","lms","moodle","nodejs","react"],"created_at":"2025-07-18T16:38:48.020Z","updated_at":"2026-02-06T12:30:17.286Z","avatar_url":"https://github.com/Selleo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/Selleo/lms-core/blob/main/apps/web/app/assets/menitngo_logo dark.png?raw=true\" alt\"\" /\u003e\n\n# Mentingo LMS Core Project\n\n[![MIT License](https://img.shields.io/badge/License-MIT-green.svg)](https://choosealicense.com/licenses/mit/) [![Node.js](https://img.shields.io/badge/Node.js-20.15.0-brightgreen.svg)](https://nodejs.org/) [![pnpm](https://img.shields.io/badge/pnpm-supported-blue.svg)](https://pnpm.io/) [![NestJS](https://img.shields.io/badge/NestJS-10.x-red.svg)](https://nestjs.com/) [![Remix](https://img.shields.io/badge/Remix-Latest-purple.svg)](https://remix.run/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)\n\u003c/br\u003e\nA modern, scalable Learning Management System built with cutting-edge technologies.\n\n[Features](#features) • [Getting Started](#getting-started) • [Development](#development) • [Contributing](#contributing)\n\n\u003c/div\u003e\n\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n## Table of Contents\n\n\u003c/div\u003e\n\n- [Mentingo LMS Core Project](#mentingo-lms-core-project)\n  - [Table of Contents](#table-of-contents)\n  - [Features](#features)\n  - [Overview](#overview)\n    - [Apps](#apps)\n    - [Packages](#packages)\n  - [Getting Started](#getting-started)\n    - [Prerequisites](#prerequisites)\n    - [Installation](#installation)\n    - [Environment Setup](#environment-setup)\n  - [Database Setup](#database-setup)\n    - [Migrations](#migrations)\n    - [Database Seeding](#database-seeding)\n    - [Default User Accounts](#default-user-accounts)\n  - [Development](#development)\n    - [Available Services](#available-services)\n  - [Commands Reference](#commands-reference)\n    - [Formatting](#formatting)\n    - [Database Commands](#database-commands)\n    - [HTTP Client Generation](#http-client-generation)\n    - [Email Templates](#email-templates)\n    - [Testing](#testing)\n  - [Project Structure](#project-structure)\n  - [Contributing](CONTRIBUTING.md)\n  - [Deployment](#deployment)\n  - [Legal notice](#legal-notice)\n  - [Partners](#partners)\n\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n## Features\n\n\u003c/div\u003e\n\n- **Course Structure**: Courses built from categories, modules and various lesson types\n- **Lesson Types**: Supports text, video, presentation and quiz lessons\n- **Quiz Engine**: Multiple-choice, single-choice, true/false, gap-filling, short/long text answers and image-based questions\n- **Price Configuration**: Flexible setup for free and paid course access\n- **Progress Tracking**: Automatic progress saving and course completion logic\n- **Daily Streak Tracking**: Motivational system for tracking learning consistency\n- **Statistics \u0026 Insights**: Detailed data on user engagement and learning results\n- **Admin Panel**: Tools for managing users, courses, content and statistics\n- **User Roles**: Separate experiences for students and administrators\n\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n## Overview\n\n\u003c/div\u003e\n\n### Apps\n\n- **api**: A NestJS backend application working as API\n- **web**: A Vite Remix SPA\n- **reverse-proxy**: For domains and https during development\n\n### Packages\n\n- **email-templates**: A package for email templates\n- **eslint-config**: A package for eslint configuration\n- **performance-tests**: K6 performance testing suite\n- **typescript-config**: A package for typescript configuration\n\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n## Getting Started\n\n\u003c/div\u003e\n\n### Prerequisites\n\nBefore you begin, make sure you have:\n\n- Node.js version 20.15.0 (stated in `.tool-versions`)\n  - We recommend using [asdf](https://asdf-vm.com/) for version management\n- [pnpm](https://pnpm.io/) package manager\n- [Caddy](https://caddyserver.com/docs/install#homebrew-mac) v2.8.4\n- Docker and Docker Compose\n\n### Installation\n\nRun the automated setup script:\n\n**On macOS/Linux:**\n\n```bash\npnpm setup:unix\n```\n\n**On Windows:**\n\n```bash\npnpm setup:win\n```\n\nThe setup script will automatically:\n\n- ✓ Verify all prerequisites and tool versions\n- ✓ Configure Caddy for HTTPS development\n- ✓ Install project dependencies\n- ✓ Build shared packages\n- ✓ Set up environment files (.env)\n- ✓ Start Docker containers\n- ✓ Run database migrations\n- ✓ Seed the database with test data\n\n\u003e [!NOTE]\n\u003e 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.\n\n### Default User Accounts\n\nAfter setup completes, the following default accounts are available:\n\n| Role            | Email                      | Password |\n| --------------- | -------------------------- | -------- |\n| Admin           | admin@example.com          | password |\n| Student         | user@example.com           | password |\n| Content Creator | contentcreator@example.com | password |\n\n\u003e [!NOTE]\n\u003e The setup script creates a minimal production-like environment with only these three essential accounts.\n\n\u003e [!TIP]\n\u003e If you need a populated environment with sample courses, lessons, and additional test users for development, you can run the development seed instead:\n\u003e\n\u003e ```bash\n\u003e pnpm db:seed\n\u003e ```\n\u003e\n\u003e This will create accounts:\n\u003e\n\u003e | Role            | Email                       | Password |\n\u003e | --------------- | --------------------------- | -------- |\n\u003e | Student         | student@example.com         | password |\n\u003e | Student         | student2@example.com        | password |\n\u003e | Content Creator | contentcreator@example.com  | password |\n\u003e | Content Creator | contentcreator2@example.com | password |\n\u003e | Admin           | admin@example.com           | password |\n\n\u003e [!NOTE]\n\u003e All accounts are intended for development and testing purposes only.\n\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n## Development\n\n\u003c/div\u003e\n\nTo start all applications in development mode:\n\n```bash\npnpm dev\n```\n\n### Available Services\n\nAfter starting the development environment, you can access:\n\n| Service | URL                           | Description             |\n| ------- | ----------------------------- | ----------------------- |\n| Web App | https://app.lms.localhost     | Frontend application    |\n| API     | https://app.lms.localhost/api | Backend API url         |\n| Swagger | https://api.lms.localhost/api | API documentation       |\n| Mailhog | https://mailbox.lms.localhost | Email testing interface |\n\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n## Commands Reference\n\n\u003c/div\u003e\n\n### Formatting\n\n- Format all files with Prettier\n  ```bash\n  pnpm format\n  ```\n- Check if all files are formatted with Prettier\n  ```bash\n  pnpm format:check\n  ```\n- Lint all files in the web app with ESLint\n  ```bash\n  pnpm lint-tsc-web\n  ```\n- Lint all files in the api app with ESLint\n  ```bash\n  pnpm lint-tsc-api\n  ```\n- Fix linting errors in the web app\n  ```bash\n  pnpm lint-tsc-web --fix\n  ```\n- Fix linting errors in the api app\n  ```bash\n  pnpm lint-tsc-api --fix\n  ```\n\n### Database Commands\n\n- Generate new migration:\n  ```bash\n  pnpm db:generate\n  ```\n\n\u003e [!IMPORTANT]\n\u003e After generating a migration:\n\u003e\n\u003e 1. Change its name to something descriptive that explains what it does\n\u003e 2. Make sure to update the migration name in `apps/api/src/storage/migrations/meta/_journal.json` under the `tag` key\n\n- Run migrations:\n  ```bash\n  pnpm db:migrate\n  ```\n\n### HTTP Client Generation\n\n- Generate TypeScript API client based on Swagger specification:\n  ```bash\n  pnpm generate:client\n  ```\n\n### Email Templates\n\n- Build email templates:\n  ```bash\n  cd packages/email-templates\n  pnpm build\n  ```\n\nEmail templates are automatically built when starting the development server. To test emails, check the Mailhog interface at [mailbox.lms.localhost](https://mailbox.lms.localhost).\n\n### Testing\n\n- Frontend tests:\n\n  - Unit\n    ```bash\n    pnpm test:web\n    ```\n  - E2E\n\n    ```bash\n    bash test-e2e.sh\n    ```\n\n    or\n\n    ```bash\n    chmod +x test-e2e.sh\n    ./test-e2e.sh\n    ```\n\n- Backend tests:\n\n  ```bash\n  pnpm test:api        # Unit tests\n  pnpm test:api:e2e    # E2E tests\n  ```\n\n- Performance tests (requires [k6](https://k6.io/docs/getting-started/installation/)):\n\n  ```bash\n  pnpm perf:load              # Load test\n  pnpm perf:stress            # Stress test\n  pnpm perf:spike             # Spike test\n  pnpm perf:load:dashboard    # Load test with live dashboard\n  ```\n\n  \u003e [!NOTE]\n  \u003e 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.\n\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n## Project Structure\n\n\u003c/div\u003e\n\n```\nlms-core\n├── apps\n│   ├── api\n│   │   ├── src\n│   │   └── test\n│   ├── reverse-proxy\n│   └── web\n│       ├── app\n│       │   ├── api\n│       │   ├── assets\n│       │   ├── components\n│       │   └── modules\n│       └── e2e\n└── packages\n    ├── email-templates\n    ├── eslint-config\n    ├── performance-tests\n    ├── shared\n    └── typescript-config\n```\n\n\u003c/br\u003e\n\u003cdiv align=\"center\"\u003e\n\n## Contributing\n\n\u003c/div\u003e\n\nWe welcome contributions to Mentingo! Please check our [Contributing Guide](CONTRIBUTING.md) for guidelines about how to proceed.\n\n---\n\n## Deployment\n\nSee [Deployment Guide](docs/deployment.md) for more details.\n\n## Legal notice\n\nThis project was generated using [Selleo LMS](https://github.com/Selleo/lms-core) which is licensed under the MIT license.\n\n## Partners\n\n![selleo](https://raw.githubusercontent.com/Selleo/selleo-resources/master/public/github_footer.png)\n\nReady 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.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselleo%2Fmentingo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselleo%2Fmentingo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselleo%2Fmentingo/lists"}