Files
garagemanager/README.md
T
perco 97ae64caf0 feat: GarageManager v2.1 - véhicules, interventions, pièces
- Application FastAPI avec SQLite et Jinja2
- Gestion des véhicules (VIN, immatriculation, infos libres)
- Gestion des interventions avec statut (en_attente/en_cours/termine)
- Gestion des pièces détachées avec photos
- Tableau de bord avec statistiques
- Déploiement Docker + Traefik (HTTPS)
- README complet en français
2026-03-15 12:40:50 +01:00

6.9 KiB

🔧 GarageManager

Application web de gestion de garage automobile — véhicules, interventions, pièces détachées.

FastAPI Python Docker SQLite

🌐 URL de production : https://garage.nas.percolouco.com


📋 Description

GarageManager est une application web légère permettant de gérer un garage automobile personnel ou professionnel. Elle permet de suivre les véhicules, leurs interventions mécaniques et les pièces utilisées, avec un tableau de bord synthétique.

Pensée pour être self-hostée, elle tourne dans un conteneur Docker derrière un reverse proxy Traefik.


🛠️ Stack technique

Composant Technologie Rôle
Backend FastAPI 0.109 API REST + rendu SSR
Base de données SQLite Stockage persistant, fichier unique
Templates Jinja2 3.1 Rendu HTML côté serveur
CSS Tailwind CSS (CDN) Interface responsive moderne
Serveur ASGI Uvicorn Serveur HTTP haute performance
Conteneur Docker + Compose Déploiement clé en main
Reverse proxy Traefik HTTPS automatique (Let's Encrypt)

Fonctionnalités

🚗 Gestion des véhicules

  • Ajout de véhicules avec les informations clés :
    • Immatriculation (clé unique, mise en majuscules automatiquement)
    • Marque, modèle, année, kilométrage
    • Numéro VIN (Vehicle Identification Number)
  • Infos libres par véhicule : notes texte, liens URL, photos — système extensible
  • Recherche par immatriculation, marque, modèle ou VIN
  • Compteur d'interventions par véhicule
  • Suppression en cascade (interventions + pièces supprimées automatiquement)

🔩 Gestion des interventions

  • Création d'interventions liées à un véhicule
  • Champs disponibles :
    • Description de l'intervention
    • Statut : En attente / En cours / Terminé
    • Coût main-d'œuvre
    • Technicien responsable
    • Notes internes
  • Suivi du coût total (main-d'œuvre + pièces)
  • Filtrage par statut

🔧 Gestion des pièces détachées

  • Association de pièces à chaque intervention :
    • Nom de la pièce
    • Référence constructeur
    • Marque de la pièce
    • Prix unitaire et quantité
    • Photo (upload d'image)
  • Calcul automatique du coût total par intervention

📊 Tableau de bord

  • Vue synthétique en temps réel :
    • Nombre de véhicules enregistrés
    • Interventions par statut (en attente / en cours / terminées)
    • Coût total des interventions terminées (pièces + main-d'œuvre)
  • 5 dernières interventions avec accès rapide

📁 Structure du projet

garagemanager/
├── app/
│   ├── __init__.py
│   └── main.py              # Application FastAPI (routes, DB, logique)
├── templates/
│   ├── base.html            # Template de base (nav, layout)
│   ├── dashboard.html       # Tableau de bord
│   ├── vehicules.html       # Liste des véhicules
│   ├── vehicule_form.html   # Formulaire ajout/édition véhicule
│   ├── vehicule_detail.html # Détail véhicule + interventions + infos
│   ├── interventions.html   # Liste des interventions
│   ├── intervention_form.html    # Formulaire ajout/édition intervention
│   └── intervention_detail.html  # Détail intervention + pièces
├── data/                    # Volume persistant (ignoré par git)
│   └── garage.db            # Base SQLite
├── Dockerfile               # Image Docker Python 3.12-slim
├── docker-compose.yml       # Déploiement avec Traefik
├── requirements.txt         # Dépendances Python
└── README.md

🚀 Installation

Prérequis

  • Docker & Docker Compose installés
  • (Optionnel) Traefik configuré pour HTTPS automatique

1. Cloner le dépôt

git clone http://192.168.1.29:3500/perco/garagemanager.git
cd garagemanager

2. Démarrer avec Docker Compose

Avec Traefik (production) :

docker compose up -d

L'application sera accessible via https://garage.nas.percolouco.com si Traefik est configuré avec le réseau proxy.

Sans Traefik (local/dev) :

Modifier docker-compose.yml pour exposer un port directement :

ports:
  - "8000:8000"

Puis :

docker compose up -d

Accessible sur : http://localhost:8000

3. Développement local (sans Docker)

# Créer un environnement virtuel
python3 -m venv venv
source venv/bin/activate

# Installer les dépendances
pip install -r requirements.txt

# Lancer le serveur avec rechargement automatique
DB_PATH=./data/garage.db uvicorn app.main:app --reload --port 8000

Accessible sur : http://localhost:8000


🗄️ Base de données

La base SQLite est initialisée automatiquement au démarrage. Le schéma comprend 4 tables :

Table Description
vehicules Véhicules (immat, marque, modèle, VIN, km)
vehicule_infos Infos libres par véhicule (texte/url/image)
interventions Interventions mécaniques avec statut et coûts
pieces Pièces détachées liées aux interventions

Les suppressions en cascade sont gérées par des contraintes SQLite (ON DELETE CASCADE).


🐳 Variables d'environnement

Variable Défaut Description
DB_PATH /data/garage.db Chemin de la base SQLite
UPLOAD_DIR /data/uploads Dossier de stockage des photos

🔄 Mise à jour

# Arrêter le conteneur
docker compose down

# Récupérer les dernières modifications
git pull

# Reconstruire l'image et redémarrer
docker compose up -d --build

📝 Notes

  • Les données sont persistées dans le dossier ./data/ (volume Docker)
  • Les photos uploadées sont stockées dans ./data/uploads/
  • Le dossier data/ est exclu du dépôt git (.gitignore)
  • L'application ne gère pas d'authentification — à protéger via Traefik middleware si nécessaire

🏷️ Versions

Version Notes
v2.1 Infos libres véhicule (texte/url/image), upload photos pièces
v2.0 Ajout gestion des pièces détachées
v1.0 Gestion véhicules + interventions

Développé avec ❤️ pour la gestion de garage automobile