# Handover: P2-8 + P2-9 Planka integration

## What changed

### Docker Compose
- Added `planka` service: ghcr.io/plankanban/planka:latest, port 1337, env BASE_URL/SECRET_KEY/DATABASE_URL, named volumes for avatars/backgrounds/attachments
- Added `planka-db` service: isolated postgres:16, named volume planka-db-data

### Apache
- Added Location /board/ ProxyPass → localhost:1337 in apache.conf

### .env.example
- Added PLANKA_SECRET_KEY (generate: openssl rand -hex 64)
- Added PLANKA_BASE_URL=https://optical-dev.oliver.solutions/board

### Sidebar
- Renamed Planner → Tasks, path /board, opens in new tab via anchor tag with target=_blank
- Added external field to NavItem; template uses component :is to switch between RouterLink and anchor
- Imported RouterLink explicitly (required when used as a value, not just a component)

### Router
- Removed /planner route

### Deleted files
- web/src/views/PlannerView.vue
- web/src/components/tasks/TaskList.vue
- web/src/components/tasks/TaskCard.vue
- Kept: web/src/components/tasks/TaskForm.vue (used by CalendarView)

## Files
- docker-compose.yml — planka + planka-db services
- apache.conf — /board/ ProxyPass
- .env.example — PLANKA_* vars
- web/src/components/shared/Sidebar.vue — Tasks external link
- web/src/router/index.ts — removed /planner

## Verified
- npm run build — clean, no warnings
- Committed & pushed: e401f9a

## Server deploy steps (when user is ready)
1. Add PLANKA_SECRET_KEY to server .env: echo "PLANKA_SECRET_KEY=$(openssl rand -hex 64)" >> /opt/cc-dashboard/.env
2. Add PLANKA_BASE_URL=https://optical-dev.oliver.solutions/board to .env
3. Run deploy: bash /opt/cc-dashboard/deploy.sh
4. Apply Apache config: add /board/ ProxyPass block to VirtualHost, then reload apache2
5. First run: create initial Planka admin user via the /board UI

## Next subtask
P0-3 (BLOCKED): Investigate empty project data — requires live DB access on optical-dev.
Diagnostic SQL ready in previous handover. User needs to deploy first, then investigate.