Replaced REST API dependency with @valknarthing/pastel-wasm (130KB) for
complete browser-based color operations. The application is now fully
static (2.2MB total) with zero network latency and offline support.
**Key Changes:**
1. **WASM Integration:**
- Added @valknarthing/pastel-wasm dependency (0.1.0)
- Created lib/api/wasm-client.ts wrapper matching API interface
- Updated lib/api/client.ts to use WASM client by default
- All 18 color operations now run locally in browser
2. **Static Export Configuration:**
- Changed next.config.ts output from 'standalone' to 'export'
- Disabled image optimization for static export
- Removed API proxy route (app/api/pastel/[...path]/route.ts)
- Updated package.json scripts (removed dev:api, added serve)
3. **Docker Optimization:**
- Migrated from Node.js standalone to nginx-alpine
- Created nginx.conf with SPA routing and WASM mime types
- Updated Dockerfile for static file serving
- Reduced image size from ~150MB to ~25MB
- Changed port from 3000 to 80 (standard HTTP)
- Simplified docker-compose.yml (removed pastel-api service)
4. **Documentation Updates:**
- Updated README.md with WASM benefits and deployment options
- Added Key Benefits section highlighting zero-latency features
- Rewrote deployment section for static hosting platforms
- Updated CLAUDE.md tech stack and architecture
- Removed obsolete docs: DEV_SETUP.md, DOCKER.md, IMPLEMENTATION_PLAN.md
**Benefits:**
- 🚀 Zero Latency - All operations run locally via WebAssembly
- 📱 Offline First - Works completely offline after initial load
- 🌐 No Backend - Fully static, deploy anywhere
- ⚡ Fast - Native-speed color operations in browser
- 📦 Small - 2.2MB total (130KB WASM, 2.07MB HTML/CSS/JS)
**Deployment:**
Can now be deployed to any static hosting platform:
- Vercel, Netlify, Cloudflare Pages (zero config)
- GitHub Pages, S3, CDN
- Self-hosted nginx/Apache
- Docker (optional, nginx-based)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
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>
Fix API response format mismatches and implement all remaining features:
**API Integration Fixes:**
- Fix ManipulationPanel to use `colors` instead of `results` from API responses
- Fix gradient endpoint to use `gradient` array from API response
- Fix color blindness simulator to use correct field names (`input`/`output` vs `original`/`simulated`)
- Fix text color optimizer request field (`backgrounds` vs `background_colors`)
- Fix method name casing: `simulateColorBlindness` (capital B)
- Add palette generation endpoint integration
**Type Definition Updates:**
- Update GradientData to match API structure with `gradient` array
- Update ColorBlindnessData to use `colors` with `input`/`output`/`difference_percentage`
- Update TextColorData to use `colors` with `textcolor`/`wcag_aa`/`wcag_aaa` fields
- Add PaletteGenerateRequest and PaletteGenerateData types
**Completed Features:**
- Harmony Palettes: Now uses dedicated `/palettes/generate` API endpoint
- Simplified from 80 lines of manual color theory to single API call
- Supports 6 harmony types: monochromatic, analogous, complementary, split-complementary, triadic, tetradic
- Text Color Optimizer: Full implementation with WCAG compliance checking
- Automatic black/white text color selection
- Live preview with contrast ratios
- AA/AAA compliance indicators
- Color Blindness Simulator: Fixed and working
- Shows difference percentage for each simulation
- Side-by-side comparison view
- Gradient Creator: Fixed to use correct API response structure
- Batch Operations: Fixed to extract output colors correctly
**UI Improvements:**
- Enable all accessibility tool cards (remove "Coming Soon" badges)
- Enable harmony palettes card
- Add safety check for gradient state to prevent undefined errors
All features now fully functional and properly integrated with Pastel API.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>