blackcoffee2 2.1.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 (170) hide show
  1. package/CHANGELOG.md +664 -0
  2. package/LICENSE +201 -0
  3. package/NOTICE +25 -0
  4. package/README.md +246 -0
  5. package/apps.zip +0 -0
  6. package/bin/adminclient +105 -0
  7. package/bin/blackcoffee +133 -0
  8. package/cli/admin-users.js +282 -0
  9. package/cli/commands/app.js +561 -0
  10. package/cli/commands/config.js +182 -0
  11. package/cli/commands/db.js +257 -0
  12. package/cli/commands/server.js +200 -0
  13. package/config/applications.json +5 -0
  14. package/config/database.json +28 -0
  15. package/config/database.json.example +23 -0
  16. package/config/server.json +32 -0
  17. package/controllers/admin/AdminController.js +529 -0
  18. package/controllers/admin/AdminViewController.js +90 -0
  19. package/controllers/admin/AuthController.js +293 -0
  20. package/controllers/admin/DatabaseAdminController.js +218 -0
  21. package/core/SQLiteAdapter.js +333 -0
  22. package/core/appLoader.js +385 -0
  23. package/core/databasePoolManager.js +431 -0
  24. package/core/hotReload.js +363 -0
  25. package/data/ADMIN-README.md +145 -0
  26. package/data/CHANGELOG.md +48 -0
  27. package/data/GTK3-NODE-PROPOSALS.md +410 -0
  28. package/data/admin-db.js +150 -0
  29. package/data/admin-gui.js +452 -0
  30. package/data/blackcoffee_admin.db-shm +0 -0
  31. package/data/blackcoffee_admin.db-wal +0 -0
  32. package/data/migrations/001_create_admin_users.sql +33 -0
  33. package/docs/APP_HOOKS_HANDLER.md +432 -0
  34. package/docs/APP_HOOKS_REQUIREMENTS.md +588 -0
  35. package/docs/ARCHITECTURE.md +435 -0
  36. package/docs/CREAR_APP_Y_USAR_POOLS.md +1595 -0
  37. package/docs/EVENTS_APP_MANUAL.md +289 -0
  38. package/docs/INSITU_BINARY_UPLOAD_PROPOSAL.md +186 -0
  39. package/docs/INSITU_FIREWALL_EXCEPTION.md +187 -0
  40. package/docs/ROADMAP.md +242 -0
  41. package/docs/ROADMAP.md.backup +243 -0
  42. package/includes/404-hooks.js +423 -0
  43. package/includes/adminAuth.js +214 -0
  44. package/includes/adminExtension.js +53 -0
  45. package/includes/appHooks.js +302 -0
  46. package/includes/initAdminDb.js +115 -0
  47. package/includes/routeLoader.js +67 -0
  48. package/includes/sessions.js +223 -0
  49. package/issues/001-duplicate-module-loading.md +92 -0
  50. package/manuales/ADMIN_EXTENSION_COMMANDS_MANUAL.md +261 -0
  51. package/manuales/ADMIN_EXTENSION_HOOK_EXAMPLE.md +28 -0
  52. package/manuales/ADMIN_EXTENSION_INTEGRATION_MANUAL.md +232 -0
  53. package/manuales/CACHE_REGEX_COMMANDS.md +136 -0
  54. package/manuales/CACHE_SYSTEM_MAP.md +206 -0
  55. package/manuales/CREACION_DE_CONTROLADORES_INSITU.md +383 -0
  56. package/manuales/QUEUE_CLI_MODULE_MANUAL.md +289 -0
  57. package/manuales/QUEUE_SYSTEM_MANUAL.md +320 -0
  58. package/manuales/ROUTE_CACHE_MODULE_MANUAL.md +205 -0
  59. package/manuales/SESSION_MANAGER_GUIDE.md +529 -0
  60. package/manuales/SESSION_SECURITY_FLAGS.md +174 -0
  61. package/manuales/WAF_MODULE_MANUAL.md +229 -0
  62. package/manuales/after_route_handler_filter_example.md +116 -0
  63. package/manuales/after_route_handler_usage.md +130 -0
  64. package/manuales/an/303/241lisis-completo-insitu-framework.md +213 -0
  65. package/manuales/async_hooks_promises_guide.md +325 -0
  66. package/manuales/before_route_handler_filter_example.md +97 -0
  67. package/manuales/before_route_handler_usage.md +122 -0
  68. package/manuales/hooks_chaining_conditions_guide.md +261 -0
  69. package/manuales/hooks_filters_documentation.md +493 -0
  70. package/manuales/hooks_filters_documentation_en.md +493 -0
  71. package/manuales/hooks_vs_middlewares_comparison.md +87 -0
  72. package/manuales/manual-mvc-completo.md +934 -0
  73. package/manuales/modulos_administracion.md +89 -0
  74. package/manuales/router_execution_points.md +74 -0
  75. package/manuales/static_file_hooks_usage.md +222 -0
  76. package/models/AdminUserModel.js +132 -0
  77. package/package.json +45 -0
  78. package/programatically/PRoutes.js +89 -0
  79. package/programatically/initFlow.js +211 -0
  80. package/public/admin/css/db-pools.css +336 -0
  81. package/public/admin/css/styles.css +310 -0
  82. package/public/admin/database.html +312 -0
  83. package/public/admin/index.html +116 -0
  84. package/public/admin/js/app.js +470 -0
  85. package/public/admin/js/db-pools.js +253 -0
  86. package/public/admin/login.html +278 -0
  87. package/public/assets/css/styles.css +477 -0
  88. package/public/assets/js/main.js +89 -0
  89. package/public/index.html +136 -0
  90. package/public/templates/404.html +158 -0
  91. package/routes/admin-views.json +20 -0
  92. package/routes/admin.json +38 -0
  93. package/routes/auth.json +32 -0
  94. package/routes/static.json +18 -0
  95. package/server.js +299 -0
  96. package/test-aplicacion.con-logisession/BlackCoffee.js +226 -0
  97. package/test-aplicacion.con-logisession/SSL_SETUP.md +53 -0
  98. package/test-aplicacion.con-logisession/certs/ca-certificate.pem +32 -0
  99. package/test-aplicacion.con-logisession/certs/ca-private-key.pem +52 -0
  100. package/test-aplicacion.con-logisession/certs/certificate-2048.pem +22 -0
  101. package/test-aplicacion.con-logisession/certs/certificate.pem +32 -0
  102. package/test-aplicacion.con-logisession/certs/private-key-2048.pem +28 -0
  103. package/test-aplicacion.con-logisession/certs/private-key.pem +52 -0
  104. package/test-aplicacion.con-logisession/config/iaQueueSetup.js +84 -0
  105. package/test-aplicacion.con-logisession/config/qwen-rules.json +39 -0
  106. package/test-aplicacion.con-logisession/controllers/analyticsController.js +117 -0
  107. package/test-aplicacion.con-logisession/controllers/auth/AdminAuthController.js +142 -0
  108. package/test-aplicacion.con-logisession/controllers/auth/AuthController.js +439 -0
  109. package/test-aplicacion.con-logisession/controllers/auth/AuthViewController.js +223 -0
  110. package/test-aplicacion.con-logisession/controllers/endpointController.js +66 -0
  111. package/test-aplicacion.con-logisession/controllers/example.js +183 -0
  112. package/test-aplicacion.con-logisession/controllers/iaQueueController.js +367 -0
  113. package/test-aplicacion.con-logisession/controllers/queueController.js +206 -0
  114. package/test-aplicacion.con-logisession/controllers/qwenQueueController.js +197 -0
  115. package/test-aplicacion.con-logisession/controllers/test.js +0 -0
  116. package/test-aplicacion.con-logisession/controllers/tracking/EventsNoFinishController.js +78 -0
  117. package/test-aplicacion.con-logisession/controllers/tracking/TrackingController.js +412 -0
  118. package/test-aplicacion.con-logisession/controllers/tracking/TrackingControllerWithLoadModel.js +437 -0
  119. package/test-aplicacion.con-logisession/hooks/admin-hooks.js +20 -0
  120. package/test-aplicacion.con-logisession/hooks/general-hooks.js +97 -0
  121. package/test-aplicacion.con-logisession/hooks/queue-hooks.js +64 -0
  122. package/test-aplicacion.con-logisession/hooks/route-directory-hooks.js +38 -0
  123. package/test-aplicacion.con-logisession/hooks/security-hooks.js +24 -0
  124. package/test-aplicacion.con-logisession/insitu-admin-client/README.md +69 -0
  125. package/test-aplicacion.con-logisession/insitu-admin-client/package.json +23 -0
  126. package/test-aplicacion.con-logisession/insitu-admin-client.js +257 -0
  127. package/test-aplicacion.con-logisession/models/ExampleModel.js +88 -0
  128. package/test-aplicacion.con-logisession/models/QueueJobModel.js +263 -0
  129. package/test-aplicacion.con-logisession/models/TokenModel.js +207 -0
  130. package/test-aplicacion.con-logisession/models/auth/AuthModel.js +66 -0
  131. package/test-aplicacion.con-logisession/models/auth/UserModel.js +189 -0
  132. package/test-aplicacion.con-logisession/models/tracking/CompletedCartModel.js +213 -0
  133. package/test-aplicacion.con-logisession/models/tracking/EventModel.js +366 -0
  134. package/test-aplicacion.con-logisession/models/tracking/EventsNoFinishModel.js +131 -0
  135. package/test-aplicacion.con-logisession/models/tracking/SessionModel.js +360 -0
  136. package/test-aplicacion.con-logisession/models/tracking/SiteFlowModel.js +286 -0
  137. package/test-aplicacion.con-logisession/models/tracking/TokenModel.js +207 -0
  138. package/test-aplicacion.con-logisession/package-lock.json +3313 -0
  139. package/test-aplicacion.con-logisession/package.json +32 -0
  140. package/test-aplicacion.con-logisession/public/blackcoffee-welcome/index.html +1339 -0
  141. package/test-aplicacion.con-logisession/public/css/style.css +64 -0
  142. package/test-aplicacion.con-logisession/public/ejemplo-estatica/index.html +18 -0
  143. package/test-aplicacion.con-logisession/public/ejemplo-estatica/script.js +16 -0
  144. package/test-aplicacion.con-logisession/public/ejemplo-estatica/styles.css +43 -0
  145. package/test-aplicacion.con-logisession/public/images/logo.svg +7 -0
  146. package/test-aplicacion.con-logisession/public/js/main.js +67 -0
  147. package/test-aplicacion.con-logisession/routes/analytics-routes.json +8 -0
  148. package/test-aplicacion.con-logisession/routes/auth-routes.json +98 -0
  149. package/test-aplicacion.con-logisession/routes/blackcoffee-welcome-routes.json +20 -0
  150. package/test-aplicacion.con-logisession/routes/duplicate-test-routes.json.disabled +16 -0
  151. package/test-aplicacion.con-logisession/routes/ejemplo-estatica-routes.json +11 -0
  152. package/test-aplicacion.con-logisession/routes/endpoints-routes.json +8 -0
  153. package/test-aplicacion.con-logisession/routes/ia-queue-routes.json +26 -0
  154. package/test-aplicacion.con-logisession/routes/product-routes.json.disabled +20 -0
  155. package/test-aplicacion.con-logisession/routes/queue-routes.json +32 -0
  156. package/test-aplicacion.con-logisession/routes/qwen-routes.json +14 -0
  157. package/test-aplicacion.con-logisession/routes/static-routes.json +29 -0
  158. package/test-aplicacion.con-logisession/routes/tracking-routes.json +58 -0
  159. package/test-aplicacion.con-logisession/routes/tracking-with-loadmodel-routes.json +51 -0
  160. package/test-aplicacion.con-logisession/utils/dbAdapter.js +88 -0
  161. package/test-aplicacion.con-logisession/utils/qbWrapper.js +4 -0
  162. package/test-aplicacion.con-logisession/utils/queueProcessor.js +305 -0
  163. package/test-aplicacion.con-logisession/utils/qwenRulesService.js +131 -0
  164. package/test-aplicacion.con-logisession/utils/tokenHelper.js +22 -0
  165. package/test-aplicacion.con-logisession/views/auth/dashboard.html +443 -0
  166. package/test-aplicacion.con-logisession/views/auth/forgot-password.html +200 -0
  167. package/test-aplicacion.con-logisession/views/auth/login.html +213 -0
  168. package/test-aplicacion.con-logisession/views/auth/register.html +294 -0
  169. package/test-aplicacion.con-logisession/views/contact/form.html +47 -0
  170. package/test-aplicacion.con-logisession/views/products/index.html +39 -0
