# Phase 6: Deployment - Context
**Gathered:** 2026-02-01
**Status:** Ready for planning
## Phase Boundary
Application runs in Docker with persistent data and easy configuration. Single docker-compose.yml starts the entire application. Data persists via named volumes.
## Implementation Decisions
### Container Setup
- Node Alpine base image (small ~150MB)
- Multi-stage build: separate build dependencies from runtime
- Run as non-root user ('node' user for security)
- Include /health endpoint for Docker health checks
### Environment Configuration
- Extended config scope: PORT, DATA_DIR, log level, max upload size, etc.
- TASKPLANER_ prefix for all env vars (e.g., TASKPLANER_PORT)
- All env vars have sensible defaults (works out of the box, zero config required)
- Document in both README and .env.example template file
### Data Persistence
- Single volume for all data (/data mount with db + images subdirs)
- Include backup.sh script that users can run
- Backups stored in local ./backups directory by default
- App auto-creates /data/db and /data/images directories on first run
### Production Assumptions
- Designed to run behind reverse proxy (Nginx/Traefik handles HTTPS)
- docker-compose includes app only (no bundled reverse proxy)
- JSON logging format for log aggregators
- Trust X-Forwarded headers from proxy (for correct client IP logging)
### Claude's Discretion
- Exact multi-stage build structure
- Which extended env vars to include beyond PORT/DATA_DIR
- Health check implementation details
- Backup script format (tar, timestamp naming)
## Specific Ideas
- Works out of the box with zero configuration
- Single command to start: `docker-compose up -d`
- Backup script should be simple to run manually
## Deferred Ideas
None — discussion stayed within phase scope
---
*Phase: 06-deployment*
*Context gathered: 2026-02-01*