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.

Releases

No releases published

Packages

No packages published