template icon indicating copy to clipboard operation
template copied to clipboard

An opinionated Serverless monorepo microservices architecture

Swarmion example

All Contributors

This template is an example of a project generated with Swarmion.

Generate a new project with Swarmion

yarn create swarmion-app

Then head to the Swarmion documentation on swarmion.dev

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.

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 test: launch the tests in all packages;
  • yarn deploy: deploy all the end services in order;

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

πŸš‡

Paul Molin

πŸ’»

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