2.5 KiB
2.5 KiB
Voyage Development Instructions (Claude Code)
Project
- Name: Voyage
- Purpose: Build and maintain a self-hosted travel companion web app (fork of AdventureLog).
- Stack: SvelteKit 2 (TypeScript) frontend · Django REST Framework (Python) backend · PostgreSQL + PostGIS · Memcached · Docker · Bun (frontend package manager)
Architecture Overview
- Use the API proxy pattern: never call Django directly from frontend components.
- Route all frontend API calls through
frontend/src/routes/api/[...path]/+server.ts. - Proxy target is
http://server:8000; preserve session cookies and CSRF behavior. - Service ports:
web→:8015server→:8016db→:5432cache→ internal only
- Keep authentication session-based with
django-allauth. - Fetch CSRF token from
/auth/csrf/and sendX-CSRFTokenon mutating requests. - Preserve mobile middleware support for
X-Session-Token.
Codebase Layout
- Backend root:
backend/server/- Apps:
adventures/,users/,worldtravel/,integrations/,achievements/,chat/
- Apps:
- Frontend root:
frontend/src/- Routes:
src/routes/ - Shared types:
src/lib/types.ts - Components:
src/lib/components/ - Locales:
src/locales/
- Routes:
Development Workflow
- Develop Docker-first. Start services with Docker before backend-dependent work.
- Use these commands:
Frontend
cd frontend && npm run formatcd frontend && npm run lintcd frontend && npm run checkcd frontend && npm run build
Backend
docker compose exec server python3 manage.py testdocker compose exec server python3 manage.py migrate
Docker
docker compose up -ddocker compose down
Pre-Commit Checklist
Run in this exact order:
cd frontend && npm run formatcd frontend && npm run lintcd frontend && npm run checkcd frontend && npm run build
ALWAYS run format before committing.
Known Issues (Expected)
- Frontend
npm run check: 3 type errors + 19 warnings expected - Backend tests: 2/3 fail (expected)
- Docker dev setup has frontend-backend communication issues (500 errors beyond homepage)
Key Patterns
- i18n: wrap user-facing strings with
$t('key') - API access: always use proxy route
/api/[...path]/+server.ts - Styling: prefer DaisyUI semantic classes (
bg-primary,text-base-content) - CSRF handling: use
/auth/csrf/+X-CSRFToken
Conventions
- Do not attempt to fix known test/configuration issues as part of feature work.