Andre Oleari
Aberto a propostas

Engenheiro de Software — MobileCork, Irlanda

Levo apps mobile do início ao ar.

React Native e Expo, mas raramente só isso. Meu último projeto precisou de pipeline de dados, backend serverless, widgets de iOS e um app nativo de Apple Watch — então construí também. Três apps meus estão publicados na App Store.

03
Apps publicados na minha própria conta
11
Idiomas em um único app
2022
Construindo mobile desde
01

Projetos selecionados

Três apps que projetei, construí e publiquei na minha própria conta de desenvolvedor.

Cada um resolve um problema técnico diferente — é por isso que são esses três.

  • Paradas próximas com horários de partida ao vivo
  • Mapa com paradas e veículos em tempo real
  • Widgets na tela de início com as próximas partidas
012026

Bus Times: Dublin & Ireland

Horários de transporte público da Irlanda em tempo real

Um companheiro não-oficial para ônibus, tram e trem na Irlanda. Ele responde a uma única pergunta — corro ou dá tempo? — e precisa acertar, então separa com clareza o que é tempo real do que é horário programado.

  • Expo
  • React Native
  • TypeScript
  • Cloudflare Workers
  • R2
  • SwiftUI
  • WidgetKit
  • GitHub Actions
  • A pilha inteira, não só o app

    Um pipeline em Node transforma o feed GTFS nacional de 250 MB em cerca de 10.200 arquivos JSON por parada no Cloudflare R2. Um Worker serve esses dados, consulta o feed GTFS-Realtime por cron e mantém caches LRU, kill switches e limite de requisições por IP.

  • 26–33% de erro 503, medido e resolvido

    Requisições em lote para ~20 paradas de Cork estouravam o limite de 10 ms de CPU do Worker em isolate frio. Dividir em blocos de oito deu a cada um seu próprio orçamento, e o Promise.allSettled fez um bloco com falha custar oito paradas em vez da lista toda. A taxa de falha foi a zero.

  • Um widget que se atualiza com o app fechado

    Horário programado é determinístico — só o atraso ao vivo varia. Então, em vez de tentar acordar o widget, ele empurra uma timeline de 12 entradas cobrindo uma hora e deixa o iOS percorrer, cada entrada recalculando a partir do horário absoluto.

  • App nativo de Apple Watch em SwiftUI

    O relógio espelha por WatchConnectivity o dado que o telefone já buscou, então não custa nada a mais no backend. Os payloads são deduplicados antes do envio porque a cota da complication é de cerca de cinquenta transferências por dia.

  • CI que se conserta sozinho

    O feed nacional rotaciona os IDs de viagem periodicamente, o que quebrava o tempo real em silêncio. Um workflow agendado tira o fingerprint do trips.txt e só reconstrói quando ele realmente muda.

  • Placar em modo paisagem durante uma partida
  • Criação de torneio com esporte, formato e tempo
  • Tabela de classificação gerada automaticamente
022025—2026

Scoreboard – Tournament Track

Placar, chaveamento e gestão de torneios

Um placar digital para esporte amador que virou gerenciador de torneios. Celular deitado na mesa em paisagem, números grandes e legíveis — e, por trás disso, um motor de competição completo.

  • Expo
  • React Native
  • TypeScript
  • Firebase Remote Config
  • RevenueCat
  • expo-print
  • Motor de torneio orientado a dados, não a condicionais

    Fase de grupos, pontos corridos e mata-mata, com classificação e critérios de desempate definidos por esporte como dado. Essas regras podem ser sobrescritas via Firebase Remote Config, então mudar uma regra de pontuação não exige publicar uma versão nova. Depois extraí o núcleo para uma biblioteca TypeScript independente, sem dependências e coberta por 100 testes.

  • Uma máquina de estados que precisa aguentar os casos raros

    Um único loop de timer resolve a cascata: acabou o período, é o último, deu empate, tem prorrogação, tem pênaltis, é morte súbita. Prorrogação e disputa carregam estado paralelo próprio.

  • Offline-first com armazenamento que se autocorrige

    Tudo vive no AsyncStorage — não há backend de dados. Ao carregar uma partida salva, ela é validada: se diz pertencer a um torneio mas está sem o ID, é rebaixada para partida casual em vez de quebrar.

  • Lógica de assinatura que respeita o usuário

    Assinatura mais duas compras avulsas. Um teste cancelado perde o acesso na hora, mas quem pagou e depois cancelou mantém até o período realmente terminar. O gate é fail-closed, então uma flag de config ausente nunca esconde o paywall.

  • Lista de convidados com contadores de presença
  • Check-in ao vivo marcando convidados presentes
  • Gestão da equipe de recepcionistas
032024—2026

Lista Virtual — Guest List

Lista de convidados, RSVP e check-in ao vivo para eventos

