« All posts

How one maintainer runs a 40-package monorepo with Turborepo, Bun, Biome

flare-engine shows how Turborepo, Bun and Biome govern 40 packages from single root configs, with no ESLint anywhere in the repo.

flare-engine, a modular 2D engine for React Native and Web maintained by a single developer, runs on 40 packages under a deliberately narrow rule: exactly one root config per tool, extended everywhere rather than reimplemented per package. There is no ESLint file in the repo at all - Biome handles both linting and formatting from one Rust binary, enforcing unused-import and unused-variable rules as hard errors rather than warnings.

The stack's backbone is Turborepo, Bun, and Biome. turbo.json defines four tasks (build, test, lint, typecheck) along with the cross-package dependency graph and cache keys; marking root configs like biome.json, tsconfig.base.json, and bunfig.toml as globalDependencies means editing any of them invalidates the cache for all 40 packages at once. Bun isn't just a package manager here - it doubles as runtime, test runner, and workspace mechanism in a single binary, a deliberate choice over pnpm that the author flags explicitly to avoid confusion.

What makes this relevant to engineers is the concrete demonstration of how tool sprawl compounds monorepo maintenance costs. Twelve packages each carrying a slightly different ESLint variant isn't really a monorepo - it's twelve repos wearing a workspace file as a disguise. Paired with small CI scripts that gate dependency tiers and changesets, this setup is offered as proof that a solo maintainer can still enforce real discipline across a large codebase.

» SourceDev.to