Estudo de Caso

Saldo

2026 · App de Finanças iOS

Uma app de finanças pessoais para iOS, de utilizador único: transações, subscrições, orçamentos e objetivos de poupança manuais, com registo offline e conselhos de IA, a pedido, sobre se uma compra cabe mesmo no orçamento.

Saldo

O problema

As apps de orçamento ou querem ligar-se ao banco — o que significa entregar credenciais a terceiros só para acompanhar um café — ou são uma folha de cálculo, que ninguém mantém atualizada depois da segunda semana. Faltava algo pelo meio: registo manual rápido que respeita o ritual de acompanhar os próprios gastos, sem a fricção de uma ligação bancária nem a taxa de abandono de uma folha de cálculo.

A restrição mais difícil era pessoal: construir sozinho, inteiramente a partir de Windows sem Mac, visando um iPhone físico, sem equipa de backend separada nem infraestrutura extra para manter depois — tudo tinha de ser uma única unidade implantável.

Decisões-chave

01

Registo manual, não ligação bancária

Sem integração Open Banking, sem credenciais partilhadas, sem intermediário de dados terceiro. Cada transação, subscrição e orçamento é inserido à mão — mais lento por registo, mas a app não detém nada que não precise, e o modelo de dados mantém-se simples de ponta a ponta.

02

Um repositório, um deploy: Expo Router como backend inteiro

A API vive como route handlers `+api.ts` do Expo Router, exportada para a Vercel através do seu adaptador (não oficial, mas funcional). Não há servidor Express/Next.js separado — a app mobile e o seu backend saem do mesmo código, do mesmo commit.

03

Offline-first com sincronização otimista

Um espelho local em SQLite põe as transações em fila com um ID gerado no cliente; a interface atualiza-se de imediato independentemente da ligação, e um gestor de sincronização esvazia a fila ao reconectar, com deduplicação no servidor pelo mesmo ID — um pedido repetido nunca duplica o registo.

04

Tarefas em segundo plano desacopladas dos pedidos

Lembretes de renovação de subscrições, avisos de limite de orçamento e check-ins semanais de objetivos correm como funções Inngest — agendadas por cron ou disparadas por evento na criação de uma transação — para a lógica de notificações nunca bloquear nem depender do ciclo de pedido/resposta.

05

Conselho de IA como veredito estruturado, não um chatbot

A funcionalidade 'vale a pena comprar?' envia o saldo atual, subscrições próximas e gastos recentes ao Gemini com uma resposta limitada por schema JSON, e recebe um veredito, um raciocínio e um valor seguro para gastar — validado no servidor antes de chegar ao ecrã.

Tecnologias

Expo RouterTypeScriptNeon PostgresGemini API

Expo Router (SDK 57) e TypeScript para a app e as suas rotas de API, Clerk para autenticação só por Google, Neon Postgres com Drizzle ORM, Inngest para tarefas agendadas/orientadas a eventos, Google Gemini para o conselho a pedido, tudo na Vercel com Sentry para monitorização de erros.

O resultado

Uma v1 funcional a correr no meu próprio iPhone: transações, orçamentos por categoria com um limite mensal geral, objetivos de poupança, notificações push para renovações/limites/check-ins, e conselho de compra por IA a pedido — inserido offline tão facilmente como online. Um único código carrega o produto inteiro, do ecrã do telemóvel à linha no Postgres.

14
Categorias de despesa acompanhadas
03
Tarefas automáticas em segundo plano
100%
Registo de transações funciona offline
Projeto seguinteWebsite SCBorbense

Contacto

Vamos construir algo juntos.

Tens um projeto em mente ou queres só dizer olá? A minha caixa de entrada está sempre aberta — costumo responder no próprio dia.

Disponível para estágios & freelance