Organizador de evento ainda controla a portaria com planilha impressa. Este app substitui isso: importa a lista, dispara convites com RSVP e deixa recepcionistas fazerem check-in na porta — inclusive quando o salão não tem sinal.

  • Expo
  • React Native
  • TypeScript
  • Firebase
  • Cloud Functions
  • Firestore
  • RevenueCat
  • Check-in por QR que funciona sem conexão

    Um payload compacto e próprio codifica evento e convidado, e o leitor resolve contra a lista que já está em memória. Sem ida e volta de rede, que é justamente o ponto num salão sem cobertura.

  • Três modos de sessão, uma base de código

    Local sem conta nenhuma, autenticado com sincronização em tempo real no Firestore, e um modo recepcionista que entra por código de acesso e nunca toca na conta do dono. Criar conta migra o dado local para a nuvem em escritas em lote.

  • Relatórios que o cliente pode entregar

    Exportação em PDF e Excel gerada no próprio aparelho, com marca do cliente opcional para o organizador usar com o cliente dele. A logo fica local por decisão de projeto e nunca sai do telefone.

  • Convites com token de uso único

    Cloud Functions emitem tokens de RSVP opacos e de uso único, com limite de taxa e trilha de auditoria, para que um link de convite repassado não possa ser reutilizado.

02

Experiência

De suporte de TI no Brasil a publicar produtos mobile desde a Irlanda.

  1. Engenheiro de Software — Mobile · Pixel Logic Apps

    Nov 2024 — Jul 2026 / Remoto

    • Publiquei apps multiplataforma em React Native, Expo e TypeScript sobre uma arquitetura compartilhada, do primeiro commit até a publicação na App Store e no Google Play.
    • Contribuí com mais de trinta apps do catálogo do estúdio, sendo o desenvolvedor principal em mais de uma dúzia deles.
    • Trabalhei com integrações Firebase, fluxos REST, sincronização em tempo real, veiculação de anúncios e cobrança de assinatura com RevenueCat.
    • Ajudei a moldar a biblioteca Expo compartilhada do estúdio — propondo funcionalidades e diagnosticando bugs que só apareciam ao rodá-la no catálogo inteiro.
    • Localizei apps e suas fichas de loja em até onze idiomas.

    Apps em que trabalhei lá

    • Bobbie Goodsapp de colorir feito com Skia
    • We Are Not Really Strangersjogo de cartas de conversa
    • Versículo do Diaversículo diário com notificações agendadas
    • Loteriasresultados das loterias a partir de dados públicos
    • Omnia Modelgeração de vídeo com IA
    • Glassify Widgetswidgets de tela de início no iOS
  2. Engenheiro Mobile · Autônomo

    Jan 2022 — Atual / Brasil / Remoto

    • Projetei, construí e publiquei apps próprios nas áreas de gestão de eventos, esporte, dados públicos e transporte público.
    • Construí os backends leves de que eles precisavam — Node.js, PHP e Firebase Cloud Functions contra Firestore e APIs de terceiros.
  3. Desenvolvedor de Aplicações Mobile · Starta Solutions

    Nov 2022 — Jan 2023 / Brasil

    • Construí módulos de autenticação e sincronização de dados offline-first em React Native, consumindo APIs REST com Node.js e integração MySQL.

Antes de migrar para desenvolvimento em tempo integral, passei dois anos em suporte de TI no Brasil — redes corporativas, estações de trabalho, permissões e atendimento remoto na Carajás Ambientes Planejados e na Tecsil. Foi onde aprendi a depurar algo que não fui eu que construí.

03

Sobre

Versão curta

Sou engenheiro de software mobile e moro em Cork. Trabalho principalmente com React Native e Expo, e gosto justamente das partes que ficam de cada lado do app — de onde vem o dado e como ele chega à loja.

Isso costuma aparecer no que eu construo. O Bus Times precisou de um pipeline GTFS e de um Cloudflare Worker antes de precisar de uma tela. O Scoreboard precisou de um motor de torneio antes de precisar de um placar. Prefiro entender o problema direito a sair procurando biblioteca.

Leio e escrevo código em inglês e português, e já publiquei apps localizados em até onze idiomas.

Ferramentas que uso

Mobile

  • React Native
  • Expo
  • expo-router
  • TypeScript
  • SwiftUI
  • WidgetKit

Backend e dados

  • Cloudflare Workers
  • R2
  • Firebase
  • Firestore
  • Cloud Functions
  • Node.js
  • REST

Release e operação

  • EAS Build
  • Fastlane
  • GitHub Actions
  • RevenueCat
  • AdMob
  • Remote Config
04

Falar comigo

Aberto a vagas de engenharia mobile na Irlanda e remotas.

O jeito mais rápido de me achar é por email. Eu leio tudo, e respondo.

Me mandar um email
LinkedIn
andre-oleari