nestcraftx 0.1.9 → 0.2.0

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,211 @@
1
+ # Changelog
2
+
3
+ All notable changes to NestCraftX will be documented in this file.
4
+
5
+ ## [0.2.1] - 2025-11-07
6
+
7
+ ### Added
8
+
9
+ #### Demo Command Amélioré
10
+ - Support complet des flags pour demo : `--light`, `--orm`, `--auth`, `--swagger`, `--docker`
11
+ - Mode interactif intelligent : pose les questions uniquement si flags manquants
12
+ - Fusion intelligente des options passées et réponses interactives
13
+ - 3 entités pré-configurées (User, Post, Comment) avec relations
14
+ - Support de tous les ORMs (Prisma, TypeORM, Mongoose)
15
+
16
+ #### Auth Refactorisée
17
+ - AuthService refactorisé pour passer via UserService
18
+ - Pas d'accès direct au repository depuis AuthModule
19
+ - JWT configuré avec ConfigService pour secrets dynamiques
20
+ - Refresh tokens implémentés
21
+ - OTP et password reset ready-to-use
22
+ - Guards et strategies Passport complets
23
+ - Support du role-based access control (RBAC)
24
+
25
+ #### Templates Professionnels
26
+ - `.gitignore` complet généré pour NestJS
27
+ - `README.md` auto-généré pour chaque projet créé
28
+ - Git auto-initialisé avec premier commit
29
+ - Documentation professionnelle incluse
30
+
31
+ #### Nettoyage du Code
32
+ - Suppression de fichiers obsolètes (start.js, fullModeInput.js, lightModeInput.js)
33
+ - Normalisation CommonJS vs ES6 (cohérence totale)
34
+ - Suppression du code mort et commentaires inutiles
35
+ - Imports/exports cohérents dans tout le projet
36
+
37
+ ### Changed
38
+
39
+ - Version du projet mise à jour à 0.2.1
40
+ - Documentation README complètement mise à jour
41
+ - CLI_USAGE.md actualisé avec les nouveau flags
42
+ - Meilleure séparation des responsabilités (Auth ↔ User)
43
+
44
+ ### Fixed
45
+
46
+ - Cohérence des systèmes de modules CommonJS
47
+ - Résolution des problèmes d'imports ES6/CommonJS mélangés
48
+ - Gestion correcte des dépendances transversales
49
+
50
+ ---
51
+
52
+ ## [0.2.0] - 2025-10-27
53
+
54
+ ### Added
55
+
56
+ #### Architecture Modes
57
+ - **Mode FULL** : Architecture complete avec Clean Architecture + DDD
58
+ - Structure complete avec use-cases, mappers, adapters
59
+ - Separation stricte domain/application/infrastructure/presentation
60
+ - Ideal pour projets complexes et scalables
61
+
62
+ - **Mode LIGHT** : Architecture MVP simplifiee
63
+ - Structure plate : controllers → services → repositories
64
+ - Moins de couches d'abstraction
65
+ - Parfait pour prototypes et petits projets
66
+
67
+ #### CLI Moderne
68
+ - Parser de flags ameliore avec validation
69
+ - Support de `--flag=value` et `--flag value`
70
+ - Validation des noms de projets
71
+ - Validation des valeurs d'options
72
+ - Messages d'erreur clairs
73
+
74
+ - Nouvelles options en ligne de commande :
75
+ - `--full` ou `--mode=full` : Mode architecture complete
76
+ - `--light` ou `--mode=light` : Mode architecture simplifiee
77
+ - `--orm=<prisma|typeorm|mongoose>` : Choix de l'ORM
78
+ - `--auth` : Activation de l'authentification JWT
79
+ - `--swagger` : Activation de la documentation Swagger
80
+ - `--docker` : Gestion Docker (actif par defaut)
81
+
82
+ #### Generation .env Securisee
83
+ - Generation automatique de secrets JWT securises (64 caracteres)
84
+ - Configuration automatique selon l'ORM :
85
+ - PostgreSQL pour Prisma et TypeORM
86
+ - MongoDB pour Mongoose
87
+ - Variables pre-configurees :
88
+ - `JWT_SECRET` : Secret auto-genere
89
+ - `JWT_REFRESH_SECRET` : Secret refresh auto-genere
90
+ - `JWT_EXPIRES_IN` : 15 minutes par defaut
91
+ - `JWT_REFRESH_EXPIRES_IN` : 7 jours par defaut
92
+ - `DATABASE_URL` : URL construite automatiquement
93
+ - Creation d'un fichier `.env.example` sanitise
94
+
95
+ #### UX Amelioree
96
+ - Systeme de couleurs pour les logs :
97
+ - Info en cyan
98
+ - Success en vert
99
+ - Error en rouge
100
+ - Warning en jaune
101
+ - Spinners animes pour les operations longues
102
+ - Messages de progression clairs
103
+ - Resume detaille post-generation avec toutes les configurations
104
+ - Affichage du mode utilise (FULL/LIGHT)
105
+
106
+ #### Nouveaux Fichiers Utilitaires
107
+ - `utils/cliParser.js` : Parser CLI moderne avec validation
108
+ - `utils/envGenerator.js` : Generateur de fichiers .env securises
109
+ - `utils/colors.js` : Systeme de couleurs pour la console
110
+ - `utils/spinner.js` : Spinners animes pour les operations longues
111
+ - `utils/configs/setupLightArchitecture.js` : Setup architecture LIGHT
112
+
113
+ ### Changed
114
+
115
+ #### Structure du Code
116
+ - Refactoring complet de `commands/new.js` :
117
+ - Separation en fonctions modulaires
118
+ - `determineMode()` : Detection du mode
119
+ - `buildLightModeInputs()` : Construction config LIGHT
120
+ - `buildFullModeInputs()` : Construction config FULL
121
+ - `executeProjectSetup()` : Execution du setup
122
+ - `printSuccessSummary()` : Affichage resume
123
+
124
+ - Amelioration de `utils/shell.js` :
125
+ - Support des spinners
126
+ - Mode silencieux pour certaines operations
127
+ - Meilleure gestion des erreurs
128
+
129
+ - Modernisation des loggers :
130
+ - Utilisation du systeme de couleurs
131
+ - Format unifie
132
+ - Messages plus clairs
133
+
134
+ #### Parser CLI
135
+ - Validation des inputs en temps reel
136
+ - Detection des flags mutuellement exclusifs
137
+ - Support de la syntaxe moderne (--key=value)
138
+ - Messages d'erreur descriptifs
139
+
140
+ ### Improved
141
+
142
+ #### Generation de Projet
143
+ - Detection automatique du mode selon les flags
144
+ - Configuration interactive seulement si necessaire
145
+ - Validation des noms de projets
146
+ - Meilleure gestion des erreurs
147
+
148
+ #### Configuration Database
149
+ - URL de database construite automatiquement
150
+ - Support ameliore pour les 3 ORMs
151
+ - Configuration adaptee au type de database
152
+
153
+ #### Documentation
154
+ - Ajout de `CLI_USAGE.md` : Guide complet d'utilisation
155
+ - Ajout de `CHANGELOG.md` : Historique des versions
156
+ - Exemples de commandes detailles
157
+ - Documentation des deux modes d'architecture
158
+
159
+ ### Fixed
160
+ - Gestion des erreurs amelioree dans tout le CLI
161
+ - Validation des options avant execution
162
+ - Messages d'erreur plus explicites
163
+ - Nettoyage du code (suppression des commentaires obsoletes)
164
+
165
+ ### Security
166
+ - Generation de secrets JWT securises avec crypto
167
+ - Secrets de 64 caracteres en base64url
168
+ - Fichier .env.example sans secrets sensibles
169
+ - Bonnes pratiques de securite appliquees
170
+
171
+ ## [0.1.0] - Previous Version
172
+
173
+ ### Features Initiales
174
+ - Generation de projets NestJS
175
+ - Support Prisma, TypeORM, Mongoose
176
+ - Architecture Clean Code de base
177
+ - Configuration Docker
178
+ - Support Swagger
179
+ - Authentification JWT basique
180
+
181
+ ---
182
+
183
+ ## Notes de Migration
184
+
185
+ ### De 0.1.x vers 0.2.0
186
+
187
+ **Changements non-breaking** : La version 0.2.0 est retrocompatible.
188
+
189
+ **Nouvelles commandes recommandees :**
190
+
191
+ Avant (0.1.x) :
192
+ ```bash
193
+ nestcraftx start
194
+ # Configuration interactive
195
+ ```
196
+
197
+ Maintenant (0.2.0) :
198
+ ```bash
199
+ # Mode LIGHT (nouveau - recommande pour MVP)
200
+ nestcraftx new mon-projet --light --orm=prisma --auth
201
+
202
+ # Mode FULL (equivalent a l'ancien comportement)
203
+ nestcraftx new mon-projet --full --orm=prisma --auth
204
+ ```
205
+
206
+ **Avantages de la mise a jour :**
207
+ - Generation de secrets JWT automatique et securisee
208
+ - Fichier .env pret a l'emploi
209
+ - Mode LIGHT pour demarrer plus rapidement
210
+ - Meilleure experience utilisateur (couleurs, spinners)
211
+ - 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