npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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-preset

Commandes

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 les application*.yml et les variables d'env des compose ;
  • renomme les bases de données par projet : identity_dbmon_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_on sont 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 commande add plus 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 .bak avant ;
  • auto-inclut common-module si un backend Java est ajouté à un projet qui ne l'avait pas ;
  • met à jour .preset.json.

list — inventaire des modules

npx create-project-preset list

Affiche 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 --help

Modules 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 --build

Projets v2.0 (layout plat) : la commande add détecte automatiquement l'ancien layout via .preset.json et 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.