Skip to main content

Configuration

The project uses a monorepo structure with configuration files spread across different packages. This guide will help you understand and customize the configuration for your application.

Project Configuration

Root Configuration

The root package.json and pnpm-workspace.yaml files define the monorepo structure:

# pnpm-workspace.yaml
packages:
- "apps/*"
- "packages/*"

Web Application Configuration

The Next.js application configuration is located in apps/web/:

  • next.config.js: Next.js configuration
  • tailwind.config.js: Tailwind CSS configuration
  • tsconfig.json: TypeScript configuration (extends from packages/typescript-config)
  • .env.local: Local environment variables

API Configuration

The Hono API configuration is located in apps/api/:

  • tsconfig.json: TypeScript configuration (extends from packages/typescript-config)
  • .env: Environment variables
  • src/config/: Application-specific configuration

Supabase Configuration

The Supabase configuration is located in packages/supabase/:

  • config.toml: Supabase project configuration
  • migrations/: Database migrations
  • seed.sql: Initial database seed data

Environment Variables

Web Application

Create a .env.local file in apps/web/:

NEXT_PUBLIC_SUPABASE_URL=your_supabase_url
NEXT_PUBLIC_SUPABASE_ANON_KEY=your_supabase_anon_key

API Application

Create a .env file in apps/api/:

SUPABASE_URL=your_supabase_url
SUPABASE_SERVICE_ROLE_KEY=your_supabase_service_role_key
PORT=8080

Supabase

Create a .env file in packages/supabase/:

SUPABASE_ACCESS_TOKEN=your_supabase_access_token

TypeScript Configuration

The project uses shared TypeScript configurations in packages/typescript-config/:

  • base.json: Base configuration for all packages
  • nextjs.json: Next.js-specific configuration
  • api.json: API-specific configuration

ESLint Configuration

Shared ESLint configurations in packages/eslint-config/:

  • base.js: Base ESLint rules
  • nextjs.js: Next.js-specific rules
  • api.js: API-specific rules

Development Scripts

The root package.json includes scripts for managing the monorepo:

{
"scripts": {
"dev": "turbo run dev",
"build": "turbo run build",
"test:unit": "turbo run test:unit",
"test:integration": "turbo run test:integration",
"test:e2e": "turbo run test:e2e",
"lint": "turbo run lint",
"format": "prettier --write \"**/*.{ts,tsx,md}\""
}
}

Testing Configuration

Unit Tests

  • apps/web/vitest.config.ts: Frontend test configuration
  • apps/api/vitest.config.ts: API test configuration

Integration Tests

  • packages/supabase/vitest.integration.config.ts: Supabase integration test configuration

E2E Tests

  • e2e/playwright.config.ts: Playwright configuration

Next Steps

Now that you understand the configuration structure, you can:

  1. Set up Supabase locally
  2. Configure the database
  3. Run tests