Artigo

TinyDebt: um controle de dívidas simples e sem backend

Uma análise das decisões técnicas do TinyDebt: armazenamento local-first, sem backend e uma interface tranquila que não atrapalha.

TinyDebt: um controle de dívidas simples e sem backend

Nas últimas semanas, desenvolvi o TinyDebt, um app pequeno para acompanhar dívidas, empréstimos e pagamentos. Quero compartilhar algumas decisões técnicas por trás dele, caso sejam úteis para quem cria apps pequenos e focados.

🧩 Por que criei o app

Eu vivia esquecendo pequenas dívidas entre amigos, e os apps existentes pareciam pesados: cadastro, anúncios por toda parte e recursos financeiros complexos.

Eu queria algo que:

  • abrisse instantaneamente
  • permitisse adicionar uma dívida em 3–5 segundos
  • funcionasse offline
  • continuasse simples para sempre

Assim nasceu o TinyDebt.

⚙️ Tecnologias

O TinyDebt foi feito para ser leve:

  • React Native (Expo) para dispositivos móveis
  • Abordagem local-first com AsyncStorage
  • Sem backend: os dados ficam no dispositivo (Firebase apenas para backups)
  • TypeScript em todo o projeto
  • Interface mínima com componentes próprios em vez de bibliotecas de UI
  • Distribuição na App Store e no Google Play via EAS Build

Sem contas de usuário, sem analytics e sem dependências externas além do essencial.

🗂️ Modelo de dados

Cada registro de dívida tem esta estrutura:

type Debt = {
  id: string;
  name: string;
  amount: number;
  type: "owed" | "borrowed";
  createdAt: number;
  history: Repayment[];
};

type Repayment = {
  amount: number;
  date: number;
};

Manter tudo serializável facilita o armazenamento e as migrações.

🧠 Experiência local-first

O TinyDebt não depende de um servidor, então:

  • as ações são aplicadas instantaneamente
  • não há estados de carregamento ou sincronização
  • o app continua rápido até em celulares antigos

Isso funciona perfeitamente para um pequeno utilitário pessoal.

🎨 Filosofia da interface

Eu queria que o app transmitisse calma:

  • cores neutras e simples
  • sem gráficos ou painéis
  • sem excesso de elementos: uma tela faz 90% do trabalho
  • áreas de toque acessíveis para inserir dados rapidamente

Apps pequenos não precisam de visuais complexos para serem úteis.

📦 Publicação

Ainda quero manter o escopo pequeno — esse é justamente o objetivo.

🙌 Comentários são bem-vindos

Se você desenvolve apps móveis ou tem ideias sobre utilitários local-first, adoraria receber seu feedback. O app está sempre melhorando.