Estructura de Directorios y Archivos Principlaes
El proyecto presenta la siguiente organización de carpetas y archivos:
pomelo-robot-demo/
├── app/
│ ├── data/
│ │ └── json/
│ │ └── dialogues.json
│ ├── lib/
│ ├── scripts/
│ ├── test/
│ └── entry.js
├── config/
│ ├── dev/
│ │ ├── db-mysql.json
│ │ └── cache-redis.json
│ ├── prod/
│ │ ├── db-mysql.json
│ │ └── cache-redis.json
│ └── base.json
├── node_modules/
├── package.json
└── readme.md
Desglose de la estructura:
app/: Directorio raíz del código de la aplicación.data/: Contiene archivos de datos estáticos.json/: Archivos de datos en formato JSON.dialogues.jsonalmacena las frases de interacción del robot.
lib/: Módulos o bibliotecas desarrollados para el proyecto.scripts/: Utilidades o scripts de automatización.test/: Pruebas automatizadas del proyecto.entry.js: Punto de arranque principal de la aplicación.
config/: Almacena todos los archivos de configuración.dev/: Configuraciones específicas para el entorno de desarrollo.db-mysql.json: Parámetros de conexión a MySQL.cache-redis.json: Parámetros de conexión a Redis.
prod/: Configuraciones para el entorno de producción.db-mysql.json: Parámetros de conexión a MySQL.cache-redis.json: Parámetros de conexión a Redis.
base.json: Configuración base o por defecto, compartida entre entornos.
node_modules/: Dependencias externas instaladas via npm.package.json: Define los scripts, depenedncias y metadatos del proyecto.
Mecanismo de Arranque de la Aplicación
El proceso de inicio se gestiona desde el archivo app/entry.js. Este módulo se encarga de:
- Cargar y mergear la configuración del entorno activo con la configuración base.
- Importar y registrar los componentes necesarios (handlers, remotes, etc.).
- Crear la instancia del servidor y comenzar a escuchar peticiones.
Sistema de Configuración por Entornos
La configuración se segmenta por carpetas dentro de config/ para manejar distintas etapas de despliegue. Un archivo base (base.json) contiene valores comunes, los cuales pueden ser sobreescritos por los archivos específicos de cada entorno.
Ejemplo de Archivo de Configuración Base
// config/base.json
{
"server": {
"listenPort": 8080
},
"db": {
"type": "mysql",
"poolSize": 5
},
"cache": {
"type": "redis",
"ttl": 3600
}
}
Ejemplo de Configuración Específica para Desarrollo
// config/dev/db-mysql.json
{
"host": "127.0.0.1",
"user": "robot_dev",
"password": "secret_dev",
"schema": "robot_dev_db",
"poolSize": 3
}
Ejemplo de Configuración Específica para Producción
// config/prod/db-mysql.json
{
"host": "db.prod.example.com",
"user": "robot_app",
"password": "secret_prod",
"schema": "robot_prod_db",
"poolSize": 10
}
Este enfoque permite aislar completamente las credenciales y parámetros de conexión, facilitando la gestión segura del proyecto a través de sus diferentes fases.