5c3e6b84a446a2481f620cf1f28c809e1d230805
- Dockerfile backend (Python 3.11 + Poetry + Playwright/Chromium) - Dockerfile frontend (Node 20 + Vite build + Nginx) - docker-compose.yml avec services et volumes persistants - Proxy Nginx pour API (/api -> backend:8008) - Healthchecks sur les deux services - Configuration Docker (.env.docker, .dockerignore) - Documentation déploiement Docker dans README - Fichier docs/tools_used.md avec liste des technologies Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
suivi_produit
Suite self-hosted pour suivre les prix et l'état des produits Amazon.fr (et autres stores à venir).
Structure
backend/: API FastAPI + scraper Playwright + persistance SQLitefrontend/: SPA Gruvbox dark pour afficher les vignettes, graphiques et logsdocker/: fichiers nécessaires pour docker-compose + buildsdocs/,TODO.md,CHANGELOG.md,kanban.md: documentation et suivi
Objectif MVP
- CRUD produits + historique des snapshots
- Scraper Amazon via Playwright avec logs et artifacts
- Interface responsive avec vignettes & graphique 30j
- Configuration JSON frontend/backend rangée dans le repo
- Docker Compose + scheduler interne pour lancer les scrapes
Environnement
- Copier
cp .env.example .envavant tout lancement backend/tests. - Activer le venv :
source .venv/bin/activate- ou
poetry shell
poetry install(backend)npm install(frontend, à compléter)
Tests
- Toujours exécuter
poetry run pytestdans l’environnement.envavant undocker compose up. - Test scraper en CLI (Playwright) :
SCRAPE_TEST_MAX=0 .venv/bin/poetry run python backend/app/scraper/run_scrape_tests.py- Optionnel (ouvrir le navigateur si blocage) :
SCRAPE_TEST_HEADFUL_ON_BLOCK=1 SCRAPE_TEST_MAX=0 .venv/bin/poetry run python backend/app/scraper/run_scrape_tests.py
Audit code (imports / code mort)
- Installer les outils (dans le venv) :
.venv/bin/pip install ruff vulture coverage pip-check-reqs pyright
- Lancer l’audit :
.venv/bin/ruff check backend/.venv/bin/vulture backend/.venv/bin/pip-check-reqs backend/.venv/bin/coverage run -m pytest.venv/bin/coverage report -m
Déploiement Docker
Lancement rapide
# Copier la configuration Docker
cp .env.docker .env
# Build et lancement
docker compose up --build -d
# Voir les logs
docker compose logs -f
Services
| Service | Port | Description |
|---|---|---|
| frontend | 8080 | Interface web (Nginx) |
| backend | 8008 | API FastAPI + Scheduler |
Volumes persistants
suivi_produit_data: base SQLite + raw JSON (backend/data/)suivi_produit_logs: fichiers de log (backend/logs/)
Commandes utiles
# Arrêter les services
docker compose down
# Reconstruire après modification
docker compose up --build -d
# Voir l'état des services
docker compose ps
# Accéder aux logs d'un service
docker compose logs backend -f
docker compose logs frontend -f
# Backup de la base (volume Docker)
docker run --rm -v suivi_produit_data:/data -v $(pwd):/backup alpine tar cvf /backup/data_backup.tar /data
Configuration
Variables d'environnement (.env) :
API_PORT: port du backend (défaut: 8008)FRONTEND_PORT: port du frontend (défaut: 8080)APP_ENV: environnement (development/production)LOG_LEVEL: niveau de log (DEBUG/INFO/WARNING/ERROR)
Notes
- Le scraping est volontairement lent (15-20 produits/jour) pour éviter le blocage.
- Le raw JSON est conservé pendant 30 jours dans
backend/data/raw.
Voici les commandes pour lancer les services :
Backend (port 8008) :
cd /home/gilles/Documents/vscode/suivi_produit .venv/bin/python -m uvicorn backend.app.main:app --host 0.0.0.0 --port 8008 --reload Frontend (port 5173) :
cd /home/gilles/Documents/vscode/suivi_produit/frontend npm run dev Ou en une seule commande avec Poetry pour le backend :
poetry run uvicorn backend.app.main:app --host 0.0.0.0 --port 8008 --reload
Description
Languages
JavaScript
43.3%
Python
39.7%
SCSS
14.9%
Dockerfile
1.2%
HTML
0.7%
Other
0.2%