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..