generated from gilles/template-webapp
claude code
This commit is contained in:
@@ -0,0 +1,133 @@
|
||||
.PHONY: help dev test lint fmt clean docker-up docker-down install migrate
|
||||
|
||||
# Variables
|
||||
BACKEND_DIR = backend
|
||||
FRONTEND_DIR = frontend
|
||||
PYTHON = python3
|
||||
UV = uv
|
||||
NPM = npm
|
||||
|
||||
help: ## Affiche cette aide
|
||||
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
|
||||
|
||||
# === Développement ===
|
||||
|
||||
dev: ## Lance l'environnement de développement complet (backend + frontend)
|
||||
docker compose up --build
|
||||
|
||||
dev-backend: ## Lance uniquement le backend en mode dev
|
||||
cd $(BACKEND_DIR) && $(UV) run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
|
||||
|
||||
dev-frontend: ## Lance uniquement le frontend en mode dev
|
||||
cd $(FRONTEND_DIR) && $(NPM) run dev
|
||||
|
||||
# === Installation ===
|
||||
|
||||
install: install-backend install-frontend ## Installe toutes les dépendances
|
||||
|
||||
install-backend: ## Installe les dépendances Python (backend)
|
||||
cd $(BACKEND_DIR) && $(UV) sync
|
||||
|
||||
install-frontend: ## Installe les dépendances Node (frontend)
|
||||
cd $(FRONTEND_DIR) && $(NPM) install
|
||||
|
||||
# === Tests ===
|
||||
|
||||
test: test-backend test-frontend ## Lance tous les tests
|
||||
|
||||
test-backend: ## Lance les tests backend (pytest)
|
||||
cd $(BACKEND_DIR) && $(UV) run pytest
|
||||
|
||||
test-backend-cov: ## Lance les tests backend avec couverture
|
||||
cd $(BACKEND_DIR) && $(UV) run pytest --cov=app --cov-report=html --cov-report=term
|
||||
|
||||
test-frontend: ## Lance les tests frontend (vitest)
|
||||
cd $(FRONTEND_DIR) && $(NPM) run test
|
||||
|
||||
# === Linting & Formatage ===
|
||||
|
||||
lint: lint-backend lint-frontend ## Lance tous les linters
|
||||
|
||||
lint-backend: ## Lint le code backend (ruff + mypy)
|
||||
cd $(BACKEND_DIR) && $(UV) run ruff check .
|
||||
cd $(BACKEND_DIR) && $(UV) run mypy .
|
||||
|
||||
lint-frontend: ## Lint le code frontend (eslint)
|
||||
cd $(FRONTEND_DIR) && $(NPM) run lint
|
||||
|
||||
fmt: fmt-backend fmt-frontend ## Formate tout le code
|
||||
|
||||
fmt-backend: ## Formate le code backend (ruff)
|
||||
cd $(BACKEND_DIR) && $(UV) run ruff check --fix .
|
||||
cd $(BACKEND_DIR) && $(UV) run ruff format .
|
||||
|
||||
fmt-frontend: ## Formate le code frontend (prettier)
|
||||
cd $(FRONTEND_DIR) && $(NPM) run fmt
|
||||
|
||||
# === Base de données ===
|
||||
|
||||
migrate: ## Crée et applique une nouvelle migration Alembic
|
||||
cd $(BACKEND_DIR) && $(UV) run alembic revision --autogenerate -m "$(msg)"
|
||||
cd $(BACKEND_DIR) && $(UV) run alembic upgrade head
|
||||
|
||||
migrate-up: ## Applique les migrations en attente
|
||||
cd $(BACKEND_DIR) && $(UV) run alembic upgrade head
|
||||
|
||||
migrate-down: ## Rollback de la dernière migration
|
||||
cd $(BACKEND_DIR) && $(UV) run alembic downgrade -1
|
||||
|
||||
migrate-history: ## Affiche l'historique des migrations
|
||||
cd $(BACKEND_DIR) && $(UV) run alembic history
|
||||
|
||||
db-reset: ## Réinitialise la base de données (ATTENTION: supprime toutes les données!)
|
||||
rm -f data/homestock.db
|
||||
$(MAKE) migrate-up
|
||||
|
||||
# === Docker ===
|
||||
|
||||
docker-up: ## Démarre les conteneurs Docker
|
||||
docker compose up -d
|
||||
|
||||
docker-down: ## Arrête les conteneurs Docker
|
||||
docker compose down
|
||||
|
||||
docker-logs: ## Affiche les logs des conteneurs
|
||||
docker compose logs -f
|
||||
|
||||
docker-rebuild: ## Rebuild et redémarre les conteneurs
|
||||
docker compose up --build -d
|
||||
|
||||
docker-clean: ## Nettoie les conteneurs, volumes et images Docker
|
||||
docker compose down -v
|
||||
docker system prune -f
|
||||
|
||||
# === Nettoyage ===
|
||||
|
||||
clean: ## Nettoie les fichiers temporaires
|
||||
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -type d -name ".pytest_cache" -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -type d -name ".ruff_cache" -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -type d -name ".mypy_cache" -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -type d -name "node_modules" -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -type d -name "dist" -exec rm -rf {} + 2>/dev/null || true
|
||||
find . -type f -name "*.pyc" -delete
|
||||
rm -rf $(BACKEND_DIR)/htmlcov
|
||||
rm -rf $(FRONTEND_DIR)/coverage
|
||||
|
||||
clean-all: clean docker-clean ## Nettoie tout (fichiers + Docker)
|
||||
rm -rf data/homestock.db
|
||||
rm -rf uploads/*
|
||||
|
||||
# === Utilitaires ===
|
||||
|
||||
shell-backend: ## Ouvre un shell Python dans l'environnement backend
|
||||
cd $(BACKEND_DIR) && $(UV) run python
|
||||
|
||||
shell-db: ## Ouvre un shell SQLite sur la base de données
|
||||
sqlite3 data/homestock.db
|
||||
|
||||
check: lint test ## Vérifie la qualité du code (lint + tests)
|
||||
|
||||
init: install migrate-up ## Initialise le projet pour la première fois
|
||||
@echo "✅ Projet initialisé avec succès!"
|
||||
@echo "👉 Lancez 'make dev' pour démarrer le développement"
|
||||
|
||||
Reference in New Issue
Block a user