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>
This commit is contained in:
2026-03-26 15:58:02 +01:00
parent 67b9c2ba92
commit a30a695d50
14 changed files with 339 additions and 126 deletions

View File

@@ -1,4 +1,6 @@
.PHONY: dev boot stop logs rebuild status pipes
.PHONY: dev boot stop logs rebuild status pipes mac-audio spotify
# ── Docker ─────────────────────────────────────────────────────────────────────
dev: pipes
docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d
@@ -7,16 +9,44 @@ boot: pipes
docker compose up -d
stop:
docker compose -f docker-compose.yml -f docker-compose.dev.yml down
stop-boot:
docker compose down
logs:
docker compose logs -f
docker compose -f docker-compose.yml -f docker-compose.dev.yml logs -f
rebuild:
docker compose build --no-cache
docker compose -f docker-compose.yml -f docker-compose.dev.yml build --no-cache
status:
docker compose ps
docker compose -f docker-compose.yml -f docker-compose.dev.yml ps
pipes:
@bash scripts/init-pipes.sh
# ── Mac native audio (dev) ─────────────────────────────────────────────────────
# Runs a real Snapcast client on the Mac, connected to the Docker snapserver.
# Audio plays through Mac speakers. This is the "mac-audio" zone.
# Requires: brew install snapcast
mac-audio:
@echo "Starting Snapcast client → Mac speakers (zone: mac-audio)"
@which snapclient > /dev/null || (echo "Installing snapcast via Homebrew..." && brew install snapcast)
snapclient --host localhost --port 1704 --hostID mac-audio --player default
# ── Spotify Connect on Mac ─────────────────────────────────────────────────────
# Runs librespot natively on Mac. The Spotify app will see "Bordanlage" as device.
# Audio goes through Mac speakers directly (rodio backend).
# Requires: brew install librespot
# Note: For Snapcast multiroom, use the pipe backend instead (boot mode only).
spotify:
@echo "Starting Spotify Connect (librespot) on Mac..."
@which librespot > /dev/null || (echo "Installing librespot via Homebrew..." && brew install librespot)
librespot \
--name "$${SPOTIFY_NAME:-Bordanlage}" \
--bitrate $${SPOTIFY_BITRATE:-320} \
--backend rodio \
--zeroconf-port 57621