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 configurationtailwind.config.js
: Tailwind CSS configurationtsconfig.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 variablessrc/config/
: Application-specific configuration
Supabase Configuration
The Supabase configuration is located in packages/supabase/
:
config.toml
: Supabase project configurationmigrations/
: Database migrationsseed.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 packagesnextjs.json
: Next.js-specific configurationapi.json
: API-specific configuration
ESLint Configuration
Shared ESLint configurations in packages/eslint-config/
:
base.js
: Base ESLint rulesnextjs.js
: Next.js-specific rulesapi.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 configurationapps/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: