UpGrade is a NestJS backend microservice built on the principles of Clean Architecture. It uses RabbitMQ, PostgreSQL, TypeORM, and Redis to provide a robust and scalable e-learning platform.
The architecture of the project is based on the principles of Clean Architecture, which promotes separation of concerns, scalability, and testability. It is divided into several layers:
Entities
: These are the business objects of the application.Use Cases
: This layer contains all the business rules of the application.Controllers
: This layer is responsible for handling incoming requests and returning responses to the client.Framework & Drivers
: This layer includes databases, external interfaces.
The project is divided into several microservices, each with its own responsibility:
api-gateway
: The main entry point for all requests. It handles routing requests to the appropriate microservice.auth-service
: Handles user authentication and authorization.community-service
: Manages community-related features such as forums and discussions.course-service
: Manages all course-related operations such as creating, updating, and enrolling in courses.user-service
: Manages user-related operations.
Each service is designed to be loosely coupled and independently deployable, following the principles of microservice architecture.
- NestJS: A progressive Node.js framework for building efficient, reliable, and scalable server-side applications.
- RabbitMQ: An open-source message-broker software that originally implemented the Advanced Message Queuing Protocol (AMQP).
- PostgreSQL: A powerful, open-source object-relational database system.
- TypeORM: An ORM that can run in NodeJS and can be used with TypeScript and JavaScript (ES5, ES6, ES7, ES8).
- Redis: An open-source, in-memory data structure store, used as a database, cache, and message broker.
- Google Drive: Used in the course-service for storing and managing course-related files.
- Machine Learning: Collaborative filtering algorithm is used in the course-service for recommending courses to users.
- ChatGPT: Used for text generation and text moderation in the comment topic feature.
Clone the repository and install the dependencies in each microservice:
git clone https://github.com/zcrossoverz/UpGrade-backend.git
cd api-gateway
npm install
# Open 4 terminal and repeat for each microservice
cd auth-service
npm install
cd community-service
npm install
cd course-service
npm install
cd user-service
npm install
To run the app, start each microservice in a separate terminal:
cd api-gateway
npm run start:dev
# Open 4 terminal and repeat for each microservice
cd auth-service
npm run start:dev
cd community-service
npm run start:dev
cd course-service
npm run start:dev
cd user-service
npm run start:dev
UpGrade is an MIT-licensed open source project. It can grow thanks to the sponsors and support by the amazing backers. If you'd like to join them, please read more here.