Skip to main content

Getting Started

# Clone and setup
git clone https://github.com/tracera-labs/Tracera.git
cd Tracera
cp .env.example .env

# Option 1: Full Docker stack
make docker-dev

# Option 2: Local development
docker compose up timescaledb redis -d
go run ./cmd/server        # Terminal 1
cd apps/web && pnpm dev    # Terminal 2

Backend Development

Hot Reload

Use air for automatic server restart on file changes:
go install github.com/air-verse/air@latest
air
Configuration is in .air.toml.

Code Organization

DirectoryPurposeConvention
cmd/Entry pointsOne main.go per binary
internal/Private packagesNot importable by external projects
internal/api/HTTP layerHandlers and router
internal/auth/AuthenticationHandlers, middleware, session
internal/config/ConfigurationEnvironment-based loading
internal/email/Email sendingResend integration
internal/models/Domain structsNo business logic
internal/store/Data accessDatabase and Redis queries
migrations/SQL migrationsSequential numbered files

Testing

# Run all tests
make test

# Run tests with race detector
make test-race

# Generate coverage report
make coverage

# Run integration tests (requires Docker)
make test-integration

Frontend Development

Adding Components

shadcn/ui components are added via CLI:
cd apps/web
npx shadcn@latest add button

File Conventions

PatternConvention
Pagesapp/{route}/page.tsx
Server Actionsapp/actions/{domain}.ts
Componentscomponents/{name}.tsx
UI primitivescomponents/ui/{name}.tsx
Utilitieslib/{name}.ts
Schemaslib/schemas.ts

Git Conventions

Pre-commit Hook

Install the pre-commit hook to run quality checks before each commit:
make precommit-install
This runs make precommit (fmt check, vet, lint, test) before allowing the commit.

Branch Strategy

  • main — production-ready code
  • Feature branches for development
  • Pull requests with CI checks required