# Configuration PostgreSQL pour PeakSkills ## Setup de développement ### 1. Installation des dépendances ```bash pnpm install ``` ### 2. Configuration de l'environnement Créer un fichier `.env.local` à la racine du projet : ```env # Database configuration DB_HOST=localhost DB_PORT=5432 DB_NAME=peakskills DB_USER=peakskills_user DB_PASSWORD=peakskills_password # API configuration (optional, defaults to empty string for same-origin requests) NEXT_PUBLIC_API_URL= ``` ### 3. Démarrage de PostgreSQL avec Docker ```bash # Démarrer la base de données et l'interface d'administration docker compose up -d postgres adminer # Ou démarrer tous les services docker compose up -d # Vérifier que les services sont démarrés docker compose ps ``` ### Interface d'administration (Adminer) Une fois PostgreSQL démarré, tu peux accéder à l'interface web sur : **🌐 http://localhost:8080** **Paramètres de connexion :** - **Système** : PostgreSQL - **Serveur** : postgres - **Utilisateur** : peakskills_user - **Mot de passe** : peakskills_password - **Base de données** : peakskills L'interface Adminer te permet de : - 📊 Visualiser les tables et données - 🔍 Exécuter des requêtes SQL - 📈 Voir les relations entre tables - 📋 Exporter/importer des données ### 4. Démarrage de l'application ```bash pnpm dev ``` ## Architecture ### Base de données La base de données PostgreSQL contient les tables suivantes : - `users` : Informations utilisateur (nom, prénom, équipe) - `user_evaluations` : Métadonnées des évaluations utilisateur - `category_evaluations` : Évaluations par catégorie - `selected_skills` : Skills sélectionnées pour évaluation - `skill_evaluations` : Évaluations détaillées des skills ### API Les endpoints suivants sont disponibles : - `GET /api/evaluations` : Charger une évaluation utilisateur - `POST /api/evaluations` : Sauvegarder une évaluation complète - `PUT /api/evaluations/skills` : Mettre à jour une skill spécifique ### Services Le dossier `services/` contient tous les services backend : - `database.ts` : Configuration et pool de connexions PostgreSQL (server-only) - `evaluation-service.ts` : Service backend pour interfacer avec PostgreSQL (server-only) - `api-client.ts` : Client pour les appels API depuis le frontend (client-safe) - `index.ts` : Exports server-side pour les API routes - `client.ts` : Exports client-safe pour les composants React **Important** : - Utiliser `@/services/client` dans les composants React et hooks - Utiliser `@/services` ou imports directs dans les API routes Le hook `useEvaluation` (dans `hooks/`) utilise `api-client` pour la persistance. ## Migration depuis localStorage Les données sont maintenant persistées en base PostgreSQL au lieu du localStorage. Le hook `useEvaluation` a été mis à jour pour : 1. Charger les évaluations depuis l'API 2. Effectuer des mises à jour optimistes pour une meilleure UX 3. Synchroniser avec la base de données ## Commandes utiles ```bash # Redémarrer les services docker compose restart postgres adminer # Voir les logs docker compose logs postgres docker compose logs adminer # Se connecter à la base en ligne de commande docker compose exec postgres psql -U peakskills_user -d peakskills # Arrêter tous les services docker compose down # Arrêter et supprimer les volumes (reset complet) docker compose down -v # Démarrer uniquement PostgreSQL (sans Adminer) docker compose up -d postgres # Démarrer uniquement Adminer (si PostgreSQL tourne déjà) docker compose up -d adminer ``` ## Migration des données Une fois PostgreSQL démarré, tu peux migrer les données : ```bash # Migrer les skills depuis JSON vers PostgreSQL curl -X POST http://localhost:3000/api/skills/migrate # Vérifier dans Adminer : http://localhost:8080 # Ou en ligne de commande : docker compose exec postgres psql -U peakskills_user -d peakskills -c "SELECT COUNT(*) FROM skills;" ```