# 🏠 EverShelf

> Gestionnaire de garde-manger auto-hébergé — Suivez vos stocks alimentaires, scannez vos produits, recevez des suggestions de recettes avec l'IA et réduisez le gaspillage.

Fork amélioré du projet original EverShelf avec corrections, améliorations d'ergonomie, intégrations supplémentaires et optimisations.

---

[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
[![PHP](https://img.shields.io/badge/PHP-8.0+-blue.svg)](https://www.php.net/)
[![SQLite](https://img.shields.io/badge/SQLite-3-blue.svg)](https://www.sqlite.org/)
[![Docker](https://img.shields.io/badge/Docker-Compatible-2496ED.svg)](Dockerfile)

---

## ✨ Fonctionnalités principales

### 📦 Gestion des stocks

- Inventaire alimentaire complet
- Gestion des emplacements :
  - 🏠 Placard
  - ❄️ Réfrigérateur
  - 🧊 Congélateur
  - 📍 Emplacements personnalisés, entièrement gérés depuis une page **🔧 Configuration** dédiée (ajout, modification, suppression sans toucher au code)
- Sous-catégorie dédiée aux boissons (vin, bière, spiritueux, soda, jus, eau...) pour filtrer et trier l'inventaire plus précisément
- Scan de codes-barres avec la caméra du téléphone
- Ajout rapide de produits
- Suivi des dates de péremption
- Gestion des produits ouverts
- Support des produits sous vide
- Détection des incohérences de stock

---

## 🤖 Intelligence artificielle (Google Gemini)

EverShelf peut utiliser l'IA pour :

- 📸 Identifier un produit depuis une photo
- 📅 Lire automatiquement une date limite de consommation
- 🧊 Proposer un stockage adapté
- 🍳 Générer des recettes selon votre inventaire
- 💬 Répondre aux questions sur vos produits
- 🛒 Améliorer les suggestions de courses

> L'IA est optionnelle. EverShelf fonctionne sans clé Gemini.

---

## 🛒 Liste de courses intelligente

- Création automatique depuis les ruptures de stock
- Prévisions de besoins
- Synchronisation avec Bring!
- Nettoyage automatique des doublons
- Suggestions d'achat personnalisées

---

## 🍳 Mode cuisine

- Recettes étape par étape
- Mode mains libres
- Synthèse vocale (TTS)
- Minuteurs automatiques
- Suivi des ingrédients utilisés
- Conseils anti-gaspillage

---

## ♻️ Réduction du gaspillage

- Suivi des aliments consommés ou jetés
- Analyse des pertes
- Alertes de péremption
- Suggestions pour utiliser les produits bientôt périmés

---

## 🏡 Intégrations

### Home Assistant

Intégration native disponible :

- Capteurs de stock
- Dates de péremption
- Liste de courses
- Calendrier des produits
- Actions personnalisées
- Suggestions de recettes IA

Compatible avec une installation 100% locale.

---

## 📱 Application mobile / PWA

- Interface adaptée smartphone
- Installation comme une application
- Synchronisation multi-appareils
- Mode hors-ligne :
  - consultation du stock
  - actions mises en attente
  - synchronisation automatique au retour réseau

---

## 📺 Mode tablette (Kiosque Android)

- Affichage plein écran
- Verrouillage kiosque
- Scan caméra
- Support TTS natif Android
- Découverte automatique du serveur
- Support des balances Bluetooth

---

## 🚀 Installation rapide

### Prérequis

- PHP 8.0+
- SQLite 3
- Extensions PHP :
  - `pdo_sqlite`
  - `curl`
  - `mbstring`
  - `json`

Docker est recommandé.

---

### 🐳 Installation Docker (CLI)

```bash
git clone https://git.mashome.fr/morgane/EverShelf.git
cd EverShelf
cp .env.example .env
nano .env
docker compose up -d
```

Puis ouvrez :

```
http://localhost:8080
```

---

### 🐳 Déploiement via Portainer

1. Dans Portainer, va dans **Stacks** → **Add stack**
2. Donne un nom à la stack (ex : `evershelf`)
3. Colle le contenu de ton `docker-compose.yml` dans l'éditeur web (ou utilise l'option **Repository** en pointant vers `https://git.mashome.fr/morgane/EverShelf.git` et le chemin du fichier compose)
4. Renseigne tes variables d'environnement dans la section **Environment variables** (ou via un fichier `.env` à la racine du repo)
5. Clique sur **Deploy the stack**

Pour mettre à jour après une modification de code :
- Va dans **Stacks** → ta stack → **Update the stack**
- Coche bien **« Re-pull image »** / **« Re-build image »** avant de valider — sinon Portainer redémarre le conteneur avec l'image déjà construite en cache, sans prendre en compte tes changements.

---

## ⚙️ Configuration

Exemple de fichier `.env` :

```env
# IA Google Gemini (optionnel)
GEMINI_API_KEY=votre_cle

# Bring! (optionnel)
BRING_EMAIL=email@example.com
BRING_PASSWORD=motdepasse

# Sécurité API
API_TOKEN=

# Nettoyage automatique
RECIPE_RETENTION_DAYS=7
TRANSACTION_RETENTION_DAYS=90
```

---

## 🔒 Vie privée

EverShelf est conçu pour fonctionner en auto-hébergement :

- Pas de compte obligatoire
- Pas de cloud imposé
- Données stockées localement
- SQLite comme base de données
- Les fonctions IA utilisent uniquement les services configurés par l'utilisateur

---

## 🛠️ Développement

Technologies principales :

- PHP
- SQLite
- JavaScript
- HTML/CSS
- Docker

---

## 📜 Licence

Projet sous licence MIT.

---

## 🙏 Crédits

Projet original :

https://github.com/dadaloop82/EverShelf

Ce dépôt est un fork indépendant contenant des améliorations et adaptations personnelles.