{"id":19140918,"url":"https://github.com/fakhranii/e-learning-platform-nestjs-api","last_synced_at":"2026-04-13T03:02:31.163Z","repository":{"id":223728906,"uuid":"761172243","full_name":"fakhranii/e-learning-platform-nestjs-api","owner":"fakhranii","description":"Educational platform api - project with Nest JS framework - Mysql ( typeOrm )","archived":false,"fork":false,"pushed_at":"2024-11-07T18:28:59.000Z","size":905,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-31T13:54:42.528Z","etag":null,"topics":["authentication","docker","docker-compose","mysql-database","nestjs","nodejs","restful-api","typeorm","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fakhranii.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2024-02-21T11:29:00.000Z","updated_at":"2024-11-18T22:41:40.000Z","dependencies_parsed_at":"2024-03-09T11:21:53.775Z","dependency_job_id":"755a2b95-67a0-49ef-b8f9-6788a02c21d8","html_url":"https://github.com/fakhranii/e-learning-platform-nestjs-api","commit_stats":null,"previous_names":["fakhranyy/graduation_project","fakhranyy/graduation-project-nestjs-api","fakhranyy/educational-platform-nestjs-api","fakhranii/e-learning-platform-nestjs-api","fakhranyy/e-learning-platform-nestjs-api"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakhranii%2Fe-learning-platform-nestjs-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakhranii%2Fe-learning-platform-nestjs-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakhranii%2Fe-learning-platform-nestjs-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fakhranii%2Fe-learning-platform-nestjs-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fakhranii","download_url":"https://codeload.github.com/fakhranii/e-learning-platform-nestjs-api/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240222499,"owners_count":19767458,"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":["authentication","docker","docker-compose","mysql-database","nestjs","nodejs","restful-api","typeorm","typescript"],"created_at":"2024-11-09T07:19:20.354Z","updated_at":"2026-04-13T03:02:31.113Z","avatar_url":"https://github.com/fakhranii.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# E-learning-Platform-Api\n\n## Table of Contents\n\n- [Project Description](#project-description)\n  - [Admin Dashboard](#admin-dashboard)\n  - [Authentication Management](#authentication-management)\n  - [Instructor](#instructor)\n  - [Course Management](#course-management)\n  - [User Interaction](#user-interaction)\n  - [Dealing with images](#dealing-with-images)\n  - [Robust Security System](#robust-security-system)\n  - [Seamless Integration](#seamless-integration)\n- [Used Technologies](#used-technologies)\n- [How to Install and Run the Project](#how-to-install-and-run-the-project)\n  - [Prerequisites](#prerequisites)\n  - [Dependencies Installation via Docker-Compose](#dependencies-installation-via-docker-compose)\n- [API Documentation](#api-documentation)\n\n## Project Description\n\n**The E-Learning API Project is a robust backend system for managing users, instructors, and courses. There is admin dashboard that can manages everything in the platform. The Platform offers the following key features:**\n\n### _Admin Dashboard:_\n\n- **The admin is able to view the full number of users and review all statistics of the platform.**\n- **Admins have the ability to manage users, instructors, reviews and courses and everything in the platform. He can delete anything he deemed unsuitable.**\n\n### _Authentication Management:_\n\n- **Users can register as students who consume the courses or instructors who create and manage courses.**\n- **It includes a password recovery feature, allowing users to receive a reset code via email and easily set a new password if they forget theirs.**\n\n### _Instructor:_\n\n- **Instructors can create and manage courses, providing important details such as course descriptions, prerequisites, what students will learn, and the course language.**\n\n- **Instructors can also upload course images using Cloudinary, with built-in image compression to ensure optimized performance.**\n\n### _Course Management:_\n\n- **Instructors can create and manage courses with rich details such as course descriptions, prerequisites, learning outcomes, and course language.**\n\n### _User Interaction:_\n\n- **Students can browse and enroll in courses, leave reviews, and rate courses using a star-based rating system along with written feedback.**\n\n### _Dealing with images:_\n\n- **The platform integrates `Cloudinary` for image uploading for users' profile picture \u0026 courses'cover** - **Also use `compression` package to anutilizes image compression, making the process faster and more efficient.**\n\n### _Robust Security System:_\n\n**The platform includes a solid security system with multiple protections:**\n\n- **CSRF Token Protection:** Prevents cross-site request forgery attacks.\n- **Spam Request Prevention:** Limits the number of requests per second to block spam attacks.\n- **Input Data Sanitization:** Ensures the application is safe from malicious scripts by cleaning user inputs.\n- **Request Body Size Limitation:** Prevents overloading the server memory by restricting large request payloads.\n\n### _Seamless Integration:_\n\n- **The API is designed to work effortlessly with frontend applications, mobile apps, and desktop apps, ensuring compatibility and flexibility across platforms.**\n- **This combination of user-friendly features and strong security measures makes the API a scalable and reliable solution for e-learning platforms.**\n\n---\n\n## _Used Technologies_\n\n- **Node.js**\n- **Nest.js**\n- **MySQL.**\n- **TypeORM**\n- **Docker**\n- **Docker-Compose**\n- **JWT**\n- **Bcrypt**\n- **Class-Transformer.**\n- **Class-Validator.**\n- **Cloudinary.**\n- **Compression.**\n- **Helmet.**\n- **Hpp.**\n- **Nodemailer.**\n- **Sanitize-Html.**\n- **slugify.**\n\n## How to Install and Run the Project\n\n### _Prerequisites_\n\n- **[Docker-Desktop](https://www.docker.com/products/docker-desktop/)**\n\n\n### _dependencies Installation via `Docker-Compose`_\n\n- **This command will install specific version of Nodejs and all packages with their versions which are exist in `package.json` and start the necessary containers for the project [ `phpmyadmin-ui` - `mysql-db`]. At the end the project gonna run .. all with one command**\n\n  **Here You are the Command :**\n\n```terminal\ndocker-compose -f docker-compose.yml -f docker-compose.dev.yml up --build -d\n```\n\n- **Also you should create a `.env` file in the root directory of the project and add the following environment variables:**\n\n```example.env\nDB_HOST =\nDB_PORT =\nDB_NAME =\nDB_USERNAME =\nDB_PASSWORD =\n\njwtSecret =\n\nCLOUDINARY_URL=\nCLOUDINARY_CLOUD_NAME =\nCLOUDINARY_API_KEY =\nCLOUDINARY_API_SECRET=\n\n#? NodeMailer - Email settings\n# EMAIL_HOST=smtp.ethereal.email\n# Email_PORT=587\nEMAIL_USER=\nEMAIL_PASSWORD=\n\nCOOKIE_SECRET_KEY=\n```\n\n- **Or you can see the file that includes all variables from here: [example.env](./example.env)**\n\n---\n\n## _API Documentation_\n\n- **The API documentation is available at the following URL: [API Documentation](https://gold-water-721915.postman.co/workspace/Public-Collections~899f080b-3a13-42d0-895e-553e15ff281c/collection/31885780-ba7c45c9-d1f4-4192-b93c-dc629f65b059?action=share\u0026creator=31885780\u0026active-environment=31885780-d855adc6-c38e-47cc-b535-cb7f12eda7a2)**\n- **You can also find the API documentation in the project's root directory in the [postman-collections](./docs/postman/graduation%20project.postman_collection.json) file.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffakhranii%2Fe-learning-platform-nestjs-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffakhranii%2Fe-learning-platform-nestjs-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffakhranii%2Fe-learning-platform-nestjs-api/lists"}