Andre Oleari

I build mobile apps,

but the interesting part is behind the screen.

Open to work

Andre
Oleari

Mobile Software Engineer
Cork, Ireland

I work mostly with React Native and Expo. What I enjoy is the whole path of an app: taking an idea that's still rough, building it, putting it in people's hands and improving it based on what happens next.

03
My own apps, on both stores
30+
Apps I worked on at Pixel Logic Apps
2019
The year I started with React Native

01 / 0403 apps · 14 problems solved

Projects

Three apps I built on my own and still maintain, all on the App Store and Google Play. Each one started with something I saw up close: waiting at a bus stop, volleyball tournaments run on paper, guest check-in at a real event.

01 / 03

Bus Times

Live bus, Luas and rail times for Ireland

2026 · Expo · React Native · TypeScript · Cloudflare Workers · R2 · SwiftUI · WidgetKit · GitHub Actions

About a week after moving to Ireland, I noticed something that kept bothering me: there was already a public transport app, but I still found myself at the stop wondering if the bus was actually coming. So I built my own. It lists the departures from the stops around you, keeps live times apart from scheduled ones and puts the vehicles on a map, using official TFI data.

Three screens of Bus Times cycling inside a phone: a stop's departures, the home screen widgets and the live map: Departures

Departures

Three screens of Bus Times cycling inside a phone: a stop's departures, the home screen widgets and the live map: Widgets

Widgets

Three screens of Bus Times cycling inside a phone: a stop's departures, the home screen widgets and the live map: Map

Map

The Apple Watch app, showing the next departures from a saved stop
  1. §01

    Turning a 250 MB feed into something a phone can use

    The national GTFS feed is a 250 MB file, far too big to send to a phone. A Node script splits it into about 10,200 small JSON files, one per stop, stored in Cloudflare R2. A Worker serves them, checks GTFS-Realtime on a cron and takes care of caching, kill switches and per-IP limits.

  2. §02

    The 503 errors in Cork

    While testing in Cork, 26% to 33% of departure requests came back as 503 and the app showed “Couldn't reach server”. It turned out to be CPU: a batch of twenty stops made the Worker parse 3.8 MB of JSON on a cold start, past its 10 ms limit. I split the batch into chunks of eight, each with its own budget, and the errors went to zero.

  3. §03

    Live times for 4.3% of departures

    At first only 4.3% of departures showed a live time, even though the official feed was working. The Irish feed only reports a delay at some stops of each trip, so I carry that delay forward along the rest of the trip on the server. Live coverage went to 67.9% of departures, with no extra cost per user.

  4. §04

    Keeping the widget right while the app is closed

    iOS decides when a widget refreshes, so polling isn't an option. A scheduled time never changes, only the delay does. The app gives the widget a timeline of 12 entries covering the next hour, each counting down from the absolute due time, and the minutes stay right with the app closed.

  5. §05

    An Apple Watch app in SwiftUI

    The watch app is native SwiftUI and never calls the backend. It shows the departures the phone already fetched, sent over WatchConnectivity. Complications can only be updated about fifty times a day, which is why the phone only sends something when the data has actually changed.

  6. §06

    Live times breaking without an error

    Every so often the national feed changes its trip IDs, and when that happened live times stopped matching the schedule without any warning. Now a GitHub Actions workflow runs twice a week, compares a hash of trips.txt and rebuilds the data only when it changed. A Worker cron couldn't do it: parsing 250 MB takes far more than the 128 MB of memory a Worker gets.

02 / 03

Scoreboard

Scoreboard and tournament manager for amateur sport

2025 to 2026 · Expo · React Native · TypeScript · Firebase Remote Config · RevenueCat · expo-print

Scoreboard came from years of seeing volleyball tournaments run with a mix of apps, and sometimes on paper. Apps for keeping score were everywhere. The hard part was running the tournament itself, with groups, standings and knockouts. So it started as a scoreboard and grew into a tournament manager that works fully offline.

Three screens of Scoreboard inside a phone: tournament setup, the group matches and the standings: Setup

Setup

Three screens of Scoreboard inside a phone: tournament setup, the group matches and the standings: Matches

Matches

Three screens of Scoreboard inside a phone: tournament setup, the group matches and the standings: Standings

Standings

  1. §07

    Each sport's rules kept as data

    Volleyball, futsal and basketball don't score or break ties the same way. Instead of a branch per sport, the rules live in a table that Remote Config can override, so I can fix a rule without a new build. Later I pulled the engine out into an open source TypeScript library with no dependencies and 100 tests.

  2. §08

    What happens when the clock runs out

    When time is up, several questions come at once: was that the last period, is it a draw, does this sport go to extra time, then penalties, then sudden death? A single timer loop answers them in order, and extra time and the shootout each keep their own state next to the match.

  3. §09

    Everything stays on the phone

    There's no server for match data. Everything is saved with AsyncStorage on the device, so the app works in a sports hall with no signal. Some saved matches ended up marked as tournament games without a tournament ID, and instead of crashing, the app now opens them as casual matches.

  4. §10

    Trials and cancellations

    If you cancel during the free trial, premium ends right away. If you paid and then cancelled, you keep it until the end of the period you paid for. And if Remote Config doesn't load, purchases stay enabled, so a missing flag can never hide the paywall by accident.

03 / 03

Lista Virtual

Guest list, RSVP and check-in for events

2025 to 2026 · Expo · React Native · TypeScript · Firebase · Cloud Functions · Firestore · RevenueCat

