# 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 docker-compose up -d postgres # Vérifier que la base est bien démarrée docker-compose ps ``` ### 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 la base de données docker-compose restart postgres # Voir les logs de la base docker-compose logs postgres # Se connecter à la base 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 ```