# 🍷 Cave à Vin

Application web locale de gestion d'inventaire de cave à vin.
100 % local — aucune connexion réseau externe, aucune télémétrie.

## Prérequis

- Python 3.12+
- pip3

## Installation

```bash
cd cave_a_vin
pip3 install -r requirements.txt
```

## Lancement

```bash
./run.sh
```

Ou directement :

```bash
uvicorn main:app --host 0.0.0.0 --port 8000 --reload
```

Ouvrir ensuite : **http://localhost:8000**

> Depuis un iPad sur le réseau local, remplacer `localhost` par l'IP de votre Mac
> (ex. `http://192.168.1.10:8000`).

## Fichiers importants

| Fichier | Rôle |
|---|---|
| `cave.db` | Base de données SQLite — **c'est le seul fichier à sauvegarder** |
| `backups/` | Copies horodatées créées via le bouton "💾 Sauvegarder" |
| `static/` | Frontend HTML/CSS/JS (servi par FastAPI) |

## Sauvegarde

**Méthode recommandée (depuis l'interface) :**
Aller dans "Ma Cave" → cliquer **💾 Sauvegarder**.
Cela crée un fichier `backups/cave_YYYYMMDD_HHMMSS.db`.

**Sauvegarde manuelle :**
```bash
cp cave.db cave_backup_$(date +%Y%m%d).db
```

**Restauration :**
```bash
cp backups/cave_20240115_143022.db cave.db
```

## Fonctionnalités V1

- **CRUD complet** : ajouter, modifier, supprimer des bouteilles
- **Liste triable** : clic sur l'en-tête de colonne pour trier
- **Recherche + filtres** : texte libre, couleur, région
- **Décrément rapide** : bouton 🍷 pour noter qu'on a bu une bouteille
- **Tableau de bord** : statistiques, répartitions, valeur totale
- **Alertes apogée** : bouteilles à boire dans ≤ 2 ans
- **Export CSV** : télécharger l'inventaire complet
- **Sauvegarde en un clic** : copie horodatée de cave.db

## Structure du projet

```
cave_a_vin/
├── main.py          # Backend FastAPI + routes API
├── models.py        # Modèles SQLModel (table bouteilles)
├── database.py      # Moteur SQLite
├── requirements.txt # Dépendances Python
├── run.sh           # Script de lancement
├── cave.db          # Base de données (créée au démarrage)
├── backups/         # Sauvegardes horodatées
└── static/
    ├── index.html   # Interface (SPA)
    ├── style.css    # Styles
    └── app.js       # Logique frontend
```
