Développeur
Référence technique
Installation locale, commandes Prisma, migrations de schéma et sécurité pour PnlTracker.
PnlTracker s'appuie sur PostgreSQL pour le stockage des données et sur Docker pour la mise en production. Ce guide couvre le développement local et le déploiement en production.
Prérequis
- Docker et Docker Compose installés
- Node.js ≥ 20 et pnpm
- Fichier
.envconfiguré
Développement local
1. Démarrer PostgreSQL
docker compose -f ./docker-compose.dev.yml up -d
2. Configurer les variables d'environnement
cp .env.example .env
Ou via le script fourni :
Linux/mac
./env-create-dev.sh
Windows
./env-create-dev.ps1
3. Générer les clients Prisma
rm -rf generated
pnpm prisma generate --schema=prisma/auth/schema.prisma
pnpm prisma generate --schema=prisma/data/schema.prisma
4. Initialiser la base de données
./scripts/reinit.sh
Cette commande supprime les données existantes. À n'utiliser que lors de la première installation ou si vous souhaitez repartir de zéro.
5. Lancer l'application
npm run dev
L'application est accessible sur http://localhost:3000.
Identifiants par défaut : admin@mail.fr / admin
Arrêter la base de données
docker compose -f docker-compose.dev.yml down
Commandes utiles
Prisma
# Ouvrir Prisma Studio
pnpm prisma studio --schema=prisma/auth/schema.prisma
Tests
# Exécuter tous les tests
pnpm test
# Exécuter un fichier spécifique
pnpm test tests/mt5-parser.test.ts
Docker
# Voir les logs
docker compose logs -f [service]
# Redémarrer un service
docker compose restart [service]
# Nettoyer les volumes inutilisés
docker volume prune
Sécurité
En production
- Changez
POSTGRES_PASSWORDpar un mot de passe fort. - Changez
JWT_SECRETpar une clé aléatoire longue. - N'exposez pas le port PostgreSQL (5432) publiquement.
- Utilisez HTTPS avec un reverse proxy (Nginx, Caddy, Traefik).
- Limitez les connexions PostgreSQL par IP si possible.
En développement
- Ne jamais commiter le fichier
.env. - Utilisez des mots de passe différents entre dev et prod.
- N'utilisez pas la même clé JWT entre les environnements.
Migrations de schéma
PnlTracker utilise un système de migrations incrémentales pour la base de données multi-tenant (données utilisateurs). Cela permet d'ajouter ou modifier des colonnes sans perdre les données existantes.
Créer une migration
- Sauvegarder le schéma actuel
cp prisma/data/schema.prisma prisma/data/schema.prev.prisma.bak
- Modifier le schéma dans
prisma/data/schema.prisma, puis régénérer :
pnpm prisma generate --schema=prisma/data/schema.prisma
- Générer le script SQL
pnpm prisma migrate diff \
--from-schema-datamodel prisma/data/schema.prev.prisma.bak \
--to-schema-datamodel prisma/data/schema.prisma \
--script | sed 's/"public"\."/"SCHEMA_PLACEHOLDER"."/g' \
> scripts/migrations/XXX-description.sql
- Enregistrer la migration dans
scripts/migrations/migrations.json
scripts/migrations/migrations.json
{
"migrations": [
{
"version": 2,
"name": "XXX-description",
"description": "Description de la migration",
"file": "XXX-description.sql",
"date": "YYYY-MM-DD"
}
]
}
Les migrations sont appliquées automatiquement à chaque connexion utilisateur. Il suffit de redémarrer le serveur pour qu'elles soient prises en compte.
Testez toujours une migration sur une base de développement avant de l'appliquer en production, et effectuez une sauvegarde préalable.