Cuenca, Ecuador · Available for remote work

Kevin Zambrano

Mobile developer. I build apps in Flutter, Kotlin and Swift — and the backends and infrastructure behind them.

2 appsPublished on stores
End to endApp · API · Server
PaymentsGateway integration
6 devicesDistributed biometrics
Selected work

What I've built, and what it solved

Each of these started with a constraint that made the obvious approach impossible.

Payment integration for Klanbarz

Kotlin · Android · REST
iActiva · 2024–2026

Klanbarz needed to charge through PayPhone, the digital wallet most people in Ecuador actually use. Their native flow required us to host a callback endpoint — and we had nowhere to host one.

I designed an alternative around temporary payment links: the app generates a transaction id on the device, opens the gateway in the browser, and when the Android lifecycle tells me the user has come back, it queries the transaction status directly. I got the real integration documentation by reaching out to PayPhone's own engineering team, because the public docs weren't enough.

Result: the product could take payments through the country's most common method without owning any backend infrastructure.

Facial access control across six sites

C# · WPF · REST
iActiva · 2024–2026

Six biometric readers, installed in locations kilometres apart, had to converge into a single operator window running on a modest machine. I built the desktop application and coordinated the REST API it depended on with the engineering team at Lartizco, over several working sessions, while their backend was still being built.

Along the way I had to solve timezone drift between sites and memory pressure on low-spec hardware. But the part I'm proudest of is what we did about synchronisation failures: I implemented per-reader log recovery so no attendance record is ever lost when a site drops off the network.

The idea: six devices spread across a region will lose connection. The engineering question isn't how to prevent that — it's what happens when it does.

Nivel 45

Flutter · Python/FastAPI · PostgreSQL
My own product · Published

A directory that connects people with local professionals. I built and shipped the whole thing: the Flutter app, the FastAPI backend, the PostgreSQL database, the Ubuntu server it runs on with PM2, the Cloudflare layer in front of it, and the website.

I chose Flutter so one codebase could serve both platforms, and wrote the API myself so the app and the data model could evolve together instead of negotiating across a boundary.

Mobile apps for a gym platform

Kotlin · Swift · Flutter · Avalonia
iActiva · 2024–2026

I built Klanbarz natively on both Android and iOS, then took part in migrating it to Flutter so the product could reach more businesses from a single codebase.

When clients asked for training rankings, I built the trainer module in Avalonia — a desktop app running on Windows, macOS and Linux where coaches send group or individual workouts and follow their members' metrics.

Domino Effect

Unity · C#
Side project · Published

A small arcade game, built entirely by me in two weeks — mechanics, feel, and all the way through store submission. Mostly to find out how much of a game I could finish alone, start to finish.

Tools for streamers

JavaScript · Avalonia/.NET
Side projects

Twitch Hover Chat came from not having a second monitor: an overlay that keeps chat visible on top of the game without swallowing clicks. More Mur Mur does local speech recognition and turns what you say into animated, voiced dialogue lines.

Stack

What I work with

Mobile
Flutter / Dart, Kotlin, native Android, Swift
Backend
Python / FastAPI, C# / .NET, Node.js, REST APIs, authentication, payment gateways
Desktop
WPF, Avalonia — Windows, macOS and Linux
Data & infra
PostgreSQL, MySQL, Git, Docker, Ubuntu Server, PM2, Cloudflare, Postman
Also
JavaScript, React, Angular, PHP, Java, Unity, biometric hardware, legacy systems
How I work

Two things I actually believe

Not knowing something is one of the better things that can happen to you. You get to look at the problem without assuming the existing answer is the right one.

That's how the PayPhone integration happened, and how I ended up connecting modern services to a FoxPro database with no documentation and nobody left to ask. When the standard solution fits, I use it. When it doesn't, not knowing it well turns out to be an advantage.

I'd much rather fail because I tried and couldn't, than because I never attempted it.

Most of what's on this page started that way — including the two apps on the store and a game I had no idea how to finish when I started it.

I've also taught introductory programming with Scratch to kids, and to teenagers about to pick a university degree without knowing what any of it meant. Teaching someone the logic before the syntax is the fastest way to find out whether you really understand it yourself.

Right now I'm deliberately going deeper on automated testing and architecture — writing the failing test first, and being stricter about where responsibilities live.

Contact

Open to remote roles and contract work

Mobile, full-stack or desktop. Based in Ecuador, working in American time zones.