nexu-app 2.0.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.
Files changed (106) hide show
  1. package/README.md +149 -0
  2. package/dist/index.d.ts +2 -0
  3. package/dist/index.js +1192 -0
  4. package/package.json +43 -0
  5. package/templates/default/.changeset/config.json +11 -0
  6. package/templates/default/.eslintignore +16 -0
  7. package/templates/default/.eslintrc.js +67 -0
  8. package/templates/default/.github/actions/build/action.yml +35 -0
  9. package/templates/default/.github/actions/quality/action.yml +53 -0
  10. package/templates/default/.github/dependabot.yml +51 -0
  11. package/templates/default/.github/workflows/deploy-dev.yml +83 -0
  12. package/templates/default/.github/workflows/deploy-prod.yml +83 -0
  13. package/templates/default/.github/workflows/deploy-rec.yml +83 -0
  14. package/templates/default/.husky/commit-msg +1 -0
  15. package/templates/default/.husky/pre-commit +1 -0
  16. package/templates/default/.nexu-version +1 -0
  17. package/templates/default/.prettierignore +7 -0
  18. package/templates/default/.prettierrc +19 -0
  19. package/templates/default/.vscode/extensions.json +14 -0
  20. package/templates/default/.vscode/settings.json +36 -0
  21. package/templates/default/apps/gitkeep +0 -0
  22. package/templates/default/commitlint.config.js +26 -0
  23. package/templates/default/docker/docker-compose.dev.yml +49 -0
  24. package/templates/default/docker/docker-compose.prod.yml +64 -0
  25. package/templates/default/docker/docker-compose.yml +6 -0
  26. package/templates/default/docs/architecture.md +452 -0
  27. package/templates/default/docs/cli.md +330 -0
  28. package/templates/default/docs/contributing.md +462 -0
  29. package/templates/default/docs/scripts.md +460 -0
  30. package/templates/default/gitignore +44 -0
  31. package/templates/default/lintstagedrc.cjs +4 -0
  32. package/templates/default/package.json +51 -0
  33. package/templates/default/packages/auth/package.json +61 -0
  34. package/templates/default/packages/auth/src/components/ProtectedRoute.tsx +75 -0
  35. package/templates/default/packages/auth/src/components/SignInForm.tsx +153 -0
  36. package/templates/default/packages/auth/src/components/SignUpForm.tsx +179 -0
  37. package/templates/default/packages/auth/src/components/SocialButtons.tsx +147 -0
  38. package/templates/default/packages/auth/src/components/index.ts +4 -0
  39. package/templates/default/packages/auth/src/hooks/index.ts +4 -0
  40. package/templates/default/packages/auth/src/hooks/useAuth.ts +51 -0
  41. package/templates/default/packages/auth/src/hooks/useRequireAuth.ts +54 -0
  42. package/templates/default/packages/auth/src/hooks/useSession.ts +48 -0
  43. package/templates/default/packages/auth/src/hooks/useUser.ts +48 -0
  44. package/templates/default/packages/auth/src/index.ts +45 -0
  45. package/templates/default/packages/auth/src/next/index.ts +18 -0
  46. package/templates/default/packages/auth/src/next/middleware.ts +183 -0
  47. package/templates/default/packages/auth/src/next/server.ts +219 -0
  48. package/templates/default/packages/auth/src/providers/AuthContext.tsx +435 -0
  49. package/templates/default/packages/auth/src/providers/index.ts +1 -0
  50. package/templates/default/packages/auth/src/types/index.ts +284 -0
  51. package/templates/default/packages/auth/src/utils/api.ts +228 -0
  52. package/templates/default/packages/auth/src/utils/index.ts +3 -0
  53. package/templates/default/packages/auth/src/utils/oauth.ts +230 -0
  54. package/templates/default/packages/auth/src/utils/token.ts +204 -0
  55. package/templates/default/packages/auth/tsconfig.json +14 -0
  56. package/templates/default/packages/auth/tsup.config.ts +18 -0
  57. package/templates/default/packages/cache/package.json +26 -0
  58. package/templates/default/packages/cache/src/index.ts +137 -0
  59. package/templates/default/packages/cache/tsconfig.json +9 -0
  60. package/templates/default/packages/cache/tsup.config.ts +9 -0
  61. package/templates/default/packages/config/eslint/index.js +20 -0
  62. package/templates/default/packages/config/package.json +9 -0
  63. package/templates/default/packages/config/typescript/base.json +26 -0
  64. package/templates/default/packages/constants/package.json +26 -0
  65. package/templates/default/packages/constants/src/index.ts +121 -0
  66. package/templates/default/packages/constants/tsconfig.json +9 -0
  67. package/templates/default/packages/constants/tsup.config.ts +9 -0
  68. package/templates/default/packages/logger/package.json +27 -0
  69. package/templates/default/packages/logger/src/index.ts +197 -0
  70. package/templates/default/packages/logger/tsconfig.json +11 -0
  71. package/templates/default/packages/logger/tsup.config.ts +9 -0
  72. package/templates/default/packages/result/package.json +26 -0
  73. package/templates/default/packages/result/src/index.ts +142 -0
  74. package/templates/default/packages/result/tsconfig.json +9 -0
  75. package/templates/default/packages/result/tsup.config.ts +9 -0
  76. package/templates/default/packages/types/package.json +26 -0
  77. package/templates/default/packages/types/src/index.ts +78 -0
  78. package/templates/default/packages/types/tsconfig.json +9 -0
  79. package/templates/default/packages/types/tsup.config.ts +10 -0
  80. package/templates/default/packages/ui/package.json +38 -0
  81. package/templates/default/packages/ui/src/components/Button.tsx +58 -0
  82. package/templates/default/packages/ui/src/components/Card.tsx +85 -0
  83. package/templates/default/packages/ui/src/components/Input.tsx +45 -0
  84. package/templates/default/packages/ui/src/index.ts +15 -0
  85. package/templates/default/packages/ui/tsconfig.json +11 -0
  86. package/templates/default/packages/ui/tsup.config.ts +11 -0
  87. package/templates/default/packages/utils/package.json +30 -0
  88. package/templates/default/packages/utils/src/index.test.ts +130 -0
  89. package/templates/default/packages/utils/src/index.ts +154 -0
  90. package/templates/default/packages/utils/tsconfig.json +10 -0
  91. package/templates/default/packages/utils/tsup.config.ts +10 -0
  92. package/templates/default/pnpm-workspace.yaml +3 -0
  93. package/templates/default/scripts/audit.mjs +700 -0
  94. package/templates/default/scripts/deploy.mjs +40 -0
  95. package/templates/default/scripts/generate-app.mjs +808 -0
  96. package/templates/default/scripts/lib/package-manager.mjs +186 -0
  97. package/templates/default/scripts/setup.mjs +102 -0
  98. package/templates/default/services/.env.example +16 -0
  99. package/templates/default/services/docker-compose.yml +207 -0
  100. package/templates/default/services/grafana/provisioning/dashboards/dashboards.yml +11 -0
  101. package/templates/default/services/grafana/provisioning/datasources/datasources.yml +9 -0
  102. package/templates/default/services/postgres/init/gitkeep +2 -0
  103. package/templates/default/services/prometheus/prometheus.yml +13 -0
  104. package/templates/default/tsconfig.json +27 -0
  105. package/templates/default/turbo.json +40 -0
  106. package/templates/default/vitest.config.ts +15 -0
@@ -0,0 +1,330 @@
1
+ # CLI nexu-app
2
+
3
+ `nexu-app` est un outil en ligne de commande pour créer et gérer des projets monorepo Nexu.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ # Créer un nouveau projet (installation automatique via npx)
9
+ npx nexu-app my-project
10
+
11
+ # Ou via npm create
12
+ npx nexu-app my-project
13
+ ```
14
+
15
+ ## Commandes
16
+
17
+ ### `nexu-app [project-name]` / `nexu-app init [project-name]`
18
+
19
+ Crée un nouveau projet Nexu.
20
+
21
+ ```bash
22
+ # Les deux syntaxes sont équivalentes
23
+ npx nexu-app my-project
24
+ npx nexu-app init my-project
25
+ ```
26
+
27
+ #### Options
28
+
29
+ | Option | Description |
30
+ | --------------------------- | -------------------------------------- |
31
+ | `-t, --template <template>` | Template à utiliser (default, minimal) |
32
+ | `--skip-install` | Ne pas installer les dépendances |
33
+ | `--skip-git` | Ne pas initialiser Git |
34
+
35
+ #### Exemples
36
+
37
+ ```bash
38
+ # Projet standard
39
+ npx nexu-app my-project
40
+
41
+ # Avec la commande init explicite
42
+ npx nexu-app init my-project
43
+
44
+ # Initialiser dans le dossier courant
45
+ npx nexu-app .
46
+ npx nexu-app init .
47
+
48
+ # Sans installation des dépendances
49
+ npx nexu-app my-project --skip-install
50
+
51
+ # Sans initialisation Git
52
+ npx nexu-app my-project --skip-git
53
+
54
+ # Les deux
55
+ npx nexu-app my-project --skip-install --skip-git
56
+ ```
57
+
58
+ ### `nexu-app update`
59
+
60
+ Met à jour un projet Nexu existant avec les dernières fonctionnalités du template.
61
+
62
+ ```bash
63
+ cd my-project
64
+ npx nexu-app update
65
+ ```
66
+
67
+ #### Options
68
+
69
+ | Option | Description |
70
+ | -------------------- | ------------------------------------------------------ |
71
+ | `-p, --packages` | Mettre à jour uniquement les packages partagés |
72
+ | `-c, --config` | Mettre à jour uniquement les fichiers de configuration |
73
+ | `-w, --workflows` | Mettre à jour uniquement les GitHub workflows |
74
+ | `-s, --services` | Mettre à jour uniquement les services Docker |
75
+ | `--scripts` | Mettre à jour uniquement le dossier scripts |
76
+ | `-d, --dependencies` | Mettre à jour uniquement les dépendances package.json |
77
+ | `--all` | Mettre à jour tout (comportement par défaut) |
78
+ | `--dry-run` | Afficher les changements sans les appliquer |
79
+ | `--preview` | Afficher les différences détaillées avant d'appliquer |
80
+
81
+ #### Fonctionnalités
82
+
83
+ 1. **Détection des changements**
84
+ - Fichiers ajoutés (nouveaux dans le template)
85
+ - Fichiers modifiés (différents du template)
86
+ - Fichiers supprimés (présents localement mais plus dans le template)
87
+
88
+ 2. **Prévisualisation**
89
+ - Mode `--preview` pour voir les différences ligne par ligne
90
+ - Mode `--dry-run` pour simuler sans modifier
91
+
92
+ 3. **Sélection interactive**
93
+ - Choisissez quels fichiers mettre à jour
94
+ - Confirmez avant d'appliquer les changements
95
+
96
+ 4. **Mise à jour des dépendances**
97
+ - Nouvelles dépendances ajoutées au template
98
+ - Nouveaux scripts ajoutés au template
99
+ - Mise à jour automatique du package.json
100
+
101
+ 5. **Installation automatique**
102
+ - Exécute `pnpm install` si le package.json a été modifié
103
+
104
+ #### Exemples
105
+
106
+ ```bash
107
+ # Mise à jour complète avec prévisualisation
108
+ npx nexu-app update --preview
109
+
110
+ # Mise à jour des packages partagés uniquement
111
+ npx nexu-app update --packages
112
+
113
+ # Mise à jour des configs et workflows
114
+ npx nexu-app update --config --workflows
115
+
116
+ # Simulation (voir sans appliquer)
117
+ npx nexu-app update --dry-run
118
+
119
+ # Mise à jour des dépendances uniquement
120
+ npx nexu-app update --dependencies
121
+ ```
122
+
123
+ #### Catégories de fichiers
124
+
125
+ | Catégorie | Fichiers inclus |
126
+ | ----------- | -------------------------------------------------------- |
127
+ | `packages` | `packages/**/*` |
128
+ | `config` | `*.json`, `*.js`, `*.cjs`, `*.yaml`, `*.yml` à la racine |
129
+ | `workflows` | `.github/**/*` |
130
+ | `services` | `services/**/*` |
131
+ | `scripts` | `scripts/**/*` |
132
+ | `docker` | `docker/**/*` |
133
+
134
+ ### `nexu-app add <component>`
135
+
136
+ Ajoute un composant au projet.
137
+
138
+ ```bash
139
+ npx nexu-app add package
140
+ npx nexu-app add service
141
+ ```
142
+
143
+ #### Composants disponibles
144
+
145
+ | Composant | Description |
146
+ | --------- | -------------------------------------------------- |
147
+ | `package` | Ajoute un nouveau package partagé dans `packages/` |
148
+ | `service` | Ajoute un nouveau service Docker dans `services/` |
149
+
150
+ #### Options
151
+
152
+ | Option | Description |
153
+ | ------------------- | ---------------- |
154
+ | `-n, --name <name>` | Nom du composant |
155
+
156
+ #### Exemples
157
+
158
+ ```bash
159
+ # Ajouter un package (interactif)
160
+ npx nexu-app add package
161
+
162
+ # Ajouter un package avec un nom
163
+ npx nexu-app add package --name my-utils
164
+
165
+ # Ajouter un service Docker
166
+ npx nexu-app add service
167
+ ```
168
+
169
+ ## Flux de travail typique
170
+
171
+ ### Nouveau projet
172
+
173
+ ```bash
174
+ # 1. Créer le projet
175
+ npx nexu-app my-project
176
+
177
+ # 2. Aller dans le projet
178
+ cd my-project
179
+
180
+ # 3. Créer une application
181
+ pnpm generate:app web next 3000
182
+
183
+ # 4. Démarrer le développement
184
+ pnpm dev
185
+ ```
186
+
187
+ ### Mise à jour d'un projet existant
188
+
189
+ ```bash
190
+ # 1. Aller dans le projet
191
+ cd my-project
192
+
193
+ # 2. Prévisualiser les changements
194
+ npx nexu-app update --preview
195
+
196
+ # 3. Appliquer les mises à jour souhaitées
197
+ npx nexu-app update
198
+
199
+ # 4. Vérifier que tout fonctionne
200
+ pnpm build
201
+ pnpm test
202
+ ```
203
+
204
+ ### Ajouter des fonctionnalités
205
+
206
+ ```bash
207
+ # Ajouter un nouveau package partagé
208
+ npx nexu-app add package --name validators
209
+
210
+ # Ajouter un service Docker (Redis, etc.)
211
+ npx nexu-app add service
212
+ ```
213
+
214
+ ## Structure du template
215
+
216
+ Le template par défaut inclut:
217
+
218
+ ```
219
+ template/
220
+ ├── apps/ # Dossier pour les applications (vide)
221
+ ├── packages/ # Packages partagés
222
+ │ ├── cache/
223
+ │ ├── config/
224
+ │ ├── constants/
225
+ │ ├── logger/
226
+ │ ├── result/
227
+ │ ├── types/
228
+ │ ├── utils/
229
+ │ └── ui/
230
+ ├── scripts/ # Scripts utilitaires
231
+ │ ├── generate-app.mjs
232
+ │ └── audit.mjs
233
+ ├── services/ # Services Docker externes
234
+ ├── docker/ # Configuration Docker principale
235
+ ├── .github/ # Workflows GitHub Actions
236
+ ├── package.json
237
+ ├── turbo.json
238
+ ├── pnpm-workspace.yaml
239
+ └── ... (fichiers de config)
240
+ ```
241
+
242
+ ## Développement du CLI
243
+
244
+ ### Structure du code
245
+
246
+ ```
247
+ nexu-app/
248
+ ├── src/
249
+ │ ├── index.ts # Point d'entrée
250
+ │ ├── commands/
251
+ │ │ ├── init.ts # Commande de création
252
+ │ │ ├── update.ts # Commande de mise à jour
253
+ │ │ └── add.ts # Commande d'ajout
254
+ │ └── utils/
255
+ │ └── helpers.ts # Fonctions utilitaires
256
+ ├── templates/
257
+ │ └── default/ # Template par défaut
258
+ └── package.json
259
+ ```
260
+
261
+ ### Générer le template
262
+
263
+ Pour mettre à jour le template avec les derniers changements du monorepo:
264
+
265
+ ```bash
266
+ pnpm generate:template
267
+ ```
268
+
269
+ Ce script:
270
+
271
+ 1. Copie les fichiers du monorepo vers `nexu-app/templates/default/`
272
+ 2. Exclut `node_modules`, `.git`, `dist`, etc.
273
+ 3. Remplace le nom du projet par un placeholder
274
+ 4. Supprime les scripts spécifiques au développement du CLI
275
+
276
+ ### Publier le CLI
277
+
278
+ ```bash
279
+ pnpm publish:cli
280
+ ```
281
+
282
+ Ce script:
283
+
284
+ 1. Génère le template
285
+ 2. Build le CLI avec tsup
286
+ 3. Publie sur npm
287
+
288
+ ## Dépendances
289
+
290
+ Le CLI utilise:
291
+
292
+ | Package | Usage |
293
+ | ----------- | ---------------------------- |
294
+ | `commander` | Parsing des arguments CLI |
295
+ | `inquirer` | Prompts interactifs |
296
+ | `chalk` | Couleurs dans le terminal |
297
+ | `ora` | Spinners de chargement |
298
+ | `fs-extra` | Opérations fichiers avancées |
299
+ | `diff` | Comparaison de fichiers |
300
+ | `semver` | Gestion des versions |
301
+
302
+ ## Troubleshooting
303
+
304
+ ### "Template not found"
305
+
306
+ Le template doit être généré avant de publier:
307
+
308
+ ```bash
309
+ pnpm generate:template
310
+ ```
311
+
312
+ ### "Permission denied"
313
+
314
+ Assurez-vous d'avoir les droits d'écriture dans le dossier cible:
315
+
316
+ ```bash
317
+ sudo chown -R $(whoami) /path/to/project
318
+ ```
319
+
320
+ ### "pnpm not found" lors de l'installation
321
+
322
+ Le CLI utilise pnpm par défaut. Installez-le:
323
+
324
+ ```bash
325
+ npm install -g pnpm
326
+ ```
327
+
328
+ ### Les fichiers ne sont pas mis à jour
329
+
330
+ Vérifiez que vous êtes bien dans un projet Nexu (présence de `turbo.json` et `pnpm-workspace.yaml`).