A lean monorepo starter powered by pnpm. Minimal config, strict version control, fast workflows.
- ✅ Zero-runtime monorepo setup
- ✅ Enforces centralized dependency control via pnpm catalogs (
catalogMode: "strict"
) - ✅ Volta-pinned Node and pnpm versions
- ✅ Biome for linting and formatting
- ✅ TypeScript with strict, modern config
- ✅ Vitest (projects) for testing and coverage
- ✅ Lefthook for fast pre-commit checks
- ✅ Ready for shared packages in
packages/*
Fastwire uses:
- Volta to pin Node and pnpm versions across all contributors
- Biome for fast, all-in-one formatting and linting
- TypeScript with a strict base config and modern features
- Vitest for fast, isolated testing and unified coverage reporting
- Lefthook to run local Git hooks like format, lint, or test before committing
ℹ️ pnpm support in Volta is experimental — follow these instructions to enable it properly on your system.
# 1. Install Volta (if not already installed)
curl https://get.volta.sh | bash
# 2. Restart your shell and install the pinned toolchain manually
volta install node@22.17.1 pnpm@10.13.1
# 3. Install workspace dependencies
pnpm install
- pnpm check # Run Biome across all files
- pnpm format # Auto-format all source files using Biome
- pnpm test # Run Vitest across all packages
- pnpm coverage # Generate unified coverage report from root
📌 Code coverage is only configured at the workspace root. All tests from all packages are included in a single report.
- pnpm-workspace.yaml # Workspace & catalog config
- package.json # Volta + workspace metadata
- packages/ # Place your shared packages here
- tsconfig.base.json # Shared strict TypeScript configuration
- biome.json # Biome config (lint + format)
- vitest.config.ts # Root testing and coverage config
- lefthook.yml # Lefthook hook configuration
Fastwire
comes with two preconfigured GitHub Actions workflows:
-
Biome (lint + format) Lints and formats the entire codebase using Biome on every push and pull request. →
.github/workflows/biome_ci.yml
-
Test (Vitest) Runs all tests across the monorepo on every push and pull request.
📌 This runs all tests indiscriminately, regardless of which packages were changed. This can be optimized later by using filtered package execution. →
.github/workflows/test.yml