- Added `pg` and `@types/pg` dependencies for PostgreSQL integration. - Updated `useEvaluation` hook to load user evaluations from the API, improving data management. - Refactored `saveUserEvaluation` and `loadUserEvaluation` functions to interact with the API instead of localStorage. - Introduced error handling for profile loading and evaluation saving to enhance robustness. - Added new methods for managing user profiles and evaluations, including `clearUserProfile` and `loadEvaluationForProfile`.
2.7 KiB
2.7 KiB
Configuration PostgreSQL pour PeakSkills
Setup de développement
1. Installation des dépendances
pnpm install
2. Configuration de l'environnement
Créer un fichier .env.local à la racine du projet :
# 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
# 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
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 utilisateurcategory_evaluations: Évaluations par catégorieselected_skills: Skills sélectionnées pour évaluationskill_evaluations: Évaluations détaillées des skills
API
Les endpoints suivants sont disponibles :
GET /api/evaluations: Charger une évaluation utilisateurPOST /api/evaluations: Sauvegarder une évaluation complètePUT /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 routesclient.ts: Exports client-safe pour les composants React
Important :
- Utiliser
@/services/clientdans les composants React et hooks - Utiliser
@/servicesou 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 :
- Charger les évaluations depuis l'API
- Effectuer des mises à jour optimistes pour une meilleure UX
- Synchroniser avec la base de données
Commandes utiles
# 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