Senior iOS Engineer.
Ten years building in Swift.
I work at VASS, on the Inditex account, where I lead the iOS team. On my own time I build and maintain two App Store apps, with their API and their server.
01 — Own products
Two apps I maintain myself
App, API, data and production operations. I build and maintain them; each case study explains the decisions I made and what they cost.
-
CholloGas
On the App StoreOfficial fuel prices for Spain and France (MITECO and the French government). Swift and SwiftUI on the client; a TypeScript API on Fastify and PostgreSQL, with one adapter per country. I sync every six hours and writes are delta: I only store a row when the price really changes.
- Sources
- MITECO and DATAGOUV
- Backend
- Prices every 6 h
- Countries
- Spain and France



-
Hilo
On the App StoreA daily word game: five words hiding a common thread. SwiftUI with strict concurrency and local persistence. The expensive part was not the game, it was the pipeline that generates, validates and reviews the catalogue and the store creatives for eleven regional variants.
- Puzzles
- 4,015
- Languages
- 8
- Downloads
- +500



02 — VASS · Client projects
Production apps for banking and retail
Client projects inside VASS: the company is always the same, the client changes with the project. I only describe the public scope of each one.
-
Inditex 2022 — todayLeading the iOS team since 2025
A universal iPhone and iPad app that store staff at Zara, Pull&Bear, Massimo Dutti, Bershka, Stradivarius and Oysho use to run their store worldwide: sales ranking, sale periods, stockroom and displays. A modular architecture of 12+ libraries.
Swift 5/6 · Strict concurrency · Clean Architecture + MVVM · Combine/OpenCombine · UIKit → SwiftUI migration · Tuist · fastlane · CI/CD · BDD and screenshot tests -
Santander Belgium 2022
A deposits app. I coordinated iOS and Android so both versions behaved the same, in French, Dutch and English.
Swift · Kotlin · Combine -
Mercadona 2021
Their first app for buying at the fish market: by boat, by market and by day, with the price history at hand.
Swift 5 -
Unicaja 2020
Bizum inside the bank app, with PSD2 in the way and the API covered by tests before writing the screen.
Swift · VIPER · TDD -
Pibank 2019 — 2020
The private customer area of Banco Pichincha and its remittance app. My first banking project.
Swift 4 → 5 · VIPER
03 — Open source and tooling
Tooling and a reference architecture
They started as something I needed and ended up published. PRDPlanner and HarnessHub have a case study; the code stays private.
-
Swift 6 · iOS 18+ · MIT
iOS Architecture Reference
Open sourceA buildable SwiftUI app documenting the architecture I use as a reference: layers and features inspired by Clean Architecture, MVVM with @Observable state, typed navigation over a single Router and manual injection through factories. It includes what examples usually skip: per-environment xcconfig, URLSession interceptors, SSL pinning, a privacy manifest and deep links with route restoration. The boundaries between layers hold through review and tests inside a single app target.
194 Swift Testing tests across 27 suites · no external dependencies
Swift 6 · SwiftUI · Swift Testing · URLSession · GitHub Actions
-
Go · CLI · MIT
AnvilCLI
Open sourceA Go CLI with a TUI wizard that generates Xcode projects ready to build with Clean Architecture + MVVM + Router, and adds complete features —domain, data, views, tests and mocks— to an existing project. Writing is transactional: it validates the whole plan before touching disk, groups every collision into one report and overwrites nothing.
7 AI tooling packs · 34 skills with declared provenance
Go · BubbleTea · Xcode project generation · GitHub Actions
-
Claude Code · Plugin
PRDPlanner
Public edition in preparationA structured workflow for Claude Code, shipped as a plugin: PRD → phased plan → build. The main agent orchestrates and delegates to ten subagents with fresh context, each on the model that fits its task, and an adversarial review closes every phase before I approve anything.
10 subagents · 14 skills · phases with dependencies and human gates
Claude Code · Subagents · Hooks · Gitflow
-
React · TypeScript · Local-first
HarnessHub
Local betaA local composer of assets for coding harnesses: you pick technologies, harnesses and compatible assets, review the resulting tree and download a traceable, reproducible bundle. It neither installs, runs nor configures anything it packages, and every catalogue release is verified locally with a detached signature, fail-closed.
A pnpm monorepo with domain, application and catalogue kept apart · e2e with Playwright and axe-core
React 19 · TypeScript · Vite · Vitest · Playwright · oxlint
04 — Contact
Write to me.
To talk about work, a collaboration or any question about the apps. I answer myself, there is no form in between.