working version

This commit is contained in:
root
2025-08-27 18:34:38 +02:00
parent b7a84a53aa
commit dfaae262c7
153 changed files with 19389 additions and 788 deletions

252
Makefile Normal file → Executable file
View File

@@ -1,56 +1,232 @@
.PHONY: help start stop restart logs clean build install
.PHONY: help local dev prod start stop restart logs status build clean test verify
# Configuration
PROJECT_NAME := LeDiscord
help: ## Afficher cette aide
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
@echo "🚀 $(PROJECT_NAME) - Makefile Zero-Config"
@echo "=========================================="
@echo ""
@echo "📋 Environnements disponibles :"
@echo " local - Développement local (localhost)"
@echo " dev - Environnement de développement (dev.lediscord.com)"
@echo " prod - Production (lediscord.com)"
@echo ""
@echo "🔧 Commandes disponibles :"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}'
@echo ""
@echo "💡 Exemples :"
@echo " make local # Démarrer en mode local"
@echo " make dev # Démarrer en mode développement"
@echo " make prod # Démarrer en mode production"
@echo " make stop-local # Arrêter en mode local"
@echo " make logs-dev # Voir les logs en mode développement"
start: ## Démarrer l'application
./start.sh
# ===========================================
# LOCAL (développement sur votre machine)
# ===========================================
stop: ## Arrêter l'application
./stop.sh
local: ## Démarrer en mode local
@echo "🚀 Démarrage de $(PROJECT_NAME) en mode LOCAL..."
@docker compose -f docker-compose.local.yml up --build -d
@echo "$(PROJECT_NAME) local démarré !"
@echo " Frontend: http://localhost:5173"
@echo " Backend: http://localhost:8000"
@echo " API Docs: http://localhost:8000/docs"
restart: ## Redémarrer l'application
./stop.sh
./start.sh
stop-local: ## Arrêter en mode local
@echo "🛑 Arrêt de $(PROJECT_NAME) en mode LOCAL..."
@docker compose -f docker-compose.local.yml down
@echo "$(PROJECT_NAME) local arrêté"
logs: ## Afficher les logs
docker compose logs -f
restart-local: ## Redémarrer en mode local
@echo "🔄 Redémarrage de $(PROJECT_NAME) en mode LOCAL..."
@$(MAKE) stop-local
@$(MAKE) local
logs-backend: ## Afficher les logs du backend
docker compose logs -f backend
logs-local: ## Voir les logs en mode local
@echo "📝 Logs de $(PROJECT_NAME) en mode LOCAL..."
@docker compose -f docker-compose.local.yml logs -f
logs-frontend: ## Afficher les logs du frontend
docker compose logs -f frontend
status-local: ## Voir le statut en mode local
@echo "📊 Statut de $(PROJECT_NAME) en mode LOCAL..."
@docker compose -f docker-compose.local.yml ps
logs-db: ## Afficher les logs de la base de données
docker compose logs -f postgres
build-local: ## Reconstruire en mode local
@echo "🔨 Reconstruction de $(PROJECT_NAME) en mode LOCAL..."
@docker compose -f docker-compose.local.yml build --no-cache
@echo "✅ Reconstruction terminée"
build: ## Reconstruire les images Docker
docker compose build
# ===========================================
# DEVELOPMENT (dev.lediscord.com)
# ===========================================
clean: ## Nettoyer les conteneurs et volumes
docker compose down -v
rm -rf backend/__pycache__
rm -rf backend/**/__pycache__
dev: ## Démarrer en mode développement
@echo "🚀 Démarrage de $(PROJECT_NAME) en mode DEVELOPMENT..."
@docker compose -f docker-compose.dev.yml up --build -d
@echo "$(PROJECT_NAME) development démarré !"
@echo " Frontend: http://localhost:8082"
@echo " Backend: http://localhost:8002"
@echo " API Docs: http://localhost:8002/docs"
install: ## Installer les dépendances localement (dev)
cd backend && pip install -r requirements.txt
cd frontend && npm install
stop-dev: ## Arrêter en mode développement
@echo "🛑 Arrêt de $(PROJECT_NAME) en mode DEVELOPMENT..."
@docker compose -f docker-compose.dev.yml down
@echo "$(PROJECT_NAME) development arrêté"
dev-backend: ## Lancer le backend en mode développement
cd backend && uvicorn app:app --reload --host 0.0.0.0 --port 8000
restart-dev: ## Redémarrer en mode développement
@echo "🔄 Redémarrage de $(PROJECT_NAME) en mode DEVELOPMENT..."
@$(MAKE) stop-dev
@$(MAKE) dev
dev-frontend: ## Lancer le frontend en mode développement
cd frontend && npm run dev
logs-dev: ## Voir les logs en mode développement
@echo "📝 Logs de $(PROJECT_NAME) en mode DEVELOPMENT..."
@docker compose -f docker-compose.dev.yml logs -f
shell-backend: ## Ouvrir un shell dans le conteneur backend
docker compose exec backend /bin/bash
status-dev: ## Voir le statut en mode développement
@echo "📊 Statut de $(PROJECT_NAME) en mode DEVELOPMENT..."
@docker compose -f docker-compose.dev.yml ps
shell-db: ## Ouvrir psql dans le conteneur PostgreSQL
docker compose exec postgres psql -U lediscord_user -d lediscord
build-dev: ## Reconstruire en mode développement
@echo "🔨 Reconstruction de $(PROJECT_NAME) en mode DEVELOPMENT..."
@docker compose -f docker-compose.dev.yml build --no-cache
@echo "✅ Reconstruction terminée"
backup-db: ## Sauvegarder la base de données
docker compose exec postgres pg_dump -U lediscord_user lediscord > backup_$$(date +%Y%m%d_%H%M%S).sql
# ===========================================
# PRODUCTION (lediscord.com)
# ===========================================
status: ## Afficher le statut des conteneurs
docker compose ps
prod: ## Démarrer en mode production
@echo "🚀 Démarrage de $(PROJECT_NAME) en mode PRODUCTION..."
@docker compose -f docker-compose.prod.yml up --build -d
@echo "$(PROJECT_NAME) production démarré !"
@echo " Frontend: http://localhost:80"
@echo " Backend: http://localhost:8001"
@echo " API Docs: http://localhost:8001/docs"
stop-prod: ## Arrêter en mode production
@echo "🛑 Arrêt de $(PROJECT_NAME) en mode PRODUCTION..."
@docker compose -f docker-compose.prod.yml down
@echo "$(PROJECT_NAME) production arrêté"
restart-prod: ## Redémarrer en mode production
@echo "🔄 Redémarrage de $(PROJECT_NAME) en mode PRODUCTION..."
@$(MAKE) stop-prod
@$(MAKE) prod
logs-prod: ## Voir les logs en mode production
@echo "📝 Logs de $(PROJECT_NAME) en mode PRODUCTION..."
@docker compose -f docker-compose.prod.yml logs -f
status-prod: ## Voir le statut en mode production
@echo "📊 Statut de $(PROJECT_NAME) en mode PRODUCTION..."
@docker compose -f docker-compose.prod.yml ps
build-prod: ## Reconstruire en mode production
@echo "🔨 Reconstruction de $(PROJECT_NAME) en mode PRODUCTION..."
@docker compose -f docker-compose.prod.yml build --no-cache
@echo "✅ Reconstruction terminée"
# ===========================================
# COMMANDES GLOBALES
# ===========================================
start: local ## Démarrer en mode local (alias)
stop: stop-local ## Arrêter en mode local (alias)
restart: restart-local ## Redémarrer en mode local (alias)
logs: logs-local ## Voir les logs en mode local (alias)
all: ## Démarrer tous les environnements
@echo "🚀 Démarrage de tous les environnements $(PROJECT_NAME)..."
@$(MAKE) local
@$(MAKE) dev
@$(MAKE) prod
@echo "✅ Tous les environnements sont démarrés !"
stop-all: ## Arrêter tous les environnements
@echo "🛑 Arrêt de tous les environnements $(PROJECT_NAME)..."
@$(MAKE) stop-local
@$(MAKE) stop-dev
@$(MAKE) stop-prod
@echo "✅ Tous les environnements sont arrêtés !"
status: ## Voir le statut de tous les environnements
@echo "📊 Statut de tous les environnements $(PROJECT_NAME)..."
@echo ""
@echo "🔵 LOCAL:"
@$(MAKE) status-local
@echo ""
@echo "🟡 DEVELOPMENT:"
@$(MAKE) status-dev
@echo ""
@echo "🟢 PRODUCTION:"
@$(MAKE) status-prod
clean: ## Nettoyer tous les environnements (ATTENTION: supprime les volumes)
@echo "🧹 Nettoyage complet de $(PROJECT_NAME)..."
@echo "⚠️ ATTENTION: Cette action supprimera tous les volumes et données !"
@read -p "Êtes-vous sûr ? (y/N): " -n 1 -r; \
if [[ $$REPLY =~ ^[Yy]$$ ]]; then \
echo ""; \
echo "🧹 Nettoyage en cours..."; \
$(MAKE) stop-all; \
docker compose -f docker-compose.local.yml down -v --remove-orphans; \
docker compose -f docker-compose.dev.yml down -v --remove-orphans; \
docker compose -f docker-compose.prod.yml down -v --remove-orphans; \
docker system prune -f; \
echo "✅ Nettoyage terminé"; \
else \
echo ""; \
echo "❌ Nettoyage annulé"; \
fi
# ===========================================
# UTILITAIRES
# ===========================================
test: ## Tester la configuration des environnements
@echo "🧪 Test de la configuration $(PROJECT_NAME)..."
@if [ -f "test-environments.sh" ]; then \
./test-environments.sh; \
else \
echo "❌ Script de test non trouvé"; \
fi
verify: ## Vérifier le mode Zero-Config
@echo "🔍 Vérification Zero-Config $(PROJECT_NAME)..."
@if [ -f "verify-zero-config.sh" ]; then \
./verify-zero-config.sh; \
else \
echo "❌ Script de vérification non trouvé"; \
fi
check: ## Vérifier la configuration des fichiers d'environnement
@echo "🔍 Vérification des fichiers d'environnement..."
@echo ""
@echo "📁 Backend:"
@for env in local development production; do \
if [ -f "backend/.env.$$env" ]; then \
echo "✅ backend/.env.$$env"; \
else \
echo "❌ backend/.env.$$env manquant"; \
fi; \
done
@echo ""
@echo "📁 Frontend:"
@for env in local development production; do \
if [ -f "frontend/.env.$$env" ]; then \
echo "✅ frontend/.env.$$env"; \
else \
echo "❌ frontend/.env.$$env manquant"; \
fi; \
done
@echo ""
@echo "📁 Docker Compose:"
@for env in local dev prod; do \
if [ -f "docker-compose.$$env.yml" ]; then \
echo "✅ docker-compose.$$env.yml"; \
else \
echo "❌ docker-compose.$$env.yml manquant"; \
fi; \
done