- 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.
3.9 KiB
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 :
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 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 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;"