Development Setup
Tento dokument popisuje, jak nastavit a spustit DnA Cruises systém lokálně pro vývoj.
Požadavky
- Node.js 18+ (pro Workers API a frontend aplikace)
- Node.js 20+ (pro Docusaurus docs - Docusaurus vyžaduje Node 20+)
- npm 9+
- Cloudflare account (pro D1 databázi, R2 storage, Workers)
- Wrangler CLI (Cloudflare CLI tool)
Instalace
1. Clone repository
git clone https://github.com/DnASound/navigator.git
cd navigator
2. Install dependencies
# Install all dependencies (monorepo root + all workspaces)
npm install
Tento příkaz nainstaluje dependencies pro:
- Root workspace (Turbo, shared configs)
apps/web(Next.js web app)apps/load(Next.js load app)apps/docs(Docusaurus docs)packages/api(Shared API types)packages/db(Database schema)packages/ui(Shared UI components)workers/api(Cloudflare Worker API)
3. Setup Cloudflare Wrangler CLI
# Install Wrangler globally
npm install -g wrangler
# Login to Cloudflare
wrangler login
Po přihlášení se otevře browser pro autorizaci.
Lokální vývoj
Spuštění všech aplikací najednou
# Z rootu projektu
npm run dev
Tento příkaz spustí:
- Web app (
apps/web) nahttp://localhost:3000 - Load app (
apps/load) nahttp://localhost:3001 - Docs (
apps/docs) nahttp://localhost:3002 - API Worker (
workers/api) nahttp://localhost:8787
Spuštění jednotlivých aplikací
Web app:
cd apps/web
npm run dev
# Běží na http://localhost:3000
Load app:
cd apps/load
npm run dev
# Běží na http://localhost:3001
Docs:
cd apps/docs
npm run dev
# Běží na http://localhost:3002
API Worker:
cd workers/api
npm run dev
# Běží na http://localhost:8787
Environment Variables pro Frontend
Vytvořte .env.local v apps/web/ a apps/load/:
# apps/web/.env.local
NEXT_PUBLIC_API_URL=http://localhost:8787
# apps/load/.env.local
NEXT_PUBLIC_API_URL=http://localhost:8787
Poznámka: NEXT_PUBLIC_* proměnné jsou dostupné v browseru. Nepoužívejte je pro secrets!
Databáze
Vytvoření D1 databáze
# Vytvořit development databázi
wrangler d1 create dna-cruises-dev
# Vytvořit production databázi (volitelné)
wrangler d1 create dna-cruises-prod
Po vytvoření databáze zkopírujte database_id z výstupu a přidejte ho do wrangler.toml.
Spuštění migrací
Lokální databáze (pro development):
cd workers/api
wrangler d1 migrations apply dna-cruises-dev --local
Remote databáze (pro testování na Cloudflare):
cd workers/api
wrangler d1 migrations apply dna-cruises-dev --remote
Poznámka: Migrace se spouštějí z workers/api adresáře, protože wrangler.toml je tam.
Import inventory dat
Pokud máte _inventura.sql soubor v rootu projektu:
cd packages/db
node scripts/migrate-inventory.js
Nebo použijte D1 SQL editor v Cloudflare Dashboard pro manuální import.
Kontrola databáze
Lokální databáze:
cd workers/api
wrangler d1 execute dna-cruises-dev --local --command "SELECT COUNT(*) as count FROM items"
Remote databáze:
cd workers/api
wrangler d1 execute dna-cruises-dev --remote --command "SELECT COUNT(*) as count FROM items"
Environment Variables
Workers API
Vytvořte .dev.vars v workers/api/:
# JWT Secret - použijte secure random string
# Generování: openssl rand -hex 32
JWT_SECRET=your-secret-key-here
# Environment
ENVIRONMENT=development
# Google OAuth (volitelné pro lokální vývoj)
GOOGLE_CLIENT_ID=your-google-client-id
GOOGLE_CLIENT_SECRET=your-google-client-secret
# DinoSMS API (volitelné pro lokální vývoj)
DINOSMS_API_KEY=your-dinosms-api-key
DINOSMS_SENDER=DnA Cruises
Generování JWT_SECRET:
openssl rand -hex 32
Poznámka: .dev.vars je v .gitignore - necommitovat secrets do gitu!
Frontend aplikace
Vytvořte .env.local v apps/web/ a apps/load/:
# apps/web/.env.local
NEXT_PUBLIC_API_URL=http://localhost:8787
# apps/load/.env.local
NEXT_PUBLIC_API_URL=http://localhost:8787
Poznámka: NEXT_PUBLIC_* proměnné jsou dostupné v browseru. Nepoužívejte je pro secrets!
Workers Builds (CI/CD)
Workers jsou automaticky deployovány přes Cloudflare Workers Builds při push do GitHub.
Konfigurace
- Production: Automaticky deploy při push do
mainbranch - Development: Automaticky deploy při push do
devbranch - Root directory:
workers/api - Deploy commands:
- Production:
npx wrangler deploy --env production - Development:
npx wrangler deploy --env development
- Production:
Bindings
Bindings (D1, R2, environment variables) se automaticky přenášejí z wrangler.toml při každém deployi.
Důležité:
- Deploy command MUSÍ obsahovat
--env <environment>flag - Bindings se přenášejí z
[env.production]nebo[env.development]sekcí vwrangler.toml - Bindings se nemusí zobrazovat v Dashboardu, ale jsou aktivní a funkční
- V build logu uvidíš potvrzení všech bindings při deployi
Ověření deploymentu
Po push do main nebo dev branch:
- Zkontroluj build status v Cloudflare Dashboard → Workers & Pages → [Worker name] → Builds
- V build logu uvidíš seznam všech bindings
- Worker je dostupný na:
https://[worker-name].dnasound.workers.dev
Troubleshooting
Workers API neběží lokálně
Problém: wrangler dev selhává nebo databáze není dostupná
Řešení:
- Zkontroluj, že jsi v
workers/apiadresáři - Zkontroluj, že
.dev.varsexistuje a obsahuje všechny potřebné proměnné - Zkontroluj, že D1 databáze existuje:
wrangler d1 list - Zkontroluj
wrangler.toml- database_id musí být správný
Frontend se nemůže připojit k API
Problém: NEXT_PUBLIC_API_URL není nastaven nebo API neběží
Řešení:
- Zkontroluj, že API Worker běží na
http://localhost:8787 - Zkontroluj, že
.env.localexistuje vapps/web/neboapps/load/ - Restartuj Next.js dev server po změně
.env.local
Docusaurus neběží
Problém: Docusaurus vyžaduje Node.js 20+
Řešení:
# Použij nvm pro přepnutí Node verze
nvm use 20
# Nebo použij Node 20 přímo
node --version # mělo by být v20.x.x
Migrace selhávají
Problém: wrangler d1 migrations apply selhává
Řešení:
- Zkontroluj, že jsi v
workers/apiadresáři - Zkontroluj, že databáze existuje:
wrangler d1 list - Zkontroluj, že
database_idvwrangler.tomlje správný - Pro lokální migrace použij
--localflag - Pro remote migrace použij
--remoteflag
Porty jsou obsazené
Problém: Port 3000, 3001, 3002 nebo 8787 je už používán
Řešení:
- Najdi proces používající port:
lsof -i :3000(macOS/Linux) - Ukonči proces nebo změň port v
package.jsonnebonext.config.js - Pro Next.js:
PORT=3003 npm run dev - Pro Wrangler: změň port v
wrangler.tomlnebo použij--portflag
TypeScript chyby
Problém: TypeScript hlásí chyby po změnách
Řešení:
# Z rootu projektu
npm run type-check
# Nebo v konkrétním workspace
cd apps/web && npm run type-check
Dependencies nejsou nainstalované
Problém: Module not found chyby
Řešení:
# Z rootu projektu
npm install
# Pokud to nepomůže, smaž node_modules a znovu nainstaluj
rm -rf node_modules apps/*/node_modules packages/*/node_modules workers/*/node_modules
npm install