microservice_nodejs_template
microservice_nodejs_template copied to clipboard
🦄 Microservice Starter Kit by Nodejs + Typescript + Docker + Lerna + Eslint + Prettier
Microservice Nodejs Template
Lerna + Docker + Typescript + EsLint + Prettier
Table of Contents
- Introduction
- Techstack
- Install
- Usage
- Project Structure
- api_gateway container
- backend container
- Contributing
Introduction
The simple project shows how to setup monorepo by Typescript + Docker + Lerna + Eslinter + Prettier.
The project has 3 packages (inside packages directory)
- api_gateway (http server)
- backend (http server)
- base (shared package between
api_gatewayandbackend)
Note: Each package has its own eslint, tsconfig, preitter config.
Techstack
- Lerna - A tool for managing JavaScript projects with multiple packages
- TsED - A TypeScript Framework on top of Express
- Docker
- Eslint + Prettier
Install
make install-all
That's it 🚀
Usage
Go to root project: cd microservice_nodejs_template
Running project
docker-compose up
That's it 🚀
After run docker-compose up, you will see api_gateway container runs on 3000 port. and backend container runs on 8000 port.
(you can also check the api by make a request to GET localhost:3000/api/v1/users/)

Compile ts to js
- Compile all packages
npm run build
- Compile
api_gatewaypackage
npm run build:api_gateway
- Compile
backendpackage
npm run build:backend
- Compile
basepackage
npm run build:base
Running Eslint
- Running Eslint on all packages
npm run eslint
Project Structure
Each package under the packages folder.
microservice_nodejs_template
├── docker/
│ ├── api_gateway/
│ │ └── Dockerfile
│ ├── backend/
│ │ └── Dockerfile
├── packages/
│ ├── api_gateway/
│ │ └── src/
│ │ ├── package.json
│ │ ├── tsconfig.json
│ │
│ ├── backend/
│ │ └── src/
│ │ └── package.json
│ │ ├── tsconfig.json
│ │
│ ├── base/
│ │ └── src/
│ │ └── package.json
│ │ ├── tsconfig.json
│
├── docker-compose.yml
├── package.json
├── lerna.json
├── README.md
api_gateway container structure
microservice_nodejs_template
├── packages/
│ ├── api_gateway/
│ │ └── src/
│ │ ├── package.json
│ │ ├── tsconfig.json
│ │
│ ├── base/
│ │ └── src/
│ │ └── package.json
│ │ ├── tsconfig.json
│
│
├── package.json
├── lerna.json
backend container structure
microservice_nodejs_template
├── packages/
│ ├── backend/
│ │ └── src/
│ │ ├── package.json
│ │ ├── tsconfig.json
│ │
│ ├── base/
│ │ └── src/
│ │ └── package.json
│ │ ├── tsconfig.json
│
│
├── package.json
├── lerna.json
Contributing
Contributions, issues and feature requests are welcome.