Outils et Technologies
Ce document liste les technologies utilisées dans le projet suivi_produit.
Backend
| Outil |
Version |
Description |
| Python |
3.11+ |
Langage principal du backend |
| FastAPI |
^0.109 |
Framework web asynchrone, génération automatique OpenAPI |
| Uvicorn |
^0.24 |
Serveur ASGI haute performance pour FastAPI |
| Pydantic |
^2.5 |
Validation des données et sérialisation JSON |
| APScheduler |
^3.11 |
Planificateur de tâches pour le scraping périodique |
| Loguru |
^0.7 |
Logging simplifié avec rotation automatique |
| python-dotenv |
^1.0 |
Chargement des variables d'environnement depuis .env |
Gestion des dépendances
| Outil |
Description |
| Poetry |
Gestionnaire de dépendances et environnements virtuels Python |
Scraping
| Outil |
Version |
Description |
| Playwright |
^1.40 |
Automatisation navigateur (Chromium) pour le scraping |
| BeautifulSoup4 |
^4.12 |
Parsing HTML pour extraction des données |
Configuration Playwright
- Navigateur : Chromium (headless par défaut)
- Locale :
fr-FR
- Timezone :
Europe/Paris
- Viewport : 1366x768
- Délais aléatoires : 1-3s entre les requêtes (anti-détection)
Base de Données
| Outil |
Description |
| SQLite |
Base de données relationnelle légère, fichier unique |
| SQLAlchemy |
ORM Python pour la gestion des modèles et requêtes |
Structure des tables
products : informations produits (URL, ASIN, titre, catégorie)
product_snapshots : historique des prix et états (prix, stock, note, badges)
scrape_runs : métadonnées des exécutions de scraping
Stockage fichiers
- Raw JSON : sauvegarde brute des scrapes dans
backend/data/raw/
- Screenshots : captures debug dans
backend/data/screenshots/
Frontend
| Outil |
Version |
Description |
| React |
^18.3 |
Bibliothèque UI composants |
| Vite |
^5.1 |
Bundler et serveur de développement rapide |
| Zustand |
^4.4 |
Gestion d'état globale légère |
| React Router |
^6.22 |
Routage SPA |
| SCSS/Sass |
^1.77 |
Préprocesseur CSS |
Graphiques
| Outil |
Version |
Description |
| Chart.js |
^4.5 |
Bibliothèque de graphiques |
| react-chartjs-2 |
^5.3 |
Wrapper React pour Chart.js |
| chartjs-plugin-annotation |
^3.1 |
Plugin pour lignes de référence |
Icônes
| Outil |
Version |
Description |
| Font Awesome |
^6.5 |
Bibliothèque d'icônes (Free) |
Thème UI
Palette Gruvbox Dark
Le thème utilise la palette Gruvbox en mode sombre :
| Couleur |
Hex |
Usage |
| Background |
#282828 |
Fond principal |
| Background Alt |
#3c3836 |
Cartes, modales |
| Background Light |
#504945 |
Hover, bordures |
| Foreground |
#ebdbb2 |
Texte principal |
| Foreground Dim |
#a89984 |
Texte secondaire |
| Orange |
#fe8019 |
Accent principal, liens |
| Yellow |
#fabd2f |
Warnings, tendance stable |
| Green |
#b8bb26 |
Succès, baisse de prix |
| Red |
#fb4934 |
Erreurs, hausse de prix |
| Blue |
#83a598 |
Info, badges |
| Purple |
#d3869b |
Badges spéciaux |
| Aqua |
#8ec07c |
Stock disponible |
Style
- Arrondis :
border-radius: 8px (cartes), 4px (boutons)
- Ombres :
box-shadow: 0 4px 6px rgba(0,0,0,0.3)
- Police : System fonts stack (sans-serif)
- Responsive : Grille configurable (1-4 colonnes)
Tests
| Outil |
Version |
Description |
| Pytest |
^8.4 |
Framework de tests Python |
| Coverage |
- |
Mesure de couverture de code |
Commandes
Qualité de Code
| Outil |
Version |
Description |
| Ruff |
^0.1 |
Linter Python ultra-rapide (remplace flake8, isort) |
| MyPy |
^1.9 |
Vérification de types statique |
| Pre-commit |
^3.5 |
Hooks Git pour qualité automatique |
Configuration Pre-commit
Déploiement
Docker
| Outil |
Description |
| Docker |
Conteneurisation des services |
| Docker Compose |
Orchestration multi-conteneurs |
| Nginx |
Serveur web pour le frontend (reverse proxy) |
Images Docker
| Service |
Base |
Description |
| Backend |
python:3.11-slim |
FastAPI + Playwright + Chromium |
| Frontend |
node:20-alpine → nginx:alpine |
Build Vite + serveur Nginx |
Volumes
| Volume |
Contenu |
suivi_produit_data |
SQLite + raw JSON |
suivi_produit_logs |
Fichiers de log |
Ports
| Service |
Port interne |
Port exposé |
| Backend |
8008 |
8008 |
| Frontend |
80 |
8080 |
Versionnement
| Outil |
Description |
| Git |
Contrôle de version |
| Gitea |
Serveur Git self-hosted |
Conventions de commit
Format : type: description
| Type |
Description |
feat |
Nouvelle fonctionnalité |
fix |
Correction de bug |
refactor |
Refactorisation sans changement fonctionnel |
docs |
Documentation |
style |
Formatage, pas de changement de code |
test |
Ajout ou modification de tests |
chore |
Maintenance, dépendances |
Structure des Fichiers de Configuration
| Fichier |
Description |
pyproject.toml |
Config Poetry, dépendances Python, scripts |
backend/config_backend.json |
Paramètres scraping, stores, taxonomie |
frontend/config_frontend.json |
Thème, layout, champs visibles |
.env |
Variables d'environnement (non versionné) |
.env.example |
Template des variables d'environnement |
.env.docker |
Config pour déploiement Docker |
docker-compose.yml |
Définition des services Docker |
Diagramme d'Architecture