Estructura de la aplicación
Cada aplicación de IronFlock es una carpeta versionada con Git que contiene tu código de aplicación y un directorio de configuración .ironflock opcional.
Estructura de directorios
my-app/
├── Dockerfile # Requerido: define la imagen del contenedor
├── docker-compose.yml # Opcional: configuración multi-contenedor
├── main.py # Tu código de aplicación (cualquier lenguaje)
├── requirements.txt # Dependencias
└── .ironflock/
├── board-template.yml # Diseño del dashboard
├── data-template.yml # Esquema de base de datos para telemetría
├── env-template.yml # Parámetros configurables por el usuario
├── port-template.yml # Definiciones de puertos de acceso remoto
└── ai-template.yml # Definiciones de agentes de IALas seis partes de una aplicación
1. Código edge
La lógica principal de la aplicación. Este código se ejecuta dentro de un contenedor Docker en el dispositivo y gestiona la comunicación con sensores, PLCs, cámaras o cualquier hardware conectado.
El código edge puede escribirse en cualquier lenguaje de programación — Python, JavaScript, Go, Rust, C++ o cualquier otro que se ejecute en un contenedor Docker.
2. Panel (interfaz de usuario)
Un dashboard en tiempo real construido con el editor de paneles sin código. Los paneles muestran datos de todos los dispositivos que ejecutan la aplicación en un proyecto y se actualizan automáticamente a través del sistema de mensajería.
La configuración del panel se almacena en board-template.yml y se genera automáticamente mediante el editor.
3. Almacenamiento de datos
Cada proyecto tiene su propia base de datos física (impulsada por TimescaleDB). Cuando una aplicación define tablas en data-template.yml, esas tablas se aprovisionan automáticamente cuando un usuario instala la aplicación. Los datos son privados por proyecto — los desarrolladores no tienen acceso a los datos del usuario.
4. Realm de mensajería
Al instalarse, la aplicación obtiene un realm de mensajes privado que conecta:
- Todas las instancias de la aplicación en dispositivos edge
- La base de datos del proyecto
- La interfaz del panel
La comunicación utiliza WAMP (Web Application Messaging Protocol) a través de los SDKs de IronFlock (ironflock-py para Python, ironflock-js para JavaScript).
5. Acceso remoto
Define puertos y protocolos en port-template.yml para habilitar túneles seguros hacia servicios del dispositivo. Los usuarios pueden entonces activar/desactivar estos túneles por dispositivo. Ver Remote Access.
6. Agentes de IA
Expone agentes de IA específicos del dominio a través de ai-template.yml que extienden el asistente de IA de IronFlock. Ver AI Features.
Almacenamiento persistente en dispositivos
Por defecto, los datos dentro del contenedor se pierden al reiniciar. Dos directorios persisten entre reinicios:
| Ruta | Alcance |
|---|---|
/data | Privado para esta aplicación — otras aplicaciones no pueden acceder |
/shared | Compartido entre todas las aplicaciones del dispositivo |
Si estás usando Docker Compose, configura los volúmenes persistentes en tu docker-compose.yml en su lugar.
Acceso al hardware
Si tu aplicación interactúa con hardware local (sensores, cámaras, dispositivos seriales), esos dispositivos se montan en /dev dentro del contenedor.