2129da4f55ddd22dd63d7f14f08aa14112fa3d10
- Audio : minWidth:0 + onLoadedMetadata volume=0.5 (plus de débordement) - Grille : repeat(3,1fr) sur laptop, 1fr sur mobile (était auto-fill) - Header laptop : bouton "Nouvelle note" (fa-plus + accent) visible lg:flex - SideNav : DbStatusBar en bas — LED verte/rouge + taille BDD, polling 30s - docs/plan.md : Phase 4c documentée v0.5.7 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
HomeHub
Application d'organisation personnelle auto-hébergée — PWA mobile-first déployée sur Proxmox 9.
Fonctionnalités (v0.5.1)
- Todos — tâches classées par domaine, priorité, date objectif, photo, GPS. Swipe gauche = éditer, swipe droite = terminer.
- Liste de courses — générée automatiquement depuis les habitudes d'achat (liste magique), mode magasin plein-écran avec Wake Lock, catalogue enrichi avec tags et stats d'achat, bottom sheet multi-select.
- Notes — saisie rapide avec photo (Ctrl+V ou appareil photo), audio, GPS et métadonnées libres.
- Paramètres — thème dark / light / system, taille de police ajustable avec aperçu temps réel.
- MCP Server — expose les données à des agents IA (Hermes, Claude, etc.) — à venir
UX mobile
- Touch targets 48px minimum, swipe gestures sur toutes les listes
- Bottom sheet qui remonte automatiquement au-dessus du clavier virtuel iOS
- Collage d'image par Ctrl+V dans les formulaires Todo et Catalogue
- Wake Lock API (écran allumé en mode magasin)
Stack technique
| Composant | Technologie |
|---|---|
| Frontend | React 18 + Vite + TypeScript + Tailwind CSS |
| Backend | Python 3.12 + FastAPI (async) |
| Base de données | PostgreSQL 16 (schémas multiples) |
| Migrations | Alembic |
| OCR | Tesseract 5 (service Docker dédié, partagé entre modules) |
| Scan code-barres | zxing-js (frontend, iOS + Android) |
| Catalogue produits | OpenFoodFacts API (~3M produits alimentaires) |
| Recherche image | SearXNG (auto-hébergé, fallback image produits) |
| Déploiement | Docker Compose · Nginx Proxy Manager |
| Design system | Gruvbox seventies (design_system/) |
Démarrage rapide
cd ~/Documents/projet/home_hub
# Lancer l'app (première fois ou après un arrêt)
docker compose up -d
# Frontend → http://localhost:3001 (ou http://<IP-locale>:3001 sur le réseau)
# API Swagger → http://localhost:8000/docs
Après modification du code :
# Rebuild + relancer un service
docker compose build backend && docker compose up -d backend
docker compose build frontend && docker compose up -d frontend
# Rebuild tout
docker compose build && docker compose up -d
Maintenance :
docker compose down # Arrêter (données conservées)
docker compose logs -f # Logs en direct
docker compose ps # État des conteneurs
Structure du projet
home_hub/
├── ocr/
│ ├── app.py # Service FastAPI OCR (Tesseract + Pillow)
│ └── Dockerfile
├── product-search/
│ ├── app.py # Client OpenFoodFacts + proxy SearXNG images
│ └── Dockerfile
├── backend/
│ ├── app/
│ │ ├── api/ # Endpoints par domaine (todos, shopping, notes, media, mcp)
│ │ ├── core/ # Config, base de données, middleware
│ │ ├── models/ # Modèles SQLAlchemy
│ │ ├── schemas/ # Schémas Pydantic
│ │ └── services/
│ │ ├── media.py # Upload, compression, génération miniatures (Pillow)
│ │ ├── ocr.py # Client vers service ocr:8001
│ │ └── ... # Suggestions shopping, sync calendrier (futur)
│ ├── alembic/ # Migrations de base de données
│ ├── Dockerfile
│ └── requirements.txt
├── frontend/
│ ├── src/
│ │ ├── components/ # Composants React
│ │ ├── pages/ # Pages par module
│ │ ├── hooks/ # Hooks personnalisés (camera, geolocation, wake-lock…)
│ │ └── api/ # Client API typé
│ ├── public/
│ │ └── manifest.json
│ ├── Dockerfile
│ └── vite.config.ts
├── design_system/ # Design system Gruvbox seventies (tokens + composants)
├── docs/
│ ├── spec.md # Spécification fonctionnelle complète
│ └── plan.md # Plan de développement par phases
├── docker-compose.yml
├── docker-compose.dev.yml
└── .env.example
Documentation
- Spécification fonctionnelle — features détaillées, schéma DB, interfaces
- Plan de développement — phases et tâches
- Design system — composants et règles visuelles
- API REST :
http://localhost:8000/docs(Swagger auto-généré par FastAPI)
Déploiement (Proxmox)
# Production
docker compose up -d
# Nginx Proxy Manager pointe vers :
# homehub.local → frontend:3000
# homehub.local/api → backend:8000
# homehub.local/mcp → backend:8000/mcp (pour les agents IA)
Évolutions prévues
- Phase 5 — Scan code-barres (zxing-js) + enrichissement catalogue via OpenFoodFacts
- Phase 6 — Service OCR dédié (Tesseract 5, conteneur partagé)
- Phase 7 — Shopping avancé : OCR étiquettes prix, historique et comparaison prix par magasin
- Phase 8 — MCP Server : outils IA (
get_todos,add_shopping_item,search_notes…) - Phase 9 — Authentification multi-utilisateurs (JWT)
- Phase 10 — Calendrier : sync Google Calendar + CalDAV iOS, intégration Home Assistant, webhooks Gitea
- Phase 11 — Vision LLM : analyse frigo → suggestions liste de courses (Hermes/Ollama)
Description
Languages
JavaScript
41.8%
TypeScript
27%
Python
14.6%
HTML
12.1%
CSS
4.4%