Serverless Monorepo Microservices Template
This template aims to define an opinionated clean Serverless monorepo microservices architecture.
If you use this repo, star it β¨
Install
Head to the install docs!
If you need to setup your CI/CD: docs.
Features
- Nx
- Eslint configuration
- Prettier configuration
- Jest configuration
- Typescript
- Common packages built with babel, with a watch mode
- Selective tests, package and deploy to remove the need to run all the tests and deploy at every commit.
Code principles
This repository follows the code principles:
- Your codebase should adapt to your team organizations
- DRY (Don't Repeat Yourself)
- Don't deploy all at once
- Safe deployments
In order to respect these guidelines, a good solution is the Monorepo approach. See:
Tips:
- Always explicitly declare dependencies between end services in
package.json
- These dependencies can be of two kinds:
- code dependencies: service B declares service A as a dependency because it needs some code exported by service A;
- deploy dependencies: service B declares service A as a dependency because it needs service A to be deployed before it.
Commands
These commands have to be run at the root of the project.
nvm use
: set the version of node set in.nvmrc
yarn
: install node dependencies in all packages;yarn package
: compile the common packages;yarn watch
: launch the compilation of all packages in watch mode;yarn deploy
: deploy all the end services in order;yarn test-circular
: check if there are circular dependencies in the code base;
Adding a new service
- Good idea!
Other docs
Contributors β¨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!