Configuration
Ce guide vous explique comment configurer l'application TrioSigno après l'installation.
Variables d'environnement
TrioSigno utilise des fichiers .env
pour la configuration. Voici les variables d'environnement importantes pour chaque composant.
Frontend (React)
Créez un fichier .env.local
dans le dossier frontend
avec les configurations suivantes :
# API Backend
VITE_API_URL=http://localhost:3333/api
VITE_WS_URL=ws://localhost:3333
# Authentification
VITE_AUTH_COOKIE_NAME=triosigno_auth
VITE_AUTH_EXPIRATION_DAYS=7
# Fonctionnalités
VITE_ENABLE_PWA=true
VITE_ENABLE_ANALYTICS=false
# Localisation
VITE_DEFAULT_LOCALE=fr
Backend (NestJS)
Créez un fichier .env
dans le dossier backend
:
# Serveur
PORT=3333
NODE_ENV=development
API_PREFIX=api
CORS_ENABLED=true
CORS_ORIGIN=http://localhost:3000
# Base de données
DATABASE_URL="postgresql://postgres:postgres@localhost:5432/triosigno?schema=public"
# Authentification
JWT_SECRET=change_this_to_a_secure_secret
JWT_EXPIRATION=86400
JWT_REFRESH_EXPIRATION=604800
BCRYPT_SALT_ROUNDS=10
# AI Service
AI_SERVICE_URL=http://localhost:5000
AI_SERVICE_TOKEN=your_ai_service_token
# Emails
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your_smtp_user
SMTP_PASSWORD=your_smtp_password
SMTP_FROM=noreply@triosigno.com
Service IA (Python)
Créez un fichier .env
dans le dossier ai
:
# Serveur
PORT=5000
DEBUG=False
LOG_LEVEL=INFO
# Modèle
MODEL_PATH=./models/hand_gesture_model_v2.h5
DETECTION_THRESHOLD=0.7
USE_GPU=True
# Authentification
API_TOKEN=your_ai_service_token
Configuration de la base de données
Initialisation du schéma
Après avoir configuré la variable d'environnement DATABASE_URL
, exécutez les migrations Prisma :
cd backend
npx prisma migrate dev
Seeding des données initiales
Pour remplir la base de données avec des données de démarrage :
cd backend
npx prisma db seed
Cela créera :
- Des utilisateurs de test
- Des leçons et exercices de base
- Des badges et récompenses
Personnalisation de l'application
Personnalisation du thème
Le thème principal de TrioSigno est configurable dans frontend/src/styles/theme.ts
:
export const theme = {
colors: {
primary: "#58cc02",
primaryDark: "#45a700",
primaryLight: "#89e219",
secondary: "#1cb0f6",
background: "#ffffff",
text: "#3c3c3c",
error: "#ea2b2b",
success: "#2bb673",
warning: "#ffc800",
},
fonts: {
main: '"Nunito", sans-serif',
heading: '"Nunito", sans-serif',
monospace: '"Roboto Mono", monospace',
},
// ...autres personnalisations
};
Configuration des leçons
Les leçons sont définies dans la base de données, mais vous pouvez également configurer certains paramètres généraux dans backend/src/config/lessons.config.ts
:
export const lessonsConfig = {
levels: {
beginner: {
requiredXP: 0,
unlocks: ["basics", "greetings"],
},
intermediate: {
requiredXP: 1000,
unlocks: ["conversation", "numbers"],
},
advanced: {
requiredXP: 5000,
unlocks: ["grammar", "expressions"],
},
},
xpSettings: {
baseXP: 10,
correctAnswerMultiplier: 2,
perfectScoreBonus: 50,
dailyStreakBonus: 20,
},
};
Configuration pour la production
HTTPS
Pour configurer HTTPS en production, vous devez mettre en place un certificat SSL. Avec Docker, cela peut être fait en ajoutant un service Nginx comme proxy inversé :
# Extrait du docker-compose.yml
nginx:
image: nginx:alpine
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/ssl:/etc/nginx/ssl
- ./nginx/data/certbot/conf:/etc/letsencrypt
- ./nginx/data/certbot/www:/var/www/certbot
depends_on:
- frontend
restart: always
Avec un fichier de configuration Nginx comme celui-ci :
# /nginx/conf.d/default.conf
server {
listen 80;
server_name triosigno.com;
location /.well-known/acme-challenge/ {
root /var/www/certbot;
}
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name triosigno.com;
ssl_certificate /etc/letsencrypt/live/triosigno.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/triosigno.com/privkey.pem;
location / {
proxy_pass http://frontend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /api {
proxy_pass http://backend:3333;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
location /socket.io {
proxy_pass http://backend:3333;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
Configuration des ressources
En production, vous devriez ajuster les ressources allouées à chaque service dans Docker :
# Extrait du docker-compose.yml
services:
backend:
# ...autres configurations
deploy:
resources:
limits:
cpus: "1"
memory: 1G
reservations:
cpus: "0.5"
memory: 512M
frontend:
# ...autres configurations
deploy:
resources:
limits:
cpus: "0.5"
memory: 512M
reservations:
cpus: "0.25"
memory: 256M
ai-service:
# ...autres configurations
deploy:
resources:
limits:
cpus: "2"
memory: 4G
reservations:
cpus: "1"
memory: 2G
Tests de configuration
Pour vérifier que votre configuration est correcte, exécutez les commandes suivantes :
Backend
cd backend
npm run config:validate
Frontend
cd frontend
npm run config:validate
Ces commandes vérifieront que toutes les variables d'environnement nécessaires sont définies et ont les types corrects.