Giter VIP home page Giter VIP logo

upgrade-backend's Introduction

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.

upgrade-backend's People

Contributors

zcrossoverz avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.