Files
peakskills/DATABASE_SETUP.md
Julien Froidefond a749f7fcff feat: add Adminer support for PostgreSQL management
- Updated DATABASE_SETUP.md to include instructions for starting Adminer alongside PostgreSQL.
- Enhanced Docker Compose configuration to add Adminer service for database management.
- Provided connection details and usage instructions for Adminer in the documentation.
- Updated commands for restarting services and viewing logs to include Adminer.
2025-08-21 10:02:57 +02:00

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

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

# 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;"