Skip to content

Development Guide

This guide covers the detailed development setup and workflow for Cosella.

  • Node.js: v22.0.0 or higher
  • pnpm: v9.0.0 or higher
  • Git: v2.30.0 or higher
  • VS Code: Recommended editor
Terminal window
git clone https://github.com/cosella/cosella.git
cd cosella
pnpm install

Create .env.local in the root:

Terminal window
# API Configuration
VITE_API_URL=http://localhost:3000
VITE_WS_URL=ws://localhost:3000
# Sentry (optional)
VITE_SENTRY_DSN=
# Feature Flags
VITE_FEATURE_NEW_DASHBOARD=true
Terminal window
# Start all apps
pnpm dev
# Or start specific apps
pnpm --filter @cosella/dashboard dev
pnpm --filter @cosella/admin dev
pnpm --filter @cosella/docs dev
AppPortDescription
Dashboard5173Sales rep daily driver
Admin5174Internal admin panel
Docs4322Documentation site
Marketing4321Public landing page
Storybook6006Component stories
PackagePurpose
@cosella/uiUI components
@cosella/tokensDesign tokens
@cosella/domainDomain models
@cosella/api-clientAPI client
Terminal window
# Build all
pnpm build
# Build specific app
pnpm --filter @cosella/dashboard build
Terminal window
# Run all tests
pnpm test
# Run specific package tests
pnpm --filter @cosella/ui test
# Run with coverage
pnpm test -- --coverage
Terminal window
# Check all
pnpm typecheck
# Check specific package
pnpm --filter @cosella/ui typecheck
Terminal window
# Lint all
pnpm lint
# Lint and fix
pnpm lint --fix
Terminal window
pnpm gen package
Terminal window
pnpm gen component

Create manually in apps/docs/src/content/docs/engineering/adr-NNNN.mdx.

  • feature/my-feature - New features
  • fix/my-bug - Bug fixes
  • docs/my-docs - Documentation updates
  • refactor/my-refactor - Code refactoring

Follow Conventional Commits:

feat(ui): add new Button variant
fix(api-client): handle network errors
docs(readme): update installation guide

Automatically runs:

  • lint-staged: ESLint + Prettier on staged files
  • commitlint: Validates commit messages
  • ESLint (dbaeumer.vscode-eslint)
  • Prettier (esbenp.prettier-vscode)
  • Tailwind CSS IntelliSense (bradlc.vscode-tailwindcss)
  • TypeScript Importer (ms-vscode.vscode-typescript-next)
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.fixAll.eslint": "explicit"
},
"typescript.tsdk": "node_modules/typescript/lib"
}
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch Dashboard",
"type": "node",
"request": "launch",
"program": "${workspaceFolder}/node_modules/.bin/vite",
"args": ["--config", "apps/dashboard/vite.config.ts"],
"console": "integratedTerminal"
}
]
}
  • React DevTools: Inspect component tree
  • TanStack Query DevTools: Inspect cache state
  • Network Tab: Monitor API calls
Terminal window
# Analyze bundle size
pnpm build -- --analyze

Run Lighthouse audits in Chrome DevTools.

Terminal window
# Find process using port
lsof -ti:5173
# Kill process
kill -9 <PID>
Terminal window
# Clear TypeScript cache
rm -rf node_modules/.cache
pnpm install
Terminal window
# Clean build
rm -rf dist
rm -rf node_modules/.cache
pnpm build