Resumen
- Rol: Lead iOS Developer / Responsable de Arquitectura y Desarrollo iOS
- Cliente / Contexto: Proyecto para Fullcircle (Solución de distribución interna para iPad)
- Tech Stack: Swift, SwiftUI, UIKit, SceneKit, Swift Concurrency (
async/await, MainActor), REST API, Sockets, Alamofire, Keychain, Firebase
El Reto
Desarrollar desde cero la aplicación iPad para la gestión operativa integral de establecimientos (reservas, plano de sala interactivo, POS y cobro). El mayor desafío técnico fue construir una arquitectura capaz de manejar múltiples estados e interacciones en tiempo real, integrando hardware externo y manteniendo una interfaz ágil en entorno de producción.
Logros y Aportes Técnicos
- Arquitectura Modular e Híbrida:
- Diseño de la solución en SwiftUI y Swift, integrando UIKit en componentes de interacción avanzada para garantizar un rendimiento óptimo.
- Creación de componentes desacoplados de la lógica de negocio para favorecer su reutilización en los flujos de Ventas, POS y TPV independiente.
- Motores Visuales e Interacción (2D / 3D):
- Desarrollo en UIKit de un motor de representación interactiva de salas impulsado dinámicamente por JSON desde servidor (coordenadas, mesas, estados y gestos).
- Integración de modelos 3D y vista de escenario desde cada mesa mediante SceneKit (
SCNView y SCNScene) con soporte para rotación, zoom y gestos.
- Sincronización en Tiempo Real y Concurrencia Avanzada:
- Implementación de capa de red centralizada (Alamofire) combinando REST API con Sockets para la actualización de estados en tiempo real.
- Evolución de la gestión asíncrona desde closures/GCD hacia Swift Concurrency (
async/await, MainActor).
- Integración de Hardware y Sistemas Externos:
- Comunicación directa vía Wi-Fi e integración de API para impresión de tickets y gestión de errores.
- Integración con Autocash para el manejo automatizado de efectivo dentro del flujo de cobro.
- Seguridad, Persistencia y Distribución:
- Manejo seguro de credenciales mediante Keychain y persistencia operativa con UserDefaults.
- Gestión de perfiles con sistema de roles y permisos dinámicos según el usuario.
- Distribución interna de versiones a través de Firebase.
Impacto y Resultados Técnicos
- Modificación de distribución sin despliegues: Gracias al motor definido por servidor via JSON, los establecimientos pueden alterar el mapa de sala sin necesidad de generar o subir una nueva versión de la app.
- Escalabilidad del código: La arquitectura modular permitió extender la solución inicial de Reservas hacia los módulos de POS y TPV independiente reutilizando la lógica base.