Architecture
The repository is organized into two main directories:apps/*- Standalone applications (Discord bot, website, docs, E2E tests)packages/*- Shared code and utilities used across applications
Build system
Bun workspaces
The monorepo uses Bun’s native workspace feature to manage dependencies across packages:workspace:*).
Turbo
Turborepo orchestrates builds, tests, and development across the monorepo. It provides:- Parallel execution - Runs tasks across workspaces simultaneously
- Caching - Skips unchanged packages to speed up builds
- Task pipelines - Ensures dependencies are built in the correct order
turbo.json:
dev- Start development servers (persistent, no cache)build- Build all applications and packagestypecheck- Type-check TypeScript across workspacestest- Run test suiteslint- Lint code with Biome
Catalog pattern
Dependencies are managed using Bun’s catalog feature to ensure version consistency:"dependency": "catalog:".
Common commands
Install dependencies
Start development
Build all packages
Type-check
Benefits
This monorepo structure provides:- Code sharing - Utilities and components are reused across apps
- Consistent dependencies - The catalog ensures all packages use the same versions
- Atomic changes - Update shared code and all consumers in a single commit
- Faster CI - Turbo’s caching skips unchanged packages