Replace build-time NEXT_PUBLIC_* environment variables with server-side
runtime configuration. This allows changing the Pastel API URL without
rebuilding the Docker image.
**Changes:**
- Add Next.js API proxy route at /api/pastel/[...path] for server-side proxying
- Update API client to use proxy endpoint instead of direct API URL
- Replace NEXT_PUBLIC_API_URL with server-side PASTEL_API_URL
- Remove build arguments from Dockerfile (no longer needed)
- Simplify docker-compose.yml to use runtime environment variables only
- Update all .env files to reflect new configuration approach
- Add comprehensive DOCKER.md documentation
**Benefits:**
- No rebuild required to change API URL
- Same image works across all environments (dev/staging/prod)
- Better security (API URL not exposed in client bundle)
- Simpler deployment and configuration management
**Migration:**
Old: NEXT_PUBLIC_API_URL (build-time, embedded in bundle)
New: PASTEL_API_URL (runtime, read by server proxy)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Install curl in Alpine image for health checks
- Add ARG and ENV declarations for NEXT_PUBLIC_* variables in builder stage
- Pass build args from docker-compose.yml to Dockerfile
- Update health checks to use curl instead of node -e
- Update .env.example with helpful comments for Docker vs local dev
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
Add comprehensive Docker deployment with automated builds:
**Docker Configuration:**
- Multi-stage Dockerfile for optimized Next.js production builds
- Stage 1: Install dependencies with pnpm
- Stage 2: Build application with standalone output
- Stage 3: Minimal runtime image with non-root user
- Includes health check endpoint
- Final image size optimized
- .dockerignore for efficient build context
- Enable standalone output in next.config.ts for Docker
**GitHub Actions Workflow:**
- Automated Docker image builds on push to main and tags
- Multi-platform support (linux/amd64, linux/arm64)
- Push to GitHub Container Registry (ghcr.io)
- Smart tagging strategy:
- `latest` for main branch
- `vX.X.X` for semver tags
- `main-SHA` for commit-specific images
- Build cache optimization with GitHub Actions cache
- Artifact attestation for supply chain security
**Docker Compose:**
- Combined stack for UI + API
- Environment variable configuration
- Health checks for both services
- Automatic restart policies
- Shared network configuration
**Documentation:**
- Updated README with Docker deployment instructions
- Pre-built image usage from GHCR
- Docker Compose setup guide
- Local build instructions
- Available image tags reference
**Production Ready:**
- Images automatically published to ghcr.io/valknarness/pastel-ui
- Supports both x64 and ARM64 architectures
- Health checks for container orchestration
- Environment-based configuration
- Non-root user for security
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>