Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/denrox/nestjs-microservices-example
A working example of microservice architecture implementation using nestjs framework
https://github.com/denrox/nestjs-microservices-example
docker docker-compose microservice-architecture microservices mongoose nestjs
Last synced: 23 days ago
JSON representation
A working example of microservice architecture implementation using nestjs framework
- Host: GitHub
- URL: https://github.com/denrox/nestjs-microservices-example
- Owner: Denrox
- Created: 2019-10-07T14:02:53.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2024-04-23T01:01:51.000Z (7 months ago)
- Last Synced: 2024-04-24T01:42:14.739Z (7 months ago)
- Topics: docker, docker-compose, microservice-architecture, microservices, mongoose, nestjs
- Language: TypeScript
- Homepage:
- Size: 69.3 KB
- Stars: 817
- Watchers: 15
- Forks: 240
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# This repository shows how you can build API with microservice architecture using nestjs
## Features of this example
This example is basically an API for some task manager application. It provides a possibility to perform sign up users, confirm user's emails, manage user's tasks.
## Running the example with docker-compose
Execute `docker network create infrastructure && cp .env.example .env && docker-compose up -d` from the root of the repository
## Accessing the API itself and swagger docs for the API
- Once you launch the API it will be accessible on port 8000.
- Swagger docs for the API will be accessible locally via URI "**http://localhost:8000/api**"
## Launch services for integration testing (using docker-compose)
- Execute `sudo vim /etc/hosts` and add line `127.0.0.1 db` to it. This is a temporary step, it will not be required since new update.
- Execute `cp .env.example .env && cp .env.test.example .env.test`
- Execute `docker-compose -f ./docker-compose.test.yml up -d` from the root of the repository
- Run `cd ./gateway && npm install && npm run test` from the root of this repo
## Brief architecture overview
This API showcase consists of the following parts:
- API gateway
- Token service - responsible for creating, decoding, destroying JWT tokens for users
- User service - responsible for CRUD operations on users
- Mailer service - responsible for sending out emails (confirm sign up)
- Permission service - responsible for verifying permissions for logged in users.
- Tasks service - responsible for CRUD operations on users tasks records
- The service interact via **TCP sockets**This example uses a SINGLE database (MongoDB) instance for all microservices. **This is not a correct point, the correct way is to use a separate DB instance for every microservice.** I used one DB instance for all microservices to simplify this example.