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

150 lines
3.9 KiB
Markdown

# 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 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
```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 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 :
```bash
# 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;"
```