@@ -0,0 +1,435 @@
1
+ # BlackCoffee App Server - Arquitectura v2.0.0
2
+
3
+ ## 📁 Estructura de Directorios
4
+
5
+ ```
6
+ blackcoffee/
7
+ ├── server.js # Entry point del servidor
8
+ ├── bin/
9
+ │ ├── adminclient # Cliente administrativo TCP (existente)
10
+ │ └── blackcoffee # CLI de administración (nuevo)
11
+
12
+ ├── core/ # Núcleo del App Server
13
+ │ ├── appLoader.js # Carga y gestión de aplicaciones
14
+ │ ├── appManager.js # Manager de ciclo de vida (start/stop/restart)
15
+ │ ├── configLoader.js # Carga de configuración
16
+ │ ├── manifestValidator.js # Validación de manifests
17
+ │ └── routeRegistrar.js # Registro de rutas con prefijos
18
+
19
+ ├── includes/ # Utilidades y hooks
20
+ │ ├── sessions.js # Session manager (opcional)
21
+ │ ├── routeLoader.js # Cargador de rutas (existente)
22
+ │ ├── adminExtension.js # Consola administrativa (existente)
23
+ │ ├── 404-hooks.js # Manejo de errores 404 (existente)
24
+ │ └── appHooks.js # Hooks específicos para apps (nuevo)
25
+
26
+ ├── apps/ # Aplicaciones desplegadas
27
+ │ └── {app-name}/
28
+ │ └── {version}/
29
+ │ ├── package.json # Manifest + dependencias
30
+ │ ├── app.js # Entry point opcional (inicialización)
31
+ │ ├── routes/ # Rutas en JSON
32
+ │ │ └── static.json
33
+ │ ├── controllers/ # Controladores de la app
34
+ │ ├── models/ # Modelos de la app
35
+ │ ├── views/ # Vistas de la app
36
+ │ ├── public/ # Archivos estáticos de la app
37
+ │ │ ├── assets/
38
+ │ │ └── index.html
39
+ │ └── node_modules/ # Dependencias específicas (opcional)
40
+
41
+ ├── config/ # Configuración del servidor
42
+ │ ├── server.json # Configuración principal
43
+ │ ├── applications.json # Estado de aplicaciones desplegadas
44
+ │ └── security.json # Configuración de seguridad
45
+
46
+ ├── public/ # Archivos estáticos globales
47
+ │ ├── index.html # Landing page del servidor
48
+ │ └── assets/
49
+
50
+ ├── routes/ # Rutas globales (core)
51
+ │ └── static.json
52
+
53
+ ├── programatically/ # Rutas programáticas del núcleo
54
+ │ ├── initFlow.js # Inicialización de componentes
55
+ │ └── PRoutes.js # Rutas del núcleo (vacío por defecto)
56
+
57
+ ├── docs/ # Documentación
58
+ │ ├── APP_HOOKS_REQUIREMENTS.md
59
+ │ ├── ARCHITECTURE.md
60
+ │ └── CLI_COMMANDS.md
61
+
62
+ ├── deployeds/ # DEPRECATED - Migrar a apps/
63
+
64
+ ├── certs/ # Certificados SSL
65
+ ├── issues/ # Reporte de bugs
66
+ ├── package.json
67
+ ├── README.md
68
+ └── CHANGELOG.md
69
+ ```
70
+
71
+ ---
72
+
73
+ ## 📦 Manifest de Aplicación (package.json)
74
+
75
+ ```json
76
+ {
77
+ "name": "mi-app",
78
+ "version": "1.0.0",
79
+ "description": "Descripción de mi aplicación",
80
+ "author": "Tu Nombre <tu@email.com>",
81
+ "license": "MIT",
82
+
83
+ "blackcoffee": {
84
+ "displayName": "Mi Aplicación",
85
+ "description": "Descripción larga para la UI Web",
86
+ "entryPoint": "routes/static.json",
87
+ "autoStart": true,
88
+ "minBlackCoffeeVersion": "2.0.0",
89
+ "routePrefix": null,
90
+ "category": "web",
91
+ "tags": ["ejemplo", "demo"],
92
+ "icon": "/public/icon.png"
93
+ },
94
+
95
+ "dependencies": {
96
+ "lodash": "^4.17.21",
97
+ "axios": "^1.4.0"
98
+ },
99
+
100
+ "scripts": {
101
+ "start": "node app.js",
102
+ "test": "echo \"Error: no test specified\" && exit 1"
103
+ }
104
+ }
105
+ ```
106
+
107
+ ### Campos del Manifest
108
+
109
+ | Campo | Requerido | Tipo | Descripción |
110
+ |-------|-----------|------|-------------|
111
+ | `name` | ✅ | string | Nombre único de la aplicación |
112
+ | `version` | ✅ | string | Versión (semver) |
113
+ | `blackcoffee.displayName` | ✅ | string | Nombre para mostrar en UI |
114
+ | `blackcoffee.entryPoint` | ✅ | string | Ruta al archivo de rutas principal |
115
+ | `blackcoffee.autoStart` | ⚠️ | boolean | Iniciar automáticamente al deploy |
116
+ | `blackcoffee.minBlackCoffeeVersion` | ⚠️ | string | Versión mínima requerida |
117
+ | `blackcoffee.routePrefix` | ⚠️ | string\|null | Prefijo custom (null = auto) |
118
+ | `dependencies` | ⚠️ | object | Dependencias de npm |
119
+ | `scripts` | ⚠️ | object | Scripts custom (start, test, etc.) |
120
+
121
+ ---
122
+
123
+ ## 🎯 Flujo de Deploy
124
+
125
+ ```
126
+ 1. blackcoffee deploy ./mi-app-1.0.0.tar.gz
127
+
128
+ 2. Extraer a apps/mi-app/1.0.0/
129
+
130
+ 3. Validar package.json (manifestValidator.js)
131
+
132
+ 4. hooks.doAction('app_deploying', manifest, tempPath)
133
+
134
+ 5. hooks.applyFilters('app_manifest_validating', ...)
135
+
136
+ 6. Instalar dependencias (npm install en apps/mi-app/1.0.0/)
137
+
138
+ 7. hooks.doAction('app_dependencies_installed', ...)
139
+
140
+ 8. Cargar routes desde entryPoint
141
+
142
+ 9. Para cada ruta:
143
+ hooks.applyFilters('before_app_routes_register', routeConfig, appName, version)
144
+ server.addRoute(modifiedRoute)
145
+
146
+ 10. hooks.doAction('after_app_routes_register', routes, appName, version)
147
+
148
+ 11. hooks.doAction('app_deployed', manifest, tempPath, deployedPath)
149
+
150
+ 12. Si autoStart=true: appManager.start(appName, version)
151
+
152
+ 13. Actualizar config/applications.json
153
+
154
+ 14. ✅ Deploy completado
155
+ ```
156
+
157
+ ---
158
+
159
+ ## 🔧 Hooks Nuevos Requeridos (Insitu Framework)
160
+
161
+ ### Application Lifecycle Hooks
162
+
163
+ | Hook | Tipo | Parámetros | Descripción |
164
+ |------|------|------------|-------------|
165
+ | `app_deploying` | Action | `(manifest, tempPath)` | Antes de desplegar |
166
+ | `app_deployed` | Action | `(manifest, tempPath, deployedPath)` | Después de desplegar |
167
+ | `app_undeploying` | Action | `(appName, version)` | Antes de remover |
168
+ | `app_undeployed` | Action | `(appName, version, removedPath)` | Después de remover |
169
+ | `app_starting` | Action | `(appName, version)` | Antes de iniciar |
170
+ | `app_started` | Action | `(appName, version)` | Después de iniciar |
171
+ | `app_stopping` | Action | `(appName, version)` | Antes de detener |
172
+ | `app_stopped` | Action | `(appName, version)` | Después de detener |
173
+ | `app_restarting` | Action | `(appName, version)` | Antes de reiniciar |
174
+ | `app_restarted` | Action | `(appName, version)` | Después de reiniciar |
175
+
176
+ ### Route Registration Hooks
177
+
178
+ | Hook | Tipo | Parámetros | Descripción |
179
+ |------|------|------------|-------------|
180
+ | `before_app_routes_register` | Filter | `(routeConfig, appName, version)` | Antes de registrar ruta |
181
+ | `after_app_routes_register` | Action | `(routes, appName, version)` | Después de registrar rutas |
182
+
183
+ ### Manifest Validation Hooks
184
+
185
+ | Hook | Tipo | Parámetros | Descripción |
186
+ |------|------|------------|-------------|
187
+ | `app_manifest_validating` | Filter | `(isValid, manifest, errors)` | Durante validación |
188
+ | `app_manifest_validated` | Action | `(manifest, isValid, errors)` | Después de validar |
189
+
190
+ ### Dependency Management Hooks
191
+
192
+ | Hook | Tipo | Parámetros | Descripción |
193
+ |------|------|------------|-------------|
194
+ | `app_dependencies_checking` | Action | `(dependencies, appName, version)` | Antes de instalar deps |
195
+ | `app_dependencies_installed` | Action | `(appName, version, success)` | Después de instalar deps |
196
+
197
+ ### Configuration Hooks
198
+
199
+ | Hook | Tipo | Parámetros | Descripción |
200
+ |------|------|------------|-------------|
201
+ | `app_config_loading` | Filter | `(config, appName, version)` | Antes de cargar config |
202
+ | `app_config_loaded` | Action | `(config, appName, version)` | Después de cargar config |
203
+
204
+ ---
205
+
206
+ ## 📊 Modificaciones a Insitu Framework
207
+
208
+ ### Archivo: `lib/core/hooks-handlers/server-start-hooks-handler.js`
209
+
210
+ **Agregar:** Documentación de hooks de aplicación (solo documentación)
211
+
212
+ ### Archivo: `lib/admin/modules/QueueManagementModule.js`
213
+
214
+ **Agregar:** Módulo `AppManagementModule` para administrar apps desde consola TCP
215
+
216
+ ### Nuevo Archivo: `lib/admin/modules/AppManagementModule.js`
217
+
218
+ ```javascript
219
+ /**
220
+ * Módulo de Administración de Aplicaciones para BlackCoffee
221
+ * Permite gestionar aplicaciones desplegadas desde la consola TCP
222
+ */
223
+
224
+ class AppManagementModule {
225
+ constructor(adminExtension) {
226
+ this.adminExtension = adminExtension;
227
+ this.name = 'App Management Module';
228
+ this.description = 'Gestión de aplicaciones desplegadas';
229
+ this.commands = [
230
+ 'apps-list',
231
+ 'apps-deploy',
232
+ 'apps-undeploy',
233
+ 'apps-start',
234
+ 'apps-stop',
235
+ 'apps-restart',
236
+ 'apps-status',
237
+ 'apps-info'
238
+ ];
239
+ }
240
+
241
+ handleCommand(command, socket) {
242
+ const parts = command.split(' ');
243
+ const subCommand = parts[0];
244
+
245
+ switch (subCommand) {
246
+ case 'apps-list':
247
+ this.listApps(socket);
248
+ break;
249
+ case 'apps-deploy':
250
+ this.deployApp(socket, parts.slice(1).join(' '));
251
+ break;
252
+ // ... más comandos
253
+ default:
254
+ socket.write(`Comando desconocido: ${subCommand}\n`);
255
+ }
256
+ }
257
+
258
+ listApps(socket) {
259
+ const apps = this.adminExtension.frameworkInstance.appManager?.getApps() || [];
260
+ socket.write(`\nAplicaciones desplegadas: ${apps.length}\n\n`);
261
+
262
+ apps.forEach(app => {
263
+ const status = app.running ? '▶️' : '⏹️';
264
+ socket.write(` ${status} ${app.name} v${app.version}\n`);
265
+ });
266
+
267
+ socket.write(`\n> `);
268
+ }
269
+ }
270
+
271
+ module.exports = AppManagementModule;
272
+ ```
273
+
274
+ ---
275
+
276
+ ## 🖥️ CLI Commands (Roadmap)
277
+
278
+ ### Comandos Básicos
279
+
280
+ ```bash
281
+ # Deploy de aplicación
282
+ blackcoffee app:deploy ./mi-app-1.0.0.tar.gz
283
+
284
+ # Listar aplicaciones
285
+ blackcoffee app:list
286
+
287
+ # Ver estado de una app
288
+ blackcoffee app:status mi-app
289
+
290
+ # Iniciar aplicación
291
+ blackcoffee app:start mi-app 1.0.0
292
+
293
+ # Detener aplicación
294
+ blackcoffee app:stop mi-app 1.0.0
295
+
296
+ # Reiniciar aplicación
297
+ blackcoffee app:restart mi-app 1.0.0
298
+
299
+ # Undeploy
300
+ blackcoffee app:undeploy mi-app 1.0.0
301
+
302
+ # Ver logs
303
+ blackcoffee app:logs mi-app --tail=100
304
+
305
+ # Ver información detallada
306
+ blackcoffee app:info mi-app 1.0.0
307
+ ```
308
+
309
+ ### Comandos de Configuración
310
+
311
+ ```bash
312
+ # Listar configuraciones
313
+ blackcoffee config:list
314
+
315
+ # Obtener configuración
316
+ blackcoffee config:get server.port
317
+
318
+ # Establecer configuración
319
+ blackcoffee config:set server.port 9791
320
+
321
+ # Reiniciar servidor
322
+ blackcoffee server:restart
323
+ ```
324
+
325
+ ---
326
+
327
+ ## 🌐 UI Web - Consideraciones Futuras
328
+
329
+ ### API Endpoints para UI
330
+
331
+ ```javascript
332
+ // GET /api/admin/apps
333
+ // Lista todas las aplicaciones desplegadas
334
+
335
+ // GET /api/admin/apps/:name/:version
336
+ // Información detallada de una app
337
+
338
+ // POST /api/admin/apps/deploy
339
+ // Deploy de nueva aplicación (multipart/form-data)
340
+
341
+ // POST /api/admin/apps/:name/:version/start
342
+ // Iniciar aplicación
343
+
344
+ // POST /api/admin/apps/:name/:version/stop
345
+ // Detener aplicación
346
+
347
+ // DELETE /api/admin/apps/:name/:version
348
+ // Undeploy de aplicación
349
+
350
+ // GET /api/admin/apps/:name/:version/logs
351
+ // Logs de la aplicación
352
+
353
+ // GET /api/admin/stats
354
+ // Estadísticas del servidor
355
+ ```
356
+
357
+ ### Estructura de Respuesta API
358
+
359
+ ```json
360
+ {
361
+ "success": true,
362
+ "data": {
363
+ "apps": [
364
+ {
365
+ "name": "mi-app",
366
+ "version": "1.0.0",
367
+ "displayName": "Mi Aplicación",
368
+ "status": "running",
369
+ "deployedAt": "2026-02-16T12:00:00.000Z",
370
+ "startedAt": "2026-02-16T12:01:00.000Z",
371
+ "routes": 5,
372
+ "dependencies": {
373
+ "lodash": "^4.17.21"
374
+ },
375
+ "metrics": {
376
+ "requests": 1234,
377
+ "errors": 5,
378
+ "avgResponseTime": 45
379
+ }
380
+ }
381
+ ]
382
+ }
383
+ }
384
+ ```
385
+
386
+ ---
387
+
388
+ ## 📝 Archivos a Crear
389
+
390
+ ### Fase 1: Núcleo
391
+
392
+ - [ ] `core/appLoader.js` - Carga de aplicaciones
393
+ - [ ] `core/appManager.js` - Manager de ciclo de vida
394
+ - [ ] `core/configLoader.js` - Carga de configuración
395
+ - [ ] `core/manifestValidator.js` - Validación de manifests
396
+ - [ ] `core/routeRegistrar.js` - Registro de rutas
397
+ - [ ] `includes/appHooks.js` - Hooks específicos para apps
398
+ - [ ] `config/server.json` - Configuración principal
399
+ - [ ] `config/applications.json` - Estado de apps
400
+
401
+ ### Fase 2: CLI
402
+
403
+ - [ ] `bin/blackcoffee` - CLI ejecutable
404
+ - [ ] `cli/commands/app.js` - Comandos de aplicaciones
405
+ - [ ] `cli/commands/config.js` - Comandos de configuración
406
+ - [ ] `cli/commands/server.js` - Comandos de servidor
407
+ - [ ] `cli/utils/deployer.js` - Utilidades de deploy
408
+ - [ ] `cli/utils/validator.js` - Validaciones
409
+
410
+ ### Fase 3: Insitu Modifications
411
+
412
+ - [ ] `lib/admin/modules/AppManagementModule.js` - Módulo admin TCP
413
+ - [ ] `lib/core/hooks-handlers/app-hooks-handler.js` - Handlers oficiales
414
+ - [ ] Documentación en `hooks_filters_documentation.md`
415
+
416
+ ### Fase 4: UI Web (Futuro)
417
+
418
+ - [ ] `routes/admin.json` - Rutas de administración
419
+ - [ ] `controllers/AdminController.js` - Controlador admin
420
+ - [ ] `public/admin/` - UI Web estática
421
+
422
+ ---
423
+
424
+ ## ✅ Próximo Paso
425
+
426
+ Implementar **Fase 1: Núcleo** comenzando por:
427
+ 1. `includes/appHooks.js` - Todos los hooks
428
+ 2. `core/appLoader.js` - Carga de aplicaciones
429
+ 3. `core/manifestValidator.js` - Validación
430
+
431
+ ---
432
+
433
+ **Documento creado:** 2026-02-16
434
+ **Versión:** 1.0
435
+ **BlackCoffee:** v2.0.0-app-server