Skip to content

iOS Developer · Apple Developer Academy

I build native iOS apps.

Five are on the App Store — one of them turns an iPhone into a controller for the Apple TV over MultipeerConnectivity.

Experience

Jun 2026 Present

Full-Stack Developer

The Horizon Group Tech

A platform for a financial BPO. An invoice arrives over WhatsApp or through the portal, a vision model reads it, the AI proposes the accounting entry, and a person approves it before anything reaches the client’s ERP.

  • The WhatsApp bot end to end. Clients send the photo and the caption as two separate messages, so I used the document’s own id as the queue job id and let the caption promote the pending job — no control table, no shared state.
  • A validation layer over the model’s output. Every account it proposes is checked against that company’s chart of accounts, and anything that does not match becomes a handled error before it can turn into an entry.
  • Data isolation from the opposite premise to the usual one: with no explicit link between operator and company, nothing is readable. The ancestry check applies the same rule to files on Drive.
  • The Postgres model: 18 tables, 31 indexes and 17 migrations, with filtering and aggregation resolved in SQL rather than in the application.
  • I arrived at a repository another developer had already started, and we split it by area rather than by ticket: the bot, Drive and access control were mine, the ERP integration was not. Nothing here claims the half I did not write.

Next.js 14 · TypeScript · Prisma · PostgreSQL · BullMQ · Redis · Anthropic SDK · WhatsApp Cloud API

May 2026 Present

iOS Developer

Mobits

Two iOS codebases that have been on the App Store for over a decade — a cinema listings app in Objective-C and Swift, and a single codebase compiled into 81 white-label shopping-mall apps. Both on SVN, and the cinema app alone carries nine authors in its history: most of the work here begins by understanding why someone else decided what they decided, years before I arrived.

  • Cine Mobits: adapted the app for iOS 26 and Xcode 26 — deprecated APIs mapped, plists adjusted, and linker and Core Data errors closed, without dropping iOS 18.
  • Dependencies moved from CocoaPods to Swift Package Manager across 68 targets, taking Firebase, Google Mobile Ads and SDWebImage up a major version each, with no regression in production.
  • Two crashes closed. An infinite recursion in the tab view pager, fixed by guarding on state rather than on value; and a Core Data crash caused by touching the main thread inside a private-queue context.
  • Liquid Glass in the navigation components, with a visual fallback held for the iOS versions that do not have it.
  • Mobits Plaza is white-label from one codebase: signing and provisioning through fastlane match, and per-brand theming out of an internal design system.
  • Mobits Plaza: added the 6-year band to film ratings. The backend sends 0 for “Livre”, not for “unknown”, so I put explicit state in the model rather than a magic value, and propagated it to the five surfaces that render a rating. On a branch, not yet reintegrated.

Objective-C · Swift · UIKit · Core Data · Swift Package Manager · fastlane · SVN

Apr 2026 Present

Mobile Developer

Levius Consulting

A Flutter app on iOS, Android and web for dermatology and aesthetic clinics to record how a patient progresses: standardised photos, skin lesions, body measurements, exams, prescriptions and consent forms.

  • Voice dictation across the screens that take written notes, transcribed by Whisper. I moved the call out of the app into a Supabase Edge Function authenticated with the user’s own token, so the key never enters the binary and cannot be pulled out of a published build.
  • The body-measurement module in Dart: four custom components, a progress chart, and editing both by measurement and by day, on top of a Postgres schema that predates me by two years.
  • The queries are written by hand against 74 tables and 45 views, with nested joins instead of N+1 and a soft-delete filter on every read.
  • Repetitive edits applied by a Dart script over the FlutterFlow AI SDK, so the same change landed the same way everywhere in a project already in production.
  • To apply a structural change to a project with 81 pages already live, I isolated the validation per page rather than editing screens other people maintained. The alternative was faster and would have broken someone else’s work in production.

Flutter · Dart · FlutterFlow · Supabase · PostgreSQL · Whisper · RevenueCat

Jan 2024 Dec 2025

iOS Developer

Apple Developer Academy — PUC-Rio

A two-year program between Apple and LES/PUC-Rio, run on Challenge Based Learning in multidisciplinary teams of up to twelve, with designers and product managers in the room every day. Eight apps built, five published.

  • Led a squad of four on Hana, splitting the work by technical affinity and holding delivery inside the program’s cycles.
  • Chose the architecture per app rather than per habit: MVC on the one-cycle projects, MVVM once an app had state shared across screens and more than one person in the same file.
  • On Duckademy, a Latin American Design Awards finalist, wrote the algorithm that scores a player’s drawing against the reference using Fréchet distance over normalised curves, running on the device itself.
  • Ran user interviews and usability tests before writing code, and learned to defend a technical decision in product language when it changed what the cycle could ship.

Swift · SwiftUI · UIKit · CloudKit · Core ML · XCTest · TestFlight

Oct 2023 Jan 2024

Software Engineer

Instituto Carioca de Atividades

Process automation in Python, and internal tools built low-code on Bubble and FlutterFlow — the work that comes before an institute has a development team.

Python · Bubble · FlutterFlow

Jul 2022 Apr 2024

Commercial Manager & Designer

IN Junior — UFF

The junior enterprise of UFF’s computing course, entered as a trainee on HTML, CSS and WordPress and left running the commercial side — sales strategy, prospecting, negotiation and contracts. That meant estimating scope and deadline before signing, and then being the person the team came to when the two disagreed. In between, marketing and six months designing: the sites and apps the company sold, prototyped in Figma.

Figma · WordPress · HTML · CSS

Jul 2022 Mar 2023

IT Support Officer

E.C.O.S — Espaço Cidadania e Oportunidades Sociais

Software installation, machine setup and day-to-day technical support for a social organisation — the first job, and the one where the users were in the room with me.

Work done for companies. Most of it has nothing public to link to, and each entry says which part of it was mine.

About

Lucas Santhiago

I build native iOS apps. Most of what I ship starts as a problem someone described to me out loud, and ends in App Store review.

iOS is the focus. I also work across backend, APIs and the web when a project calls for it — this site is one of those.

Stack

PrimarySwiftSwiftUIUIKitObjective-CSpriteKitCloudKitCore DataSwiftDataMapKitPhotoKitStoreKitWeatherKitHealthKitXcodeSwift Package ManagerfastlaneAVFoundationiOS SDKXCTestSwiftLint
SecondaryTypeScriptReactNext.jsTailwind CSSHTMLCSSJavaScriptNode.jsPostgreSQLSupabaseFlutterDartGitSVNFigmaFirebasePythonREST APIs

Education

Jun 2021 — Jul 2028 (expected)

Computer Science, BSc

Universidade Federal Fluminense

PIUES — Computer Science

Pontifícia Universidade Católica do Rio de Janeiro
Dec 2019

High School Diploma

Colégio Pedro II
LanguagesPortuguese NativeEnglish Professional workingSpanish Limited workingFrench Elementary

The degree is in progress. The two years at the Apple Developer Academy are under Experience, where the five App Store apps came from.

Set in Uncut Sans and Commit Mono. Built to the iOS metrics: 8pt grid, 17px body, 44px targets, spring physics.

© 2026 Lucas Santhiago. All rights reserved.