Skip to main content
All commands run from the project root with bun run. AI agents use these same commands to verify their work. bun run check catches lint issues, bun run build catches type errors, and turbo build --filter=<package>... scopes verification to what changed.

Development

CommandWhat it does
bun run devStart all apps in development mode
turbo dev --filter=appStart a single app
bunx convex devStart Convex backend separately

Code Quality

CommandWhat it does
bun run checkLint and format check with Ultracite (Biome)
bun run fixAuto-fix linting and formatting issues
bun run convex-lintLint Convex functions with ESLint
Ultracite handles all TypeScript, React, and CSS linting via Biome. A Lefthook pre-commit hook runs ultracite fix on staged files automatically. Convex functions use a separate ESLint plugin (@convex-dev/eslint-plugin) because Biome does not support Convex-specific rules. The plugin enforces argument validators, object syntax for registered functions, explicit table IDs, and correct runtime imports.

Build and Test

CommandWhat it does
bun run buildBuild all apps (runs tests first)
bun run testRun all tests with Vitest
bun run analyzeBundle analysis (ANALYZE=true)
turbo build --filter=appBuild a single app

Environment Variables

CommandWhat it does
bun run env:initCreate .env.local + .env.production from .env.example
bun run env:checkValidate all env files have required keys
bun run env:pushSync env vars to Vercel and Convex
See Environment Variables for details.

Upgrading Dependencies

CommandWhat it does
bun run bump-depsUpdate all npm dependencies to latest
bun run bump-uiUpdate all shadcn/ui components in the design system
bun run cleanRemove all node_modules directories

bump-deps

Updates every dependency across all package.json files and installs the new versions. Run bun run build afterward to verify the project still builds, then bun run dev to check runtime behavior.

bump-ui

Runs npx shadcn@latest add --all --overwrite against packages/design-system, replacing every component with the latest version from shadcn/ui.
This overrides all customizations you’ve made to shadcn/ui components. If you’ve modified components in packages/design-system/components/ui/, this command overwrites them. To protect customizations, create wrapper components in a separate folder (e.g., packages/design-system/components/custom/) instead of editing the originals.
The shadcn CLI may make unwanted changes to your Tailwind config and globals.css. Review the diff before committing.

Convex

CommandWhat it does
bunx convex devStart Convex in development mode
bunx convex deployDeploy Convex to production
turbo codegenGenerate TypeScript types from Convex schema
bun run convex-lintLint Convex functions
codegen outputs typed APIs into convex/_generated/. Turbo caches the output, so unchanged schemas skip regeneration.

Turbo Filtering

Run any task for a specific app or package:
turbo dev --filter=app           # Only the main app
turbo build --filter=web         # Only the marketing site
turbo test --filter=backend      # Only backend tests
turbo build --filter=app...      # App and all its dependencies
The --filter flag accepts app/package names from their package.json. Append ... to include dependencies.