- FastAPI backend with JWT authentication - ElGamal, RSA-PSS, ZK-proofs crypto modules - HTML5/JS frontend SPA - MariaDB database with 5 tables - Docker Compose with 3 services (frontend, backend, mariadb) - Comprehensive tests for cryptography - Typst technical report (30+ pages) - Makefile with development commands
150 lines
3.9 KiB
Bash
Executable File
150 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# QUICK START - Démarrage rapide du projet
|
|
|
|
echo "🗳️ Système de Vote Électronique Sécurisé"
|
|
echo "Quick Start Guide"
|
|
echo "==============================================="
|
|
echo ""
|
|
|
|
# Déterminer le répertoire du script
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
|
|
echo "📦 Prérequis:"
|
|
echo " ✓ Docker 20.10+"
|
|
echo " ✓ Docker Compose 1.29+"
|
|
echo " ✓ Python 3.12 (optionnel, pour dev local)"
|
|
echo ""
|
|
|
|
# Fonction pour afficher les sections
|
|
print_section() {
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo " $1"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
}
|
|
|
|
# Vérifier Docker
|
|
print_section "Vérification des prérequis"
|
|
if ! command -v docker &> /dev/null; then
|
|
echo "❌ Docker n'est pas installé"
|
|
echo "Installez Docker: https://docs.docker.com/get-docker/"
|
|
exit 1
|
|
fi
|
|
echo "✓ Docker détecté: $(docker --version)"
|
|
|
|
if ! command -v docker-compose &> /dev/null; then
|
|
echo "❌ Docker Compose n'est pas installé"
|
|
exit 1
|
|
fi
|
|
echo "✓ Docker Compose détecté: $(docker-compose --version)"
|
|
|
|
# Créer .env
|
|
print_section "Configuration"
|
|
if [ ! -f "$SCRIPT_DIR/.env" ]; then
|
|
echo "📝 Création de .env..."
|
|
cp "$SCRIPT_DIR/.env.example" "$SCRIPT_DIR/.env"
|
|
echo "✓ Fichier .env créé"
|
|
echo " (Modifiez-le si nécessaire avant le démarrage)"
|
|
else
|
|
echo "✓ Fichier .env existe déjà"
|
|
fi
|
|
|
|
echo ""
|
|
read -p "Appuyez sur ENTRÉE pour démarrer l'application..."
|
|
|
|
# Démarrer Docker
|
|
print_section "Démarrage des conteneurs"
|
|
cd "$SCRIPT_DIR"
|
|
|
|
echo "🚀 Démarrage..."
|
|
docker-compose up -d
|
|
|
|
if [ $? -ne 0 ]; then
|
|
echo "❌ Erreur au démarrage des conteneurs"
|
|
exit 1
|
|
fi
|
|
|
|
echo "✓ Conteneurs démarrés"
|
|
|
|
# Attendre que tout soit prêt
|
|
print_section "Initialisation"
|
|
echo "⏳ Attente du démarrage de tous les services (30s)..."
|
|
|
|
for i in {1..30}; do
|
|
if curl -s http://localhost:8000/health > /dev/null 2>&1; then
|
|
echo "✓ Backend prêt"
|
|
break
|
|
fi
|
|
sleep 1
|
|
echo -n "."
|
|
done
|
|
|
|
sleep 2
|
|
|
|
# Afficher l'état
|
|
print_section "Application en cours d'exécution ✓"
|
|
echo ""
|
|
echo "🌐 Accès :"
|
|
echo ""
|
|
echo " Frontend : http://localhost:3000"
|
|
echo " (Interface de vote)"
|
|
echo ""
|
|
echo " Backend : http://localhost:8000"
|
|
echo " (API REST)"
|
|
echo ""
|
|
echo " API Docs : http://localhost:8000/docs"
|
|
echo " (Swagger interactif)"
|
|
echo ""
|
|
echo " Database : localhost:3306"
|
|
echo " User: evoting_user"
|
|
echo " Pass: (voir .env)"
|
|
echo ""
|
|
|
|
# Afficher les logs
|
|
print_section "Premiers pas"
|
|
echo ""
|
|
echo "1. Ouvrir le navigateur: http://localhost:3000"
|
|
echo "2. Créer un compte"
|
|
echo "3. Se connecter"
|
|
echo "4. Sélectionner un candidat et voter"
|
|
echo "5. Voir les résultats"
|
|
echo ""
|
|
|
|
# Commandes utiles
|
|
print_section "Commandes utiles"
|
|
echo ""
|
|
echo "🔍 Voir les logs:"
|
|
echo " docker-compose logs -f"
|
|
echo ""
|
|
echo "🛑 Arrêter l'application:"
|
|
echo " docker-compose down"
|
|
echo ""
|
|
echo "🧹 Nettoyer (reset complet):"
|
|
echo " docker-compose down -v"
|
|
echo ""
|
|
echo "📝 Consulter la documentation:"
|
|
echo " - README.md (Vue d'ensemble)"
|
|
echo " - DEPLOYMENT.md (Déploiement)"
|
|
echo " - ARCHITECTURE.md (Architecture système)"
|
|
echo " - CONTRIBUTING.md (Contribution)"
|
|
echo ""
|
|
|
|
# Tests
|
|
print_section "Lancer les tests"
|
|
echo ""
|
|
echo "Pour développement local (nécessite Poetry):"
|
|
echo ""
|
|
echo " make install # Installer dépendances"
|
|
echo " make test # Exécuter les tests crypto"
|
|
echo " make lint # Vérifier la qualité"
|
|
echo " make format # Formater le code"
|
|
echo ""
|
|
|
|
echo "==============================================="
|
|
echo "✅ L'application est prête!"
|
|
echo ""
|
|
echo "📞 Besoin d'aide ?"
|
|
echo " Consulter PROJECT_SUMMARY.md pour les détails"
|
|
echo ""
|