nestcraftx 0.1.9 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,235 @@
1
+ # Changelog
2
+
3
+ All notable changes to NestCraftX will be documented in this file.
4
+
5
+ ## [0.2.2] - 2025-11-07
6
+
7
+ ### Added
8
+
9
+ #### Demo Command Amélioré
10
+
11
+ - Support complet des flags pour demo : `--light`, `--orm`, `--auth`, `--swagger`, `--docker`
12
+ - Mode interactif intelligent : pose les questions uniquement si flags manquants
13
+ - Fusion intelligente des options passées et réponses interactives
14
+ - 3 entités pré-configurées (User, Post, Comment) avec relations
15
+ - Support de tous les ORMs (Prisma, TypeORM, Mongoose)
16
+
17
+ #### Auth Refactorisée
18
+
19
+ - AuthService refactorisé pour passer via UserService
20
+ - Pas d'accès direct au repository depuis AuthModule
21
+ - JWT configuré avec ConfigService pour secrets dynamiques
22
+ - Refresh tokens implémentés
23
+ - OTP et password reset ready-to-use
24
+ - Guards et strategies Passport complets
25
+ - Support du role-based access control (RBAC)
26
+
27
+ #### Templates Professionnels
28
+
29
+ - `.gitignore` complet généré pour NestJS
30
+ - `README.md` auto-généré pour chaque projet créé
31
+ - Git auto-initialisé avec premier commit
32
+ - Documentation professionnelle incluse
33
+
34
+ #### Nettoyage du Code
35
+
36
+ - Suppression de fichiers obsolètes (start.js, fullModeInput.js, lightModeInput.js)
37
+ - Normalisation CommonJS vs ES6 (cohérence totale)
38
+ - Suppression du code mort et commentaires inutiles
39
+ - Imports/exports cohérents dans tout le projet
40
+
41
+ ### Changed
42
+
43
+ - Version du projet mise à jour à 0.2.2
44
+ - Documentation README complètement mise à jour
45
+ - CLI_USAGE.md actualisé avec les nouveau flags
46
+ - Meilleure séparation des responsabilités (Auth ↔ User)
47
+
48
+ ### Fixed
49
+
50
+ - Cohérence des systèmes de modules CommonJS
51
+ - Résolution des problèmes d'imports ES6/CommonJS mélangés
52
+ - Gestion correcte des dépendances transversales
53
+
54
+ ---
55
+
56
+ ## [0.2.0] - 2025-10-27
57
+
58
+ ### Added
59
+
60
+ #### Architecture Modes
61
+
62
+ - **Mode FULL** : Architecture complete avec Clean Architecture + DDD
63
+
64
+ - Structure complete avec use-cases, mappers, adapters
65
+ - Separation stricte domain/application/infrastructure/presentation
66
+ - Ideal pour projets complexes et scalables
67
+
68
+ - **Mode LIGHT** : Architecture MVP simplifiee
69
+ - Structure plate : controllers → services → repositories
70
+ - Moins de couches d'abstraction
71
+ - Parfait pour prototypes et petits projets
72
+
73
+ #### CLI Moderne
74
+
75
+ - Parser de flags ameliore avec validation
76
+
77
+ - Support de `--flag=value` et `--flag value`
78
+ - Validation des noms de projets
79
+ - Validation des valeurs d'options
80
+ - Messages d'erreur clairs
81
+
82
+ - Nouvelles options en ligne de commande :
83
+ - `--full` ou `--mode=full` : Mode architecture complete
84
+ - `--light` ou `--mode=light` : Mode architecture simplifiee
85
+ - `--orm=<prisma|typeorm|mongoose>` : Choix de l'ORM
86
+ - `--auth` : Activation de l'authentification JWT
87
+ - `--swagger` : Activation de la documentation Swagger
88
+ - `--docker` : Gestion Docker (actif par defaut)
89
+
90
+ #### Generation .env Securisee
91
+
92
+ - Generation automatique de secrets JWT securises (64 caracteres)
93
+ - Configuration automatique selon l'ORM :
94
+ - PostgreSQL pour Prisma et TypeORM
95
+ - MongoDB pour Mongoose
96
+ - Variables pre-configurees :
97
+ - `JWT_SECRET` : Secret auto-genere
98
+ - `JWT_REFRESH_SECRET` : Secret refresh auto-genere
99
+ - `JWT_EXPIRES_IN` : 15 minutes par defaut
100
+ - `JWT_REFRESH_EXPIRES_IN` : 7 jours par defaut
101
+ - `DATABASE_URL` : URL construite automatiquement
102
+ - Creation d'un fichier `.env.example` sanitise
103
+
104
+ #### UX Amelioree
105
+
106
+ - Systeme de couleurs pour les logs :
107
+ - Info en cyan
108
+ - Success en vert
109
+ - Error en rouge
110
+ - Warning en jaune
111
+ - Spinners animes pour les operations longues
112
+ - Messages de progression clairs
113
+ - Resume detaille post-generation avec toutes les configurations
114
+ - Affichage du mode utilise (FULL/LIGHT)
115
+
116
+ #### Nouveaux Fichiers Utilitaires
117
+
118
+ - `utils/cliParser.js` : Parser CLI moderne avec validation
119
+ - `utils/envGenerator.js` : Generateur de fichiers .env securises
120
+ - `utils/colors.js` : Systeme de couleurs pour la console
121
+ - `utils/spinner.js` : Spinners animes pour les operations longues
122
+ - `utils/configs/setupLightArchitecture.js` : Setup architecture LIGHT
123
+
124
+ ### Changed
125
+
126
+ #### Structure du Code
127
+
128
+ - Refactoring complet de `commands/new.js` :
129
+
130
+ - Separation en fonctions modulaires
131
+ - `determineMode()` : Detection du mode
132
+ - `buildLightModeInputs()` : Construction config LIGHT
133
+ - `buildFullModeInputs()` : Construction config FULL
134
+ - `executeProjectSetup()` : Execution du setup
135
+ - `printSuccessSummary()` : Affichage resume
136
+
137
+ - Amelioration de `utils/shell.js` :
138
+
139
+ - Support des spinners
140
+ - Mode silencieux pour certaines operations
141
+ - Meilleure gestion des erreurs
142
+
143
+ - Modernisation des loggers :
144
+ - Utilisation du systeme de couleurs
145
+ - Format unifie
146
+ - Messages plus clairs
147
+
148
+ #### Parser CLI
149
+
150
+ - Validation des inputs en temps reel
151
+ - Detection des flags mutuellement exclusifs
152
+ - Support de la syntaxe moderne (--key=value)
153
+ - Messages d'erreur descriptifs
154
+
155
+ ### Improved
156
+
157
+ #### Generation de Projet
158
+
159
+ - Detection automatique du mode selon les flags
160
+ - Configuration interactive seulement si necessaire
161
+ - Validation des noms de projets
162
+ - Meilleure gestion des erreurs
163
+
164
+ #### Configuration Database
165
+
166
+ - URL de database construite automatiquement
167
+ - Support ameliore pour les 3 ORMs
168
+ - Configuration adaptee au type de database
169
+
170
+ #### Documentation
171
+
172
+ - Ajout de `CLI_USAGE.md` : Guide complet d'utilisation
173
+ - Ajout de `CHANGELOG.md` : Historique des versions
174
+ - Exemples de commandes detailles
175
+ - Documentation des deux modes d'architecture
176
+
177
+ ### Fixed
178
+
179
+ - Gestion des erreurs amelioree dans tout le CLI
180
+ - Validation des options avant execution
181
+ - Messages d'erreur plus explicites
182
+ - Nettoyage du code (suppression des commentaires obsoletes)
183
+
184
+ ### Security
185
+
186
+ - Generation de secrets JWT securises avec crypto
187
+ - Secrets de 64 caracteres en base64url
188
+ - Fichier .env.example sans secrets sensibles
189
+ - Bonnes pratiques de securite appliquees
190
+
191
+ ## [0.1.0] - Previous Version
192
+
193
+ ### Features Initiales
194
+
195
+ - Generation de projets NestJS
196
+ - Support Prisma, TypeORM, Mongoose
197
+ - Architecture Clean Code de base
198
+ - Configuration Docker
199
+ - Support Swagger
200
+ - Authentification JWT basique
201
+
202
+ ---
203
+
204
+ ## Notes de Migration
205
+
206
+ ### De 0.1.x vers 0.2.0
207
+
208
+ **Changements non-breaking** : La version 0.2.0 est retrocompatible.
209
+
210
+ **Nouvelles commandes recommandees :**
211
+
212
+ Avant (0.1.x) :
213
+
214
+ ```bash
215
+ nestcraftx start
216
+ # Configuration interactive
217
+ ```
218
+
219
+ Maintenant (0.2.0) :
220
+
221
+ ```bash
222
+ # Mode LIGHT (nouveau - recommande pour MVP)
223
+ nestcraftx new mon-projet --light --orm=prisma --auth
224
+
225
+ # Mode FULL (equivalent a l'ancien comportement)
226
+ nestcraftx new mon-projet --full --orm=prisma --auth
227
+ ```
228
+
229
+ **Avantages de la mise a jour :**
230
+
231
+ - Generation de secrets JWT automatique et securisee
232
+ - Fichier .env pret a l'emploi
233
+ - Mode LIGHT pour demarrer plus rapidement
234
+ - Meilleure experience utilisateur (couleurs, spinners)
235
+ - CLI plus moderne et flexible
package/CLI_USAGE.md ADDED
@@ -0,0 +1,300 @@
1
+ # NestCraftX CLI - Guide d'utilisation
2
+
3
+ ## Installation
4
+
5
+ ```bash
6
+ npm install -g nestcraftx
7
+ ```
8
+
9
+ ## Commandes disponibles
10
+
11
+ ### Creer un nouveau projet
12
+
13
+ ```bash
14
+ nestcraftx new <project-name> [options]
15
+ ```
16
+
17
+ ## Modes de generation
18
+
19
+ ### Mode FULL (Architecture Complete - Clean Architecture + DDD)
20
+
21
+ Structure complete avec use-cases, mappers, adapters et separation stricte des couches.
22
+ Ideal pour les projets complexes et scalables.
23
+
24
+ ```bash
25
+ nestcraftx new mon-projet --full
26
+ nestcraftx new mon-projet --mode=full
27
+ nestcraftx new mon-projet
28
+ ```
29
+
30
+ **Structure generee :**
31
+ ```
32
+ src/
33
+ ├── [entity]/
34
+ │ ├── application/
35
+ │ │ ├── use-cases/
36
+ │ │ ├── dtos/
37
+ │ │ └── interfaces/
38
+ │ ├── domain/
39
+ │ │ ├── entities/
40
+ │ │ ├── enums/
41
+ │ │ └── mappers/
42
+ │ ├── infrastructure/
43
+ │ │ ├── repositories/
44
+ │ │ ├── services/
45
+ │ │ └── adapters/
46
+ │ └── presentation/
47
+ │ └── controllers/
48
+ ```
49
+
50
+ ### Mode LIGHT (MVP Simplifie)
51
+
52
+ Structure plate avec moins de couches d'abstraction.
53
+ Parfait pour prototypes et petits projets.
54
+
55
+ ```bash
56
+ nestcraftx new mon-projet --light
57
+ nestcraftx new mon-projet --mode=light
58
+ ```
59
+
60
+ **Structure generee :**
61
+ ```
62
+ src/
63
+ ├── [entity]/
64
+ │ ├── entities/
65
+ │ ├── dto/
66
+ │ ├── services/
67
+ │ ├── repositories/
68
+ │ └── controllers/
69
+ ```
70
+
71
+ ## Options disponibles
72
+
73
+ ### ORM
74
+ Choisir l'ORM a utiliser :
75
+
76
+ ```bash
77
+ --orm=prisma # Prisma (par defaut)
78
+ --orm=typeorm # TypeORM
79
+ --orm=mongoose # Mongoose (MongoDB)
80
+ ```
81
+
82
+ **Exemples :**
83
+ ```bash
84
+ nestcraftx new mon-api --light --orm=prisma
85
+ nestcraftx new mon-api --full --orm=typeorm
86
+ nestcraftx new mon-api --orm=mongoose
87
+ ```
88
+
89
+ ### Authentification
90
+ Activer l'authentification JWT :
91
+
92
+ ```bash
93
+ --auth # Active l'auth avec JWT
94
+ ```
95
+
96
+ **Exemple :**
97
+ ```bash
98
+ nestcraftx new mon-api --light --auth --orm=prisma
99
+ ```
100
+
101
+ Avec `--auth`, une entite User est automatiquement generee avec :
102
+ - email (string)
103
+ - password (string)
104
+ - isActive (boolean)
105
+
106
+ ### Swagger
107
+ Activer la documentation Swagger/OpenAPI :
108
+
109
+ ```bash
110
+ --swagger # Active Swagger UI
111
+ ```
112
+
113
+ **Exemple :**
114
+ ```bash
115
+ nestcraftx new mon-api --light --swagger
116
+ ```
117
+
118
+ Swagger sera accessible a : `http://localhost:3000/api/docs`
119
+
120
+ ### Docker
121
+ Desactiver Docker (active par defaut) :
122
+
123
+ ```bash
124
+ --docker=false # Desactive Docker
125
+ ```
126
+
127
+ **Exemple :**
128
+ ```bash
129
+ nestcraftx new mon-api --light --docker=false
130
+ ```
131
+
132
+ ## Exemples de commandes completes
133
+
134
+ ### Projet LIGHT avec toutes les options
135
+ ```bash
136
+ nestcraftx new mon-api --light --orm=prisma --auth --swagger
137
+ ```
138
+
139
+ ### Projet FULL avec TypeORM et Auth
140
+ ```bash
141
+ nestcraftx new mon-api --full --orm=typeorm --auth
142
+ ```
143
+
144
+ ### Projet minimal LIGHT (mode interactif)
145
+ ```bash
146
+ nestcraftx new mon-api --light
147
+ # Le CLI demandera toutes les options necessaires
148
+ ```
149
+
150
+ ### Projet MongoDB avec Mongoose
151
+ ```bash
152
+ nestcraftx new mon-api --light --orm=mongoose --auth --swagger
153
+ ```
154
+
155
+ ## Configuration automatique
156
+
157
+ ### Fichier .env genere
158
+
159
+ Le CLI genere automatiquement un fichier `.env` avec :
160
+
161
+ **Pour PostgreSQL (Prisma/TypeORM) :**
162
+ ```env
163
+ NODE_ENV=development
164
+ PORT=3000
165
+ JWT_SECRET=<secret-auto-genere-64-chars>
166
+ JWT_REFRESH_SECRET=<secret-auto-genere-64-chars>
167
+ JWT_EXPIRES_IN=15m
168
+ JWT_REFRESH_EXPIRES_IN=7d
169
+ POSTGRES_USER=postgres
170
+ POSTGRES_PASSWORD=postgres
171
+ POSTGRES_DB=mon-api
172
+ POSTGRES_HOST=localhost
173
+ POSTGRES_PORT=5432
174
+ DATABASE_URL=postgresql://postgres:postgres@localhost:5432/mon-api?schema=public
175
+ ```
176
+
177
+ **Pour MongoDB (Mongoose) :**
178
+ ```env
179
+ NODE_ENV=development
180
+ PORT=3000
181
+ JWT_SECRET=<secret-auto-genere-64-chars>
182
+ JWT_REFRESH_SECRET=<secret-auto-genere-64-chars>
183
+ JWT_EXPIRES_IN=15m
184
+ JWT_REFRESH_EXPIRES_IN=7d
185
+ MONGO_URI=mongodb://localhost:27017
186
+ MONGO_DB=mon-api
187
+ ```
188
+
189
+ Les secrets JWT sont generes automatiquement de maniere securisee.
190
+
191
+ ## Modes Interactifs
192
+
193
+ ### Mode LIGHT Interactif
194
+
195
+ Si vous ne fournissez pas tous les flags necessaires, le CLI passera en mode interactif pour demander les options manquantes.
196
+
197
+ **Exemple :**
198
+ ```bash
199
+ nestcraftx new mon-api --light
200
+
201
+ [MODE LIGHT] Configuration simplifiee pour mon-api
202
+
203
+ [?] Choisissez un ORM (prisma, typeorm, mongoose) [prisma]: prisma
204
+ [?] Activer l'authentification JWT ? (Y/n): y
205
+ [INFO] Auth active : ajout automatique de l'entite User
206
+ [?] Activer Swagger pour la documentation API ? (Y/n): y
207
+ [?] Generer les fichiers Docker ? (Y/n): y
208
+
209
+ [INFO] Configuration PostgreSQL
210
+ Utilisateur PostgreSQL [postgres]:
211
+ Mot de passe PostgreSQL [postgres]:
212
+ Nom de la base [mon-api]:
213
+ Hote PostgreSQL [localhost]:
214
+ Port PostgreSQL [5432]:
215
+
216
+ [?] Voulez-vous ajouter des entites supplementaires ? (Y/n): n
217
+
218
+ [INFO] Demarrage de la generation du projet...
219
+ ```
220
+
221
+ ### Mode FULL Interactif
222
+
223
+ Le mode FULL est toujours interactif pour vous donner un controle total sur la configuration.
224
+
225
+ **Exemple :**
226
+ ```bash
227
+ nestcraftx new mon-projet
228
+
229
+ [MODE FULL] Configuration complete avec Clean Architecture
230
+
231
+ [?] Nom du projet : mon-projet
232
+ [?] Base de donnees (postgresql, mongodb) [postgresql]: postgresql
233
+
234
+ [INFO] Configuration PostgreSQL
235
+ Utilisateur PostgreSQL [postgres]:
236
+ Mot de passe PostgreSQL [postgres]:
237
+ ...
238
+
239
+ [?] ORM pour PostgreSQL (prisma, typeorm) [prisma]: prisma
240
+ [?] Utiliser Yarn ? (Y/n): n
241
+ [?] Generer fichiers Docker ? (Y/n): y
242
+ [?] Ajouter authentification JWT ? (Y/n): y
243
+ [?] Installer Swagger ? (Y/n): y
244
+
245
+ [INFO] Configuration Swagger
246
+ Titre API [mon-projet API]:
247
+ Description [API generated by NestCraftX]:
248
+ Version [1.0.0]:
249
+ Endpoint [api/docs]:
250
+
251
+ [INFO] Saisie des entites (Mode FULL - Architecture complete)
252
+ [?] Ajouter une entite ? (Y/n): y
253
+ Nom de l'entite : post
254
+ Champs pour "post" :
255
+ Nom du champ (vide pour terminer) : title
256
+ Type de "title" (string, number, boolean, Date, enum) : string
257
+ Nom du champ (vide pour terminer) : content
258
+ Type de "content" (string, number, boolean, Date, enum) : string
259
+ Nom du champ (vide pour terminer) :
260
+
261
+ [✓] Entite "post" ajoutee avec 2 champ(s)
262
+ [?] Ajouter une autre entite ? (Y/n): n
263
+ [?] Ajouter des relations entre entites ? (Y/n): n
264
+ ```
265
+
266
+ ## Apres la creation
267
+
268
+ ```bash
269
+ cd mon-projet
270
+ npm run start:dev
271
+ ```
272
+
273
+ Si Swagger est active :
274
+ ```
275
+ http://localhost:3000/api/docs
276
+ ```
277
+
278
+ ## Autres commandes
279
+
280
+ ### Verifier l'environnement
281
+ ```bash
282
+ nestcraftx test
283
+ ```
284
+
285
+ ### Informations CLI
286
+ ```bash
287
+ nestcraftx info
288
+ ```
289
+
290
+ ### Aide
291
+ ```bash
292
+ nestcraftx --help
293
+ ```
294
+
295
+ ## Notes importantes
296
+
297
+ - Les secrets JWT sont auto-generes de maniere securisee (64 caracteres)
298
+ - DATABASE_URL est automatiquement construit selon l'ORM choisi
299
+ - Docker est active par defaut en mode LIGHT
300
+ - Le mode FULL necessite une configuration interactive si aucune option n'est fournie