Hardware y tiempo real
Firmware propio sobre ESP32, PLC industriales y equipos de terreno integrados por malla o bus de mensajería, con operación autónoma cuando se cae el enlace.
dev.gramastudio.cl · portafolio técnico
Construimos sistemas que leen el mundo físico, lo ordenan y lo dejan operable: control industrial, plataformas web y datos en producción.
La fruta fresca de exportación pierde condición en tramos que nadie ve: packing, carga, ruta, puerto, embarque. Los data loggers pasivos miden un punto por contenedor y se descargan recién al final del viaje, cuando el rechazo ya ocurrió.
Tres piezas. Un nodo por palet (ESP32-C3 con temperatura, humedad e impacto) que forma malla ESP-NOW y duerme entre lecturas. Un gateway por contenedor que concentra la malla y sube por NB-IoT con una sola SIM y buffer local. Y una plataforma Bun + Elysia sobre PostgreSQL que ingesta, alerta según el tipo de fruta y deja el registro del viaje. El nodo se provisiona por Bluetooth desde una app Expo y se actualiza por OTA con particiones duales.
Cámaras, PLC, radar y GPS Trimble instalados en faena, cada uno con su propio protocolo, su propio software y ningún lugar común donde mirar lo que está pasando.
Un controlador en Python por tipo de equipo publica a un broker MQTT con ACL por tópico. El core consume ese flujo, aplica las reglas de negocio y alertas, y persiste en PostgreSQL. Sobre eso, una API HTTP y un frontend web con WebSocket para ver el estado en vivo. Todo en Docker Compose, desplegado on-premise en la red del cliente.
En un centro de cultivo la alimentación decide el costo y el crecimiento. Los datos de ambiente, equipos y consumo llegan tarde y dispersos, y la dosificación termina siendo por criterio y no por medición.
ioFish integra directamente con PLC industriales (WAGO, Phoenix Contact) y ajusta la dosificación por jaula en tiempo real, cruzando ambiente, conducta y pronóstico. Opera de forma autónoma en el borde con buffer local de 30 días, de modo que un corte de enlace no detiene la alimentación ni pierde trazabilidad.
Atribución ioFish Suite es producto de su propio equipo. Mi participación fue como colaborador: frontend y reestructuración de la arquitectura en el ámbito de ioFeed.
Las apuestas entre amigos viven en un grupo de chat: nadie recuerda quién dijo qué, no hay historial y siempre se discute el resultado.
Grupos privados donde se crean actividades, eventos y torneos con apuestas asociadas. API en Bun + Elysia sobre MongoDB, auth con JWT firmado (HS256) e invitaciones con vencimiento. Cada acción relevante queda registrada por un servicio de eventos, así el historial es la fuente de verdad y no la memoria del grupo.
Organizar algo entre varios es perseguir confirmaciones, cuadrar cuánta comida comprar, anotar quién puso cuánto y quién trae qué. Todo repartido entre mensajes que se pierden.
El anfitrión arma el evento y comparte un enlace con token: los invitados confirman sin crear cuenta. Sobre esa base hay diecinueve módulos que se encienden según el tipo de evento —invitados, alimentos, presupuesto, gastos y deudas, regalos, colecta, fotos, muro, amigo secreto—. SvelteKit 2 con Svelte 5 en runes resuelve páginas, endpoints y hooks; Drizzle sobre SQLite libSQL persiste en un volumen del contenedor; y dentro del mismo proceso corren tareas node-cron que mandan recordatorios, bloquean los eventos que ya empezaron y purgan las fotos vencidas.
Cuatro frentes que se combinan según el proyecto. La mayoría de las veces empiezan en el mundo físico y terminan en una pantalla que alguien usa todos los días.
Firmware propio sobre ESP32, PLC industriales y equipos de terreno integrados por malla o bus de mensajería, con operación autónoma cuando se cae el enlace.
Productos completos en SvelteKit y Bun: autenticación, dominio, panel de administración y una UI que aguanta uso diario real.
Modelado y migraciones sobre Postgres, Mongo y SQLite, más métricas e índices en Elastic para saber qué está pasando antes de que reclamen.
Un estándar de despliegue común: build local, imagen versionada, envío al servidor y compose. Mismo procedimiento en todos los proyectos.
Cuéntanos qué equipo, qué dato o qué producto tienes en mente. Respondemos con una idea de alcance, no con un formulario.