Skip to content

zcrossoverz/UpGrade-backend

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UpGrade-backend

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.

Architecture

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.

Technologies Used

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

Installation

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

Running the App

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

Support

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.