For Developers
Monorepo & Local Development
Layout
apps/— deployable applications (client, server, docs)crons/— scheduled/background services (backup, cleanup)packages/— shared libraries (db,types)- Root configs:
package.json,turbo.json,bunfig.toml,biome.json,docker-compose.yml
Package management
- Package manager: Bun 1.x (root
packageManager:bun@1.3.0) - Workspaces:
workspaces:apps/*,packages/*,crons/* - Bun install strategy:
- Prefer workspace references (
"workspace:*") for internal deps
- Prefer workspace references (
Root scripts (from package.json)
bun dev— sets.envfromenvironments/.env.developmentthen runs Turbodevbun run db_push:<env>— sets env then runs Drizzle Kit push (packages/db/drizzle.config.ts)bun build—docker-compose buildbun start—docker-compose upbun clean— removes allnode_modules
Turbo tasks (turbo.json)
devdepends oncompile, persistent, uncached- Client
devdepends on serverdev(dev#@sharingexcess/clientdepends on@sharingexcess/server#dev) compileoutputs:dist/**,.next/**,build/**,out/**
Running locally
- Prereqs: Bun 1.x, Docker (optional),
/environmentsfiles - Live development:
bun devat repo root (Turbo orchestrates workspace dev tasks) - Docker Compose (closer to prod images):
bun start(server, client, docs)
Dependencies between workspaces
apps/server→@sharingexcess/db,@sharingexcess/typesapps/client→@sharingexcess/typesand server build artifacts (Hono exports consumed at runtime/build)apps/docs→ standalonecrons/*→ standalone; share envs (DB, S3, Sentry)
Environment management
- Local: copy from
/environments/.env.<env>to root.envusing root scripts - Docker Compose injects envs per service (
docker-compose.yml) - Railway manages envs per service and environment