Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tech Stack

Build System

  • Turborepo for monorepo orchestration
  • npm workspaces for package management
  • TypeScript 5.9 across all packages

Frontend (Jaguar)

  • Nuxt 4 (Vue 3) with SSR
  • Tailwind CSS 4 for styling
  • shadcn-vue (reka-ui) for UI components
  • TanStack Query for data fetching
  • URQL for GraphQL client
  • VeeValidate + Zod for form validation
  • better-auth for authentication

Backend (Puma, Tiger)

  • Fastify 5 web framework
  • Mercurius for GraphQL API
  • Drizzle ORM for database access
  • BullMQ for job queues
  • node-rdkafka for Kafka integration
  • OpenSearch client for search
  • Rollbar for error tracking
  • Elastic APM for monitoring

Databases

  • PostgreSQL (db2: growthbook, db3: tigerdb)
  • MySQL (db1: legacy/external)
  • Redis for caching and queues
  • OpenSearch for search indexes

Shared Packages

  • @hh-felidae/database: Drizzle schemas and DB utilities
  • @hh-felidae/shared: Common utilities and GraphQL codegen

Common Commands

# Install dependencies
npm install

# Development
npm run dev              # Start all apps
npm run jaguar           # Start frontend only
npm run puma             # Start puma backend only
npm run tiger            # Start tiger backend only

# Build
npm run build            # Build all packages

# Linting
npm run lint             # Lint all packages
npm run lint:fix         # Fix lint issues

# GraphQL codegen (in app directories)
npm run codegen

# Database (in pkgs/database)
npm run db:push          # Push schema changes
npm run db:generate      # Generate migrations
npm run db:migrate       # Run migrations
npm run db2:studio       # Open Drizzle Studio for db2
npm run db3:studio       # Open Drizzle Studio for db3

# Docker services
docker compose up -d     # Start local infrastructure

Code Style

  • ESLint with @antfu/eslint-config
  • Consistent across all packages