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