feat: Phase 9 — Dashboard web embarqué

- Frontend vanilla JS (18.9KB) : dark theme, gallery grid, search, stats, WebSocket
- rust-embed : frontend servi depuis le binaire (zéro dépendance externe)
- API REST fonctionnelle : /api/health, /api/images, /api/search, /api/images/:id, /api/stats
- WebSocket hub (dashmap + broadcast) : notifications temps réel
- ImagoClient: méthode get_raw() pour proxy thumbnails, Serialize sur ImageInfo
- MIME guess pour servir CSS/JS/images avec bons headers
- Fallback SPA : routes inconnues → index.html
- Dépendances : tokio-stream, futures-util, dashmap, chrono
- Testé : health OK, stats JSON, dashboard 18.9KB HTML, WS upgrade 400 (HTTP)

0 errors, 0 warnings (cargo check + build --release)
This commit is contained in:
2026-06-22 17:05:49 -04:00
parent b680c0fff7
commit e92da02067
8 changed files with 994 additions and 42 deletions
+6
View File
@@ -40,6 +40,12 @@ tower = "0.5"
tower-http = { version = "0.6", features = ["cors", "fs", "trace"] }
# Frontend embedding
rust-embed = "8"
# WebSocket broadcast
tokio-stream = "0.1"
futures-util = "0.3"
dashmap = "6"
# Time formatting
chrono = { version = "0.4", features = ["serde"] }
# Platform-specific — Windows
[target.'cfg(windows)'.dependencies]