Files
peakskills/DATABASE_SETUP.md
Julien Froidefond 4e82a6d860 feat: add PostgreSQL support and enhance evaluation loading
- 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`.
2025-08-21 08:46:52 +02:00

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 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

# 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