Julien Martin 80afe2fa2f feat(backend): service de configuration avec cache et encryption (#5)
Implémentation du service de configuration dynamique pour
le déploiement on-premise de l'application.

Nouveaux fichiers :
- entities/configuration.entity.ts : Entité TypeORM
- modules/config/config.service.ts : Service avec cache et encryption
- modules/config/config.module.ts : Module NestJS
- modules/config/index.ts : Export centralisé

Fonctionnalités :
 Cache en mémoire au démarrage (16 configurations)
 Chiffrement AES-256-CBC pour valeurs sensibles
 Conversion automatique de types (string/number/boolean/json)
 Méthodes get/set avec traçabilité
 Récupération par catégorie (email/app/security)
 Masquage automatique des mots de passe
 Support setup wizard (isSetupCompleted)

Sécurité :
- Clé de chiffrement depuis CONFIG_ENCRYPTION_KEY
- Format iv:encrypted pour AES-256-CBC
- Mots de passe masqués dans les API

Intégration :
- AppConfigModule ajouté à app.module.ts
- Service global exporté pour utilisation dans toute l'app
- Chargement automatique au démarrage (OnModuleInit)

Tests :
 Build Docker réussi
 16 configurations chargées en cache
 Service démarré sans erreur

Ref: #5
2025-11-28 16:29:33 +01:00
..

P'titsPas API Backend

Ce dépôt contient le code source de l'API backend pour la plateforme P'titsPas. L'API est construite avec NestJS et est responsable de toute la logique métier, de la gestion des données et de l'authentification des utilisateurs.


📚 Table des matières


🛠️ Technologies utilisées


📋 Prérequis

Avant de commencer, assurez-vous d'avoir installé les outils suivants sur votre machine :


🚀 Installation

  1. Clonez le dépôt :

    git clone https://github.com/votre-username/ptitspas-backend.git
    cd ptitspas-backend
    
  2. Créez le fichier d'environnement : Copiez le fichier d'exemple .env.example et renommez-le en .env. Ce fichier est ignoré par Git et contiendra vos secrets locaux.

    cp .env.example .env
    

    ➡️ Important : Ouvrez le fichier .env et remplissez les variables (identifiants de la base de données, secrets JWT, etc.).

  3. Installez les dépendances du projet :

    npm install
    

▶️ Lancement de l'application

Méthode recommandée : avec Docker

Cette méthode lance l'ensemble des services nécessaires (API, base de données, MinIO, Redis) dans des conteneurs isolés.

docker-compose up --build

L'API sera accessible à l'adresse http://localhost:3000 (ou le port que vous avez configuré dans votre .env).

Méthode locale (pour le développement)

Cette méthode ne lance que le serveur NestJS. Assurez-vous que les autres services (PostgreSQL, Redis, etc.) sont déjà en cours d'exécution (par exemple, via Docker).

npm run start:dev

Le serveur redémarrera automatiquement à chaque modification de fichier.


⚙️ Scripts principaux

Commande Description
npm run start:dev Lance le serveur en mode développement avec rechargement automatique.
npm run build Compile le projet TypeScript en JavaScript.
npm start Lance l'application depuis les fichiers compilés (mode production).
npm run lint Analyse le code pour détecter les erreurs de style et de syntaxe.

🧪 Tests

Pour lancer les tests, utilisez les commandes suivantes :

Commande Description
npm test Lance les tests unitaires.
npm run test:e2e Lance les tests de bout en bout (end-to-end).
npm run test:cov Lance tous les tests et génère un rapport de couverture de code.

🗄️ Gestion des migrations

La structure de la base de données est gérée par des fichiers de migration TypeORM.

  1. Générer une nouvelle migration : Après avoir modifié une entité TypeORM, générez automatiquement le fichier de migration correspondant.

    npm run migration:generate -- src/database/migrations/NomDeLaMigration
    
  2. Appliquer les migrations : Pour mettre à jour le schéma de votre base de données avec les nouvelles migrations.

    npm run migration:run
    

📖 Documentation de l'API

Une fois l'application lancée, la documentation de l'API générée avec Swagger (OpenAPI) est disponible à l'adresse suivante :

➡️ http://localhost:3000/api-docs

Cette interface vous permet d'explorer et de tester toutes les routes de l'API directement depuis votre navigateur.

Excellente idée. C'est un élément crucial qui définit les droits et les devoirs liés à votre code.

En me basant sur la section 10.5 Propriété intellectuelle et licence de lapplication de votre cahier des charges, j'ai rédigé une section "Licence" qui reflète précisément le statut propriétaire de votre projet.

Voici le README.md complet et mis à jour.


📜 Licence

Ce projet est distribué sous une licence propriétaire.

Le code source, la marque "P'titsPas" et la documentation associée sont la propriété exclusive de l'éditeur, Julien MARTIN.

Toute reproduction, distribution, modification ou utilisation du code source est strictement interdite sans un accord écrit préalable de l'auteur. Les clients et partenaires autorisés disposent d'une licence d'utilisation non-exclusive et non-transférable, conformément aux termes de leur contrat.

Pour toute question relative à l'utilisation ou à l'acquisition d'une licence, veuillez contacter l'auteur.