create-project-preset
v2.1.1
Published
Scaffolding CLI for the preset microservices architecture
Readme
create-project-preset
CLI de scaffolding pour l'architecture microservices preset — génère un projet fullstack complet (Spring Boot, Angular/React/Vue, Kafka, monitoring) prêt à lancer.
npx create-project-presetCommandes
create [name] — générer un nouveau projet (commande par défaut)
npx create-project-preset # 100% interactif
npx create-project-preset create my-app # nom passé en argument
npx create-project-preset create my-app -m identity-ms,frontend-angular -y # non interactif| Option | Description |
|---|---|
| -m, --modules <liste> | Liste de modules séparés par des virgules (saute la checkbox) |
| -y, --yes | Saute toutes les confirmations (mode script/CI) |
Le nom doit être en kebab-case (mon-projet). Le projet généré est sectionné par domaine :
mon-projet/
├── backend/ # microservices Java + common-module
│ ├── common-module/
│ ├── identity-ms/
│ └── …
├── frontend/ # frontends (Angular, dashboards ATA…)
│ └── frontend-angular/
├── monitoring/ # Prometheus + Grafana
├── tools/ # dev-manager
├── docker-compose.yml
├── docker-compose.local.yml
└── .preset.json # manifest (modules, secrets, layout)À la génération, le CLI :
- copie les modules sélectionnés avec une progress bar par module ;
- référence toute la structure avec le nom du projet (placeholders kebab-case et camelCase remplacés dans tous les fichiers texte) ;
- génère des secrets JWT base64 frais — un secret partagé entre les microservices, un secret séparé pour
messaging-ms— injectés dans tous lesapplication*.ymlet les variables d'env des compose ; - renomme les bases de données par projet :
identity_db→mon_projet_identity_db, etc. (datasources, healthchecks, POSTGRES_DB) ; - filtre les docker-compose : seuls les services et volumes des modules choisis restent, Kafka n'est gardé que si un module en dépend, les
depends_onsont nettoyés,name:= nom du projet, les chemins de build sont corrigés ; - écrit un manifest
.preset.jsonà la racine (modules installés, secrets, version) — c'est lui qui permet la commandeaddplus tard ; - travaille dans un dossier temporaire puis déplace à la fin : un échec en cours de route ne détruit jamais un dossier existant.
common-module est auto-inclus dès qu'un backend Java est sélectionné.
add [modules...] — étendre un projet déjà généré
À lancer dans le dossier d'un projet généré (ou n'importe quel sous-dossier — le CLI remonte jusqu'au .preset.json).
cd my-app
npx create-project-preset add # checkbox des modules manquants
npx create-project-preset add audit-ms monitoring # modules passés en argument
npx create-project-preset add audit-ms -y # sans confirmation| Option | Description |
|---|---|
| -y, --yes | Saute la confirmation |
Comportement :
- ne propose que les modules pas encore installés ;
- réutilise le nom du projet et les mêmes secrets JWT que ceux générés au
create(les nouveaux services acceptent donc les tokens des anciens) ; - régénère les docker-compose avec l'union ancien + nouveau — les fichiers existants sont sauvegardés en
.bakavant ; - auto-inclut
common-modulesi un backend Java est ajouté à un projet qui ne l'avait pas ; - met à jour
.preset.json.
list — inventaire des modules
npx create-project-preset listAffiche tous les modules avec leur type (backend, frontend, tool) et leur statut :
✔ installed— présent dans le projet courant (si lancé dans un projet généré) ;available— template disponible, installable ;no template— déclaré mais template absent du package.
Options globales
npx create-project-preset --version
npx create-project-preset --help
npx create-project-preset add --helpModules disponibles
| Module | Type | Description |
|---|---|---|
| frontend-angular | frontend | Dashboard Angular 19 (e-commerce, apps, user management) — port 80 |
| ata-dashboard-angular | frontend | Dashboard ATA — Angular |
| ata-dashboard-react | frontend | Dashboard ATA — React + Vite |
| ata-dashboard-vue | frontend | Dashboard ATA — Vue + Vite |
| identity-ms | backend | Auth & gestion utilisateurs — Spring Boot, port 8081 |
| file-manager-ms | backend | Stockage de fichiers — Spring Boot, port 8082 |
| feature-ms | backend | Features métier — Spring Boot, port 8083 (partage la BD identity) |
| jobs-ms | backend | Jobs planifiés — Spring Boot, port 9900 |
| audit-ms | backend | Piste d'audit — Spring Boot + Kafka consumer, port 8084 |
| messaging-ms | backend | Messagerie — Spring Boot, port 8085 (secret JWT dédié) |
| monitoring | tool | Prometheus + Grafana |
| dev-manager | tool | GUI PyQt6 pour piloter les services en local |
| common-module | backend | Librairie Java partagée — auto-inclus avec tout backend |
Après génération
cd my-app
cd backend/common-module && mvn clean install && cd - # obligatoire avant les backends
cd backend/identity-ms && npm run backend:start && cd - # par backend
cd frontend/frontend-angular && npm install && npm start # frontend
# ou tout en Docker :
docker compose up --buildProjets v2.0 (layout plat) : la commande
adddétecte automatiquement l'ancien layout via.preset.jsonet continue d'installer les modules à la racine pour ne pas casser le projet.
Développement du CLI (mainteneur)
npm start # lancer le CLI en local
npm run sync # peupler templates/ depuis les sources (.syncrc.json requis)
npm publish # publier — toujours sync avant !Le workflow est sync → test → publish. templates/ est gitignoré et embarqué dans le package npm via files.
