gilles a949a22cca feat(shopping): pré-remplissage bottom sheet + toggle catalogue v0.4.4
- openAddSheet() pré-charge les articles non cochés de la liste courante
  (qty existante, PATCH si modifiée / POST si nouvel article)
- Toggle "Ajouter au catalogue" sur les articles libres nouvellement saisis
  (coché par défaut, créé via createProduct puis lié en product_id)
- Bouton "Confirmer (N)" comptant uniquement les actions réelles
  (new items + existing avec qty modifiée)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-25 09:10:46 +02:00

HomeHub

Application d'organisation personnelle auto-hébergée — PWA mobile-first déployée sur Proxmox 9.

Fonctionnalités

  • Todos — tâches classées par domaine (informatique, DIY, jardinage, cuisine…)
  • Liste de courses — générée depuis les habitudes d'achat, mode magasin avec Wake Lock, suivi des prix, OCR étiquettes et tickets
  • Notes — saisie rapide avec photo, audio, GPS et métadonnées libres
  • MCP Server — expose les données à des agents IA (Hermes, Claude, etc.)

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

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

  • Authentification multi-utilisateurs (JWT)
  • Sync Google Calendar + CalDAV iOS
  • Intégration Home Assistant
  • Webhooks Gitea → Kanban
  • Analyse frigo par Vision LLM (Hermes/Ollama)
S
Description
No description provided
Readme 721 KiB
Languages
JavaScript 41.8%
TypeScript 27%
Python 14.6%
HTML 12.1%
CSS 4.4%