/swarmion-template

An opinionated Serverless monorepo microservices architecture

Primary LanguageTypeScriptMIT LicenseMIT

Serverless Monorepo Microservices Template

All Contributors

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):


François Farge

πŸš‡ πŸ’» πŸ€” πŸ“–

Adrien Cacciaguerra

πŸ’» πŸ€” πŸš‡

Louis Pinsard

πŸ’»

guillaumeduboc

πŸ’»

Maxime Vivier

πŸ’»

Guillaume Lagrange

πŸ’»

Pierre Milliotte

πŸ’»

Thomas Aribart

πŸ“–

Charles GΓ©ry

πŸ’»

Stan Hannebelle

πŸ’»

Quentin Hello

πŸš‡

This project follows the all-contributors specification. Contributions of any kind welcome!