Installation et développement local
Prérequis
| Outil | Version minimale | Lien |
|---|---|---|
| Node.js | 18.0 | https://nodejs.org |
| npm | 9.0 (inclus avec Node) | — |
| PostgreSQL | 14.0 | https://postgresql.org |
| MinIO | Latest | https://min.io |
| FFmpeg | 4.0 | https://ffmpeg.org |
| Git | 2.x | — |
Alternative à l'installation locale : Docker Compose
Si vous avez Docker, vous pouvez utiliser le docker-compose.yml qui inclut PostgreSQL et MinIO préconfigurés. Voir 08-deploiement.md.
1. Cloner le dépôt
git clone https://gitlab.com/[organisation]/racines-app.git
cd racines-app
2. Installer les dépendances
npm install
3. Configurer les variables d'environnement
cp .env.example .env.local # Si un exemple existe
# Ou créer manuellement :
touch .env.local
Remplissez .env.local avec les valeurs de développement (voir 02-variables-env.md) :
# PostgreSQL local
PG_HOST=localhost
PG_PORT=5432
PG_DATABASE=racines
PG_USER=postgres
PG_PASSWORD=postgres
PG_SSL=false
# MinIO local
MINIO_ENDPOINT=localhost
MINIO_PORT=9000
MINIO_USE_SSL=false
MINIO_ACCESS_KEY=minioadmin
MINIO_SECRET_KEY=minioadmin
MINIO_BUCKET=audios
MINIO_PUBLIC_URL=http://localhost:9000
# Auth
JWT_SECRET=dev_secret_change_in_production
# Audio (en dev, proxy activé car CDN_URL vide)
AUDIO_CDN_URL=
AUDIO_PROXY_DISABLED=false
# PWA désactivé en dev (évite conflits Service Worker)
NEXT_PUBLIC_PWA_ENABLED=false
4. Initialiser PostgreSQL
Créer la base de données
# Se connecter à PostgreSQL
psql -U postgres
# Créer la base et l'utilisateur
CREATE DATABASE racines;
\q
Exécuter les migrations
# Depuis la racine du projet
psql -U postgres -d racines -f migrations/001_initial_schema.sql
psql -U postgres -d racines -f migrations/002_create_admins.sql
psql -U postgres -d racines -f migrations/004_quiz_results.sql
Note :
migrations/003_idb_card_id_index_note.sqlest une note de documentation, pas une migration SQL à exécuter.
5. Configurer MinIO
Démarrer MinIO (Docker recommandé)
docker run -d \
--name minio \
-p 9000:9000 \
-p 9001:9001 \
-e MINIO_ROOT_USER=minioadmin \
-e MINIO_ROOT_PASSWORD=minioadmin \
minio/minio server /data --console-address ":9001"
Créer le bucket audios
# Via l'interface web MinIO : http://localhost:9001
# Login: minioadmin / minioadmin
# Créer un bucket nommé "audios" avec la politique "public"
# Ou via CLI (mc) :
mc alias set local http://localhost:9000 minioadmin minioadmin
mc mb local/audios
mc anonymous set public local/audios
mc version enable local/audios
6. Créer le premier compte administrateur
npm run create-admin
# Suivez les instructions :
# Email: admin@racines.local
# Mot de passe: [votre_mot_de_passe]
# Confirmation: [votre_mot_de_passe]
7. Démarrer le serveur de développement
npm run dev
L'application est accessible sur http://localhost:3000.
URLs locales
| URL | Description |
|---|---|
| http://localhost:3000 | Application Racines |
| http://localhost:3000/admin | Interface admin |
| http://localhost:3000/speaker/login | Interface locuteur |
| http://localhost:9001 | Console MinIO (admin) |
Scripts npm disponibles
| Commande | Description |
|---|---|
npm run dev |
Démarrage en développement (hot reload) |
npm run build |
Build de production |
npm run start |
Démarrage en production (après build) |
npm run lint |
Vérification ESLint |
npm run create-admin |
Créer un compte administrateur |
Tester l'installation
# 1. Vérifier que l'app démarre sans erreur
npm run dev
# → L'application doit démarrer sur http://localhost:3000
# 2. Vérifier le health check
curl http://localhost:3000/api/health/live
# → {"status":"ok","timestamp":"..."}
# 3. Vérifier la connexion PostgreSQL
curl http://localhost:3000/api/languages
# → [] (liste vide si aucune langue créée)
# 4. Se connecter en tant qu'admin
# → Allez sur http://localhost:3000/admin et connectez-vous
Développement avec Docker Compose (alternative)
Si vous préférez Docker pour PostgreSQL et MinIO :
# Démarrer seulement la base et le stockage
docker-compose up -d postgres minio minio-init
# Puis développez avec Next.js en local
npm run dev