Skip to main content

Monorepo Architecture

Tooling

We use the following tools throughout the monorepo:

  • PNPM for dependency management
  • Turborepo for task management & caching
  • tsup for bundling TypeScript code into ESM/CJS/.d.ts outputs for NPM
  • SWC for transpiling the TypeScript server code into ESM, and to transpile sources on-the-fly for Jest (faster than Babel)
  • Jest for unit testing
  • Prettier for code formatting
  • zx for scripting
  • Husky for Git hooks management
  • Docker for packaging the server code into a deployable image
  • Docker Compose for declaring local development & example stacks
  • GitHub Actions for CI/CD
  • multi-semantic-release to automate the publication of NPM packages & Docker images

Configuration

Development tooling configuration is located in <root>/config. It includes base configuration files for the TypeScript typechecker, Jest for testing, Husky git hooks definitions, etc..