Lista Virtual came from seeing how messy guest check-in can get at a real event, usually with a printed list at the door. It imports the guest list, sends RSVP invitations and handles check-in, even with no signal. Organisers have created more than 4,000 events with it, and more than 13,000 guests have been checked in.

Three screens of Lista Virtual cycling inside a phone: the guest list, check-in in progress and the app with no connection: List

List

Three screens of Lista Virtual cycling inside a phone: the guest list, check-in in progress and the app with no connection: Check-in

Check-in

Three screens of Lista Virtual cycling inside a phone: the guest list, check-in in progress and the app with no connection: No signal

No signal

  1. §11

    Check-in that works with no signal

    A lot of venues have weak or no signal, and that's exactly where check-in happens. Each guest's QR code carries a short payload with the event and the guest, and the scanner looks it up in the list that's already on the phone, without going over the network.

  2. §12

    Three ways to use the same app

    You can use it without an account, with everything on the phone, or sign in and sync your lists in real time through Firestore. Whoever works the door gets a receptionist mode that logs in with an access code and never touches the owner's account. If someone creates an account later, their local data is uploaded in batches.

  3. §13

    Reports for the organiser's client

    After the event, organisers usually need to show their own client who came. The app builds PDF and Excel reports on the device, with the organiser's logo if they want it, and the logo stays on the phone instead of being uploaded.

  4. §14

    Invitation links that can't be reused

    Invitations go out over WhatsApp, and WhatsApp messages get forwarded. Each RSVP link carries a single-use token issued by a Cloud Function, with rate limiting and an audit log, so a forwarded copy stops working once the guest has answered.

02 / 04

Experience

My first jobs were in an accounting office and in IT support in Pará, Brazil. Development became my full-time job at the end of 2024.

  1. Oleari Technologies

    Independent Mobile Developer

    I build and run my own mobile apps, and take on freelance React Native work.

    Jun 2026 to present
    Remote

  2. Pixel Logic Apps

    Software Engineer, React Native and Expo

    I worked across more than 30 mobile products, often from an early idea all the way to release. Over time the job grew beyond writing code, into owning delivery, making technical decisions and keeping apps running well in production.

    • Built the new version of Bobbie Goods: Coloring Book from the first commit to the App Store in 18 days, with six monetisation features tested through four A/B experiments.
    • Took Vale Gás / Auxílio Meu Social from the first commit to Google Play in three days. It passed 500,000 downloads, turning complicated public-benefit information into something simple to use on a phone.
    • Every new app repeated the same setup and integrations, so they went into a shared Expo toolkit. I helped shape it and chased the bugs that only showed up once it ran across the whole catalogue, and new apps became faster and more consistent to start.
    • Automated store releases with Fastlane across 18 apps. Sending a build to the stores went from most of a working day to about a minute.
    • Led a small team of two developers, helping unblock decisions and keep delivery moving while staying hands-on with the apps.

    Other apps I worked onWe Are Not Really Strangers · Versículo do Dia · Loterias · Omnia Model · Glassify Widgets

    Nov 2024 to Jun 2026
    Remote

  3. Starta Solutions

    Software Engineer

    I worked with a full-stack team on a mobile product that had to stay useful with limited connectivity.

    • Built the authentication and data sync flows in React Native, designed to keep working on unreliable networks, against REST APIs on Node.js and MySQL.
    • It was my first time on a real product with other developers, instead of only my own projects.

    Nov 2022 to Jan 2023
    Freelance, remote

Before development full time

  1. Carajás Ambientes Planejados · IT Specialist

    Looked after file access, sync and backups on OneDrive and SharePoint, and supported users, devices and network access.

    May 2024 to Nov 2024
    Remote

  2. Tecsil · IT Specialist

    Networks, devices, internal systems and remote support, dealing with the technical problem and with the person affected by it at the same time.

    May 2023 to Aug 2023
    On-site, Paragominas

  3. Tecsil · IT Specialist

    One of my first jobs in tech: network, equipment and access problems, solved directly with the people who depended on them.

    May 2022 to Nov 2022
    On-site, Paragominas

  4. Contabilidade Destro e Destro · Trainee

    My first job. I entered, cross-checked and reconciled financial data in Fortes Contábil, and learned how much it matters that the data is right.

    Jun 2021 to Apr 2022
    Paragominas

03 / 04

About

How I got here

I started programming in 2019 at IFPA, in Brazil, when a professor introduced me to React Native through a course that still taught class components. I struggled quite a bit at first, so most of what I learned came from building things on my own: searching, testing and fixing problems as they came up.

Over time those projects stopped being exercises and became real apps, and the work grew with them: Firebase, APIs, payments, App Store and Google Play releases, CI/CD, OTA updates. Today I live in Cork, and what keeps me going is still what got me started: understanding how things work, and building them.

Education

Technologist in Systems Analysis and Development
Instituto Federal do Pará (IFPA)
2022 to 2024
Technical High School in IT
Instituto Federal do Pará, Campus Paragominas
2019 to 2022

What I work with

Mobile
React Native · Expo · TypeScript · SwiftUI · WidgetKit · WatchConnectivity · AsyncStorage
Backend and data
Node.js · Cloudflare Workers · R2 · Firebase · Cloud Functions · Firestore
Releases and payments
EAS Build · GitHub Actions · RevenueCat · Remote Config

04 / 04

Get in touch

I'm looking for mobile engineer, React Native or software engineer roles, in Ireland or remote.

Email is the quickest way to reach me, but LinkedIn works too.

LinkedIn
andreoleari