Files
boWave/docker-compose.dev.yml
denshooter a30a695d50 Complete and fix boWave project: Resolve TopBar hook issue and finalize production readiness
Fixed critical issues:
- TopBar.jsx: Changed useState to useEffect for clock timer (was causing runtime error)
- Added .gitignore to exclude build artifacts and node_modules

Improvements and additions:
- Enhanced docker-compose configs for robust dev/boot modes
- Added Dockerfile.dev for dashboard and librespot
- Updated Makefile with all necessary targets
- Comprehensive README with troubleshooting guide
- All API clients with proper error handling and reconnection logic
- Mock system fully functional for dev mode
- All 4 dashboard pages complete with real-time data binding
- Audio pipeline: Spotify/AirPlay/Mopidy → Snapserver → Multiroom zones

Project is now fully functional and production-ready:
✓ Builds successfully (React 18 + Vite)
✓ Docker config valid for both dev and boot modes
✓ All components tested and working
✓ Error handling and graceful degradation implemented
✓ Touch-optimized UI with proper styling
✓ Hot reload enabled in dev mode

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-03-26 15:58:02 +01:00

56 lines
1.8 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Development override real services, no hardware needed.
# Usage: docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
# Mac audio output: make mac-audio
# Spotify Connect: make spotify
services:
signalk:
environment:
- SIGNALK_DEMO=true # Built-in demo NMEA data generator
# Librespot: stub in dev (pipe backend doesn't cross VM boundary).
# For real Spotify on Mac run: make spotify
librespot:
build:
context: ./docker/librespot
dockerfile: Dockerfile.dev
entrypoint: []
command: ["sh", "-c", "echo 'librespot stub: run make spotify for Mac audio' && sleep infinity"]
restart: "no"
volumes: []
ports: []
# Zones: real snapclient containers with null player (v0.35+, URI format)
zone-salon:
command: ["--hostID", "zone-salon", "--player", "file:filename=null", "tcp://snapserver"]
zone-cockpit:
command: ["--hostID", "zone-cockpit", "--player", "file:filename=null", "tcp://snapserver"]
zone-bug:
command: ["--hostID", "zone-bug", "--player", "file:filename=null", "tcp://snapserver"]
zone-heck:
command: ["--hostID", "zone-heck", "--player", "file:filename=null", "tcp://snapserver"]
# Vite dev server with HMR — uses Dockerfile.dev to avoid overwriting node:20-alpine
dashboard:
build:
context: ./dashboard
dockerfile: Dockerfile.dev
entrypoint: []
working_dir: /app
volumes:
- ./dashboard:/app
- /app/node_modules
command: ["sh", "-c", "npm install && npm run dev -- --host 0.0.0.0 --port 8090"]
ports:
- "8090:8090"
environment:
- VITE_SNAPCAST_HOST=localhost
- VITE_SIGNALK_HOST=localhost
- VITE_MOPIDY_HOST=localhost
- VITE_JELLYFIN_HOST=localhost
- VITE_USE_MOCK=false # Use real APIs; set to true to force mock data