Oscar Canton.
Senior iOS Engineer.
Trabajo en VASS. Desde finales de 2022 estoy en el proyecto de Inditex, la app con la que el personal de tienda del grupo trabaja cada día, y desde 2025 llevo su equipo iOS. Antes pasé por banca y retail con otros clientes de la casa.
Aparte está lo mío: dos apps en la App Store que hice porque las quería usar yo, y de las que también mantengo la API y el servidor.
- Swift · SwiftUI
- Clean Architecture · MVVM
- TypeScript · Fastify
- PostgreSQL
- Go
- AI developer tooling
- Docker · Cloudflare
Trayectoria
Casi todo lo que he hecho en iOS ha sido para banca y gran distribución. Equipos grandes, apps con las que alguien trabaja o mueve su dinero, y el nivel de revisión que eso trae. Ahí aprendí a defender cada decisión por escrito, que es una costumbre que ya no se me quita.
En VASS llevo desde 2019. Los tres primeros años fui saltando de proyecto en proyecto —Pibank, Unicaja, Mercadona, Santander— y desde finales de 2022 estoy fijo en la cuenta de Inditex. En 2025 me dieron el equipo: somos tres, y sigo picando código.
Y luego está lo mío, que va aparte y firmo como OgamLabs. Dos apps en la App Store con su API, su base de datos y su servidor. De ahí sale casi todo lo que publico en abierto.
Apps en producción
Proyectos de cliente dentro de VASS: la empresa es siempre la misma, el cliente cambia con el proyecto. De cada uno cuento solo el alcance público, porque lo de dentro es suyo.
-
Inditex 2022 — hoy
La app de iPhone y iPad con la que el personal de tienda de Zara, Pull&Bear, Massimo Dutti, Bershka, Stradivarius y Oysho gestiona su tienda en todo el mundo. Más de 50 módulos repartidos en una docena de librerías. Swift 5/6 · SwiftUI · Tuist -
Santander Belgium 2022
App de depósitos. Coordiné los equipos de iOS y Android para que las dos versiones se comportaran igual, con la interfaz en francés, neerlandés e inglés. Swift · Kotlin · Combine -
Mercadona 2021
Su primera app para comprar en lonja: por barco, por lonja y por día, con el histórico de precios a mano. Swift 5 -
Unicaja 2020
Bizum dentro de la app del banco, con PSD2 de por medio y la API bancaria cubierta con tests antes de escribir la pantalla. Swift · VIPER · TDD -
Pibank 2019 — 2020
Área privada de clientes del Banco Pichincha y su app de envío de remesas. Fue mi primer proyecto de banca. Swift 4 → 5 · VIPER
CholloGas y Hilo
Dos apps mías, firmadas como OgamLabs y las dos en la App Store. Las empecé para usarlas yo, y eso se nota en lo que decidí y en lo que decidí no hacer.
-
Ver en la App Store ↗
CholloGas
En la App StoreComparador de precios oficiales de carburantes en España y Francia, con datos de MITECO y del Gobierno francés. La hice por una razón poco noble: las que había eran horrorosas de mirar y yo quería una bonita para repostar.
- Cobertura
- ES + FR
- Fuentes
- 2 públicas
- Modo
- Offline
La app es Swift y SwiftUI, y guarda lo último que vio para seguir sirviendo en un sótano sin cobertura. La API es TypeScript sobre Fastify y PostgreSQL, con un adaptador por país: cada gobierno publica sus datos como le parece.
- El problema
- Dos fuentes oficiales que no se parecen en nada: otros identificadores, otra geografía, otros carburantes y otras horas. Todo eso tenía que acabar en un único modelo tipado. Y como sincronizo cada seis horas, el histórico se llenaba de lecturas idénticas.
- Alternativas
- Guardarlo todo y podar después con un proceso de limpieza, o guardar solo los cambios de precio de verdad.
- La decisión
- Sincronización delta: escribo una fila únicamente cuando el precio cambia. Menos escrituras repetidas, un histórico con variaciones reales y ninguna tarea de limpieza que mantener.
- Lo que costó
- Que la fecha que ves es la de la última variación, no la de la última consulta. Un precio que lleva días quieto parece viejo aunque esté al día. Lo explico dentro de la app y le dediqué una página entera en datos y precios.
- Swift
- SwiftUI
- Fastify
- PostgreSQL
- Docker
-
Ver en la App Store ↗
Hilo
En la App StoreJuego diario de palabras: cinco palabras que esconden un hilo común. En casa somos de juego diario, así que acabé haciendo el nuestro.
- Puzzles
- 4.015
- Locales de tienda
- 11
- Tests
- 1.128
SwiftUI con concurrencia estricta y persistencia local. Lo que más tiempo me llevó no fue el juego: fue montar el pipeline que genera, valida y revisa el catálogo y las creatividades de tienda para once locales, porque hacer eso a mano no era viable para una persona. El código y el catálogo siguen privados; el proceso está documentado.
Arquitectura y herramientas
Todo esto empezó siendo algo que necesitaba yo y acabó publicado. La referencia de arquitectura es una app que compila, no un diagrama. Anvil me monta el esqueleto de un proyecto sin pisarme un solo fichero. Y con la IA aplico lo mismo que con cualquiera que toque mi código: un encargo claro, el contexto justo y alguien que lo revisa antes de que entre. De PRDPlanner y HarnessHub hay caso de estudio; el código sigue siendo privado.
-
iOS Architecture Reference
Código abiertoUna app de Xcode entera en Swift 6 que compila, organizada por capas y features dentro de un único target. Ahí están Clean Architecture, MVVM, Router tipado, estado @MainActor y composición explícita. Los límites entre capas se sostienen con revisión y tests, no porque el compilador los separe en módulos.
- Entradas
- 19
- Tests
- 194
- Dependencias externas
- 0
- Swift 6
- SwiftUI
- Clean Architecture
-
AnvilCLI
Código abiertoCLI en Go que me monta proyectos iOS y packs de herramientas de IA. Antes de escribir nada planifica y valida todos los destinos: no sobrescribe un solo fichero, junta las colisiones en una lista y, si algo falla a mitad, deshace únicamente lo que había creado esa ejecución.
- Tests
- 421
- Skills con procedencia
- 34
- Ejemplos Swift 6
- 25
- Go
- Swift 6
- Code generation
-
PRDPlanner
Edición pública en preparaciónWorkflow de PRD → plan → build para Claude Code. Agentes especializados, fases con dependencias y una etapa que intenta refutar lo que han encontrado las demás antes de que yo decida nada.
- Agent orchestration
- Verification
- Human gates
-
HarnessHub
Beta localCompositor local de skills, subagentes, plugins y MCPs para cinco harnesses. Resuelve compatibilidades y conflictos y genera bundles reproducibles sin instalar ni ejecutar nada de lo que empaqueta.
- React · TypeScript
- Local-first
- Supply-chain safety
Cómo trabajo
Cinco cosas que decidí en mis apps, con lo que me costó cada una.
- Sin cuenta si no hace falta. CholloGas no tiene login. No necesito saber quién eres para decirte lo que cuesta el gasóleo. Lo pago renunciando a sincronizar entre dispositivos, y me parece un buen trato.
- El último tramo va en el calendario. El grueso de una app se levanta rápido y engaña mucho. Lo que cuesta es lo de después: la pantalla vacía, el móvil sin cobertura, VoiceOver, que no se caliente el teléfono. Si no lo planifico desde el principio, no se hace.
- Pago único siempre que pueda. CholloGas se compra una vez y ya está. Hilo también, aunque ahí hay suscripción para quien la prefiera.
- Los datos, como vienen. Los precios salen de la fuente oficial tal cual: no los redondeo, no los corrijo y no los predigo. Prefiero explicar por qué un precio parece viejo antes que disimularlo.
- Si lo despliego, lo mantengo. Certificados, copias de seguridad y monitorización. No hay un equipo de sistemas al que pasarle el marrón, y eso cambia lo que uno decide construir.
Contacto
Si quieres hablar de trabajo, de una colaboración o tienes un problema con alguna de las apps, escríbeme. Contesto yo.
Información del titular
Este sitio es un portfolio personal de carácter informativo. No integra analítica, cookies ni formularios, y su titular no recopila datos personales a través de él. El proveedor de alojamiento procesa las solicitudes técnicas necesarias para servir la página.
- Titular
- Oscar Canton Garcia
- Correo
- soporte@ogamlabs.com
- Actividad
- Desarrollo y publicación de aplicaciones móviles