mgpanel-cli 1.0.2 → 1.0.4

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 (3) hide show
  1. package/README.md +16 -2
  2. package/bin/mgpanel.js +286 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -37,6 +37,20 @@ npm -v
37
37
 
38
38
  ## Comandos disponibles
39
39
 
40
- Crear un módulo:
40
+ Iniciar un proyecto:
41
+ ```bash
42
+ mgpanel init nombre-web
43
+ ```
44
+
45
+ Crear un paginas:
46
+ ```bash
47
+ mgpanel make page nombre-pagina
48
+ ```
49
+
50
+ Crear un secciones y asignarlas a páginas:
51
+ ```bash
52
+ mgpanel make module nombre-modulo
53
+ mgpanel add module nombre-modulo --to nombre-pagina
41
54
 
42
- mgpanel make module home
55
+ ```
56
+ Puedes crear diferentes secciones (módulos) y asginarlas a tu preferencia a cualquier página.
package/bin/mgpanel.js CHANGED
@@ -193,6 +193,292 @@ renderPage(pageFromPath()).catch(err => {
193
193
  "utf8"
194
194
  );
195
195
 
196
+ // dev/config.md: Documentación para IDEs (Cursor, etc.)
197
+ const configMD = `# MGPanel - Configuración de Desarrollo
198
+
199
+ Esta documentación está diseñada para ayudar a IDEs como Cursor y otros editores a entender el contexto de desarrollo con MGPanel.
200
+
201
+ ## ¿Qué es MGPanel?
202
+
203
+ MGPanel es un sistema de gestión de contenido (CMS) basado en Node.js y MongoDB que permite crear sitios web usando HTML, CSS y JavaScript puro, sin frameworks complejos. Los proyectos MGPanel utilizan una arquitectura modular donde las páginas se componen de módulos reutilizables.
204
+
205
+ ## Estructura del Proyecto
206
+
207
+ \`\`\`
208
+ proyecto/
209
+ ├── pages/ # Páginas del sitio
210
+ │ └── <nombre-pagina>/
211
+ │ └── page.json # Configuración de la página (ruta, título, módulos)
212
+ ├── modules/ # Módulos reutilizables
213
+ │ └── <nombre-modulo>/
214
+ │ ├── <nombre-modulo>.html
215
+ │ ├── <nombre-modulo>.css
216
+ │ └── <nombre-modulo>.js
217
+ ├── assets/ # Archivos estáticos globales
218
+ │ ├── css/
219
+ │ │ └── style.css
220
+ │ └── js/
221
+ │ └── app.js
222
+ ├── dev/ # Utilidades de desarrollo
223
+ │ ├── config.md # Este archivo
224
+ │ └── preview.js # Script para preview local
225
+ └── index.html # Punto de entrada para preview local
226
+ \`\`\`
227
+
228
+ ## Comandos Disponibles
229
+
230
+ ### Crear una Página
231
+
232
+ \`\`\`bash
233
+ mgpanel make page <nombre-pagina>
234
+ \`\`\`
235
+
236
+ **Ejemplo:**
237
+ \`\`\`bash
238
+ mgpanel make page about
239
+ mgpanel make page contacto
240
+ \`\`\`
241
+
242
+ Esto crea:
243
+ - \`pages/<nombre-pagina>/page.json\` - Archivo de configuración de la página
244
+
245
+ **Estructura de page.json:**
246
+ \`\`\`json
247
+ {
248
+ "route": "/about",
249
+ "title": "About",
250
+ "description": "Descripción de la página about.",
251
+ "modules": []
252
+ }
253
+ \`\`\`
254
+
255
+ ### Crear un Módulo
256
+
257
+ \`\`\`bash
258
+ mgpanel make module <nombre-modulo>
259
+ \`\`\`
260
+
261
+ **Ejemplo:**
262
+ \`\`\`bash
263
+ mgpanel make module header
264
+ mgpanel make module hero-banner
265
+ mgpanel make module footer
266
+ \`\`\`
267
+
268
+ Esto crea en \`modules/<nombre-modulo>/\`:
269
+ - \`<nombre-modulo>.html\` - Estructura HTML del módulo
270
+ - \`<nombre-modulo>.css\` - Estilos CSS del módulo
271
+ - \`<nombre-modulo>.js\` - Lógica JavaScript del módulo
272
+
273
+ ### Asociar un Módulo a una Página
274
+
275
+ \`\`\`bash
276
+ mgpanel add module <nombre-modulo> --to <nombre-pagina>
277
+ \`\`\`
278
+
279
+ **Ejemplo:**
280
+ \`\`\`bash
281
+ mgpanel add module header --to home
282
+ mgpanel add module hero-banner --to home
283
+ mgpanel add module footer --to home
284
+ \`\`\`
285
+
286
+ Esto actualiza el archivo \`pages/<nombre-pagina>/page.json\` añadiendo el módulo al array \`modules\`:
287
+
288
+ \`\`\`json
289
+ {
290
+ "route": "/",
291
+ "title": "Home",
292
+ "description": "Página principal.",
293
+ "modules": [
294
+ { "name": "header" },
295
+ { "name": "hero-banner" },
296
+ { "name": "footer" }
297
+ ]
298
+ }
299
+ \`\`\`
300
+
301
+ **Importante:** Los módulos se renderizan en el orden en que aparecen en el array \`modules\`.
302
+
303
+ ### Servidor de Desarrollo
304
+
305
+ \`\`\`bash
306
+ mgpanel dev [puerto]
307
+ \`\`\`
308
+
309
+ Inicia un servidor HTTP local para previsualizar el proyecto.
310
+
311
+ - **Puerto por defecto:** 3000
312
+ - **Acceso:** http://localhost:3000 (o el puerto especificado)
313
+
314
+ El servidor:
315
+ - Sirve archivos estáticos (HTML, CSS, JS, imágenes)
316
+ - Implementa routing SPA: rutas sin extensión devuelven \`index.html\`
317
+ - Soporta hot-reload manual (refrescar el navegador)
318
+
319
+ **Ejemplos:**
320
+ \`\`\`bash
321
+ mgpanel dev # Puerto 3000
322
+ mgpanel dev 8080 # Puerto 8080
323
+ \`\`\`
324
+
325
+ ## Flujo de Trabajo Recomendado
326
+
327
+ 1. **Crear un módulo:**
328
+ \`\`\`bash
329
+ mgpanel make module header
330
+ \`\`\`
331
+
332
+ 2. **Editar el módulo:**
333
+ - Edita \`modules/header/header.html\`
334
+ - Edita \`modules/header/header.css\`
335
+ - Edita \`modules/header/header.js\`
336
+
337
+ 3. **Crear/editar una página:**
338
+ \`\`\`bash
339
+ mgpanel make page home
340
+ \`\`\`
341
+
342
+ 4. **Asociar módulos a la página:**
343
+ \`\`\`bash
344
+ mgpanel add module header --to home
345
+ mgpanel add module hero --to home
346
+ mgpanel add module footer --to home
347
+ \`\`\`
348
+
349
+ 5. **Iniciar servidor de desarrollo:**
350
+ \`\`\`bash
351
+ mgpanel dev
352
+ \`\`\`
353
+
354
+ 6. **Acceder a la página:**
355
+ - http://localhost:3000 (página home)
356
+ - http://localhost:3000/about (si existe la página about)
357
+
358
+ ## Convenciones y Reglas
359
+
360
+ ### Nombres de Páginas y Módulos
361
+
362
+ - Usar solo letras minúsculas, números y guiones
363
+ - No usar espacios ni caracteres especiales
364
+ - Ejemplos válidos: \`home\`, \`about-us\`, \`contacto\`, \`header\`, \`hero-banner\`
365
+ - Ejemplos inválidos: \`About Us\`, \`contact_page\`, \`mi@modulo\`
366
+
367
+ ### Estructura de Módulos
368
+
369
+ Cada módulo debe tener exactamente 3 archivos con el mismo nombre base:
370
+
371
+ \`\`\`
372
+ modules/<nombre-modulo>/
373
+ ├── <nombre-modulo>.html
374
+ ├── <nombre-modulo>.css
375
+ └── <nombre-modulo>.js
376
+ \`\`\`
377
+
378
+ ### CSS y JavaScript Globales
379
+
380
+ - **Global CSS:** \`assets/css/style.css\` - Se carga en todas las páginas
381
+ - **Global JS:** \`assets/js/app.js\` - Se carga en todas las páginas
382
+ - **Módulo CSS:** Se carga automáticamente cuando el módulo es usado
383
+ - **Módulo JS:** Se carga automáticamente cuando el módulo es usado
384
+
385
+ ### Preview Local
386
+
387
+ El archivo \`index.html\` y \`dev/preview.js\` permiten previsualizar las páginas localmente:
388
+
389
+ - Lee \`pages/<nombre>/page.json\`
390
+ - Carga los módulos especificados en el orden definido
391
+ - Inyecta CSS y JS de cada módulo automáticamente
392
+ - Soporta routing basado en la URL
393
+
394
+ ## Integración con MGPanel CMS
395
+
396
+ Cuando despliegues el proyecto en MGPanel:
397
+
398
+ 1. Las páginas se sincronizan con el CMS
399
+ 2. Los módulos se pueden reutilizar entre páginas
400
+ 3. El contenido puede ser editado desde el panel de administración
401
+ 4. La estructura de archivos se mantiene compatible
402
+
403
+ ## Consejos para IDEs
404
+
405
+ - Los archivos \`page.json\` definen la configuración de cada página
406
+ - Los módulos son componentes independientes y reutilizables
407
+ - El orden de los módulos en \`page.json\` determina el orden de renderizado
408
+ - Usa autocompletado para referencias entre módulos y páginas
409
+ - Valida los nombres de módulos antes de asociarlos a páginas
410
+ `;
411
+
412
+ fs.writeFileSync(path.join(projectPath, "dev", "config.md"), configMD, "utf8");
413
+
414
+ // README.md en la raíz del proyecto
415
+ const readmeMD = `# Proyecto MGPanel
416
+
417
+ Este proyecto ha sido creado con **MGPanel CLI**, un sistema para desarrollar sitios web usando HTML, CSS y JavaScript puro, organizados de forma modular.
418
+
419
+ ## 📚 Documentación de Desarrollo
420
+
421
+ Para entender completamente cómo trabajar con este proyecto, consulta la documentación completa en:
422
+
423
+ **\`dev/config.md\`**
424
+
425
+ Este archivo contiene información detallada sobre:
426
+ - Comandos para crear páginas y módulos
427
+ - Cómo asociar módulos a páginas
428
+ - Estructura del proyecto
429
+ - Flujo de trabajo recomendado
430
+ - Convenciones y mejores prácticas
431
+
432
+ ## 🚀 Inicio Rápido
433
+
434
+ 1. **Crear un módulo:**
435
+ \`\`\`bash
436
+ mgpanel make module nombre-modulo
437
+ \`\`\`
438
+
439
+ 2. **Crear una página:**
440
+ \`\`\`bash
441
+ mgpanel make page nombre-pagina
442
+ \`\`\`
443
+
444
+ 3. **Asociar módulo a página:**
445
+ \`\`\`bash
446
+ mgpanel add module nombre-modulo --to nombre-pagina
447
+ \`\`\`
448
+
449
+ 4. **Iniciar servidor de desarrollo:**
450
+ \`\`\`bash
451
+ mgpanel dev
452
+ \`\`\`
453
+
454
+ ## 📁 Estructura del Proyecto
455
+
456
+ \`\`\`
457
+ .
458
+ ├── pages/ # Páginas del sitio
459
+ │ └── <nombre>/page.json
460
+ ├── modules/ # Módulos reutilizables
461
+ │ └── <nombre>/
462
+ │ ├── <nombre>.html
463
+ │ ├── <nombre>.css
464
+ │ └── <nombre>.js
465
+ ├── assets/ # Recursos globales
466
+ │ ├── css/style.css
467
+ │ └── js/app.js
468
+ ├── dev/ # Desarrollo
469
+ │ ├── config.md # 📖 Documentación completa para IDEs
470
+ │ └── preview.js
471
+ └── index.html # Preview local
472
+ \`\`\`
473
+
474
+ ## 🔗 Más Información
475
+
476
+ - **Documentación de desarrollo:** Ver \`dev/config.md\`
477
+ - **MGPanel CLI:** https://github.com/miguayaba/mgpanel-cli
478
+ `;
479
+
480
+ fs.writeFileSync(path.join(projectPath, "README.md"), readmeMD, "utf8");
481
+
196
482
  console.log("✅ Proyecto creado correctamente");
197
483
  console.log("👉 Ejecuta: cd " + projectName + " && mgpanel dev");
198
484
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mgpanel-cli",
3
- "version": "1.0.2",
3
+ "version": "1.0.4",
4
4
  "description": "MGPanel CLI",
5
5
  "bin": {
6
6
  "mgpanel": "./bin/mgpanel.js"