Documento de planejamento. Nenhum código foi alterado no app. Serve para você decidir com calma. Data: 25/06/2026
Hoje o Thayfinance é um app 100% no aparelho: React rodando no GitHub Pages, com os dados salvos no localStorage do navegador. Não existe servidor nenhum.
Para ter áudio com IA e comprovantes, o app precisa de uma peça nova: um backend (um "cérebro" na nuvem) que guarde os segredos e faça o trabalho pesado. O motivo é segurança (detalhado na seção 7), mas a regra é simples:
Chave de IA nunca pode ficar no código do site. O GitHub Pages é público; qualquer pessoa abre o "inspecionar" do navegador e veria a chave. Então a IA é chamada por um servidor, não pelo navegador.
A peça que escolhemos pra ser esse backend é o Supabase (a mesma base que você já usou no Premium Beef).
Seu celular/PC Nuvem (Supabase) IA
┌───────────────┐ token ┌──────────────────┐ chave ┌──────────┐
│ Thayfinance │ ───────────► │ Edge Function │ ──────►│ Whisper │ (áudio→texto)
│ (GitHub Pages)│ │ (mini-servidor) │ │ + Claude │ (texto→lançamento)
│ │ ◄─────────── │ │ ◄──────│ │
└───────────────┘ resposta │ Banco (Postgres) │ └──────────┘
│ Storage (arquivos)│
│ Login (Auth) │
└──────────────────┘
- Você aperta o microfone no app e fala: "gastei 87 e 40 no mercado ontem no cartão".
- O navegador grava o áudio (recurso nativo,
MediaRecorder— não instala nada). - O áudio sobe pro Supabase (autenticado pelo seu login).
- A Edge Function manda o áudio pro Whisper → vira texto.
- O texto vai pro Claude com a ordem: "transforme isso num lançamento em JSON".
- Resultado:
{ valor: 87,40, categoria: "Mercado", tipo: "despesa", data: "ontem", metodo: "cartão" }
- Resultado:
- O app recebe o JSON, mostra pra você revisar e, ao confirmar, grava o lançamento — na mesma estrutura que hoje você preenche no formulário.
A revisão antes de gravar é de propósito: a IA acerta quase sempre, mas você sempre dá o "ok" final. Nada entra sem você ver.
Esta é uma função principal do projeto (decidida em 27/06/2026): você manda a foto do comprovante pro robô no WhatsApp e ele faz o resto.
- Você tira a foto do comprovante (cupom, nota, recibo, Pix) e manda pro robô no WhatsApp — ou anexa no app.
- A imagem sobe pro Storage privado do Supabase (não fica pública na internet) e fica guardada pra você consultar quando quiser.
- O Claude (visão/OCR) lê o comprovante e extrai sozinho: valor, data, estabelecimento e categoria sugerida.
- O robô responde com o lançamento já montado pra você conferir e confirmar ("✅ R$ 87,40 — Mercado — 26/06 — confirma?"). Ao confirmar, grava o lançamento já vinculado ao comprovante.
- Depois, o comprovante fica acessível dentro do lançamento por um link temporário (expira em minutos) — ninguém de fora acessa.
Ou seja: uma foto só → a IA lê, lança e arquiva o comprovante. A pessoa só dá o "ok".
- Seu app continua no mesmo endereço:
thales-chagas.github.io/thayfinance/. Nada muda. - O Supabase te dá automaticamente e de graça um endereço de backend (algo como
xyzabc.supabase.co). Isso não é um domínio que se compra — é gerado sozinho quando você cria o projeto. O usuário nunca vê esse endereço; é só o app que conversa com ele. - Domínio próprio (ex:
thayfinance.com.br) é totalmente opcional e só pra estética. Se um dia você quiser, custa ~R$40/ano no registro.br. Não tem nada a ver com fazer a IA ou os comprovantes funcionarem.
Resumo: zero domínio novo necessário.
Essa é a pergunta mais importante e a resposta exige cuidado. Vou ser transparente sobre o que acontece:
- Cada aparelho guarda localmente: o login (nome + PIN com hash) na chave
financas_app_login, e os dados financeiros na chavefinancas_app_data. - Isso não some quando publicamos uma versão nova. Atualizar o site não apaga o
localStoragedo navegador. Os dados continuam lá.
- O login local de hoje (PIN) não é a mesma coisa que o login de nuvem (Auth do Supabase, com e-mail/senha). Ao migrar, a pessoa cria uma conta de verdade na nuvem.
- Sem um plano, alguém poderia criar a conta nova e achar o app "vazio", porque os dados antigos estão no
localStoragee os novos no banco da nuvem.
Quando a pessoa abrir a versão nova e fizer login na nuvem pela primeira vez, o app:
- Verifica se existe
localStorageantigo no aparelho. - Se existir e a conta na nuvem estiver vazia, pergunta: "Encontramos dados neste aparelho. Deseja enviá-los para sua conta?"
- Com o "sim", ele sobe tudo pro banco da nuvem.
- A partir daí os dados ficam na nuvem (e ainda continuam no aparelho como cópia, até você decidir limpar).
Conclusão: ninguém perde nada. O localStorage é preservado e vira a ponte da migração. E há ainda a rede de segurança da seção 4.
Boa notícia: o seu app já faz isso hoje.
- Exportar: o botão de backup gera um arquivo
thayfinance-AAAA-MM-DD.jsoncom tudo dentro. - Importar: o app lê esse arquivo de volta e restaura os dados (com uma confirmação antes de substituir).
No projeto novo isso continua funcionando e ganha um papel extra:
- Vira a sua rede de segurança antes da migração: você exporta o backup, e só então faz a atualização. Se qualquer coisa der errado, é só reimportar.
- O formato é o mesmo, então backups antigos continuam válidos.
Recomendação: antes de migrar, em cada aparelho, clique em "Exportar backup" e guarde o arquivo (você já guarda o meus-dados-thayfinance.json na Área de Trabalho). Migração com backup na mão = risco praticamente zero.
| Tecnologia | Papel | O que faz, em português |
|---|---|---|
| React + Vite (já tem) | Interface | É o seu app atual, a tela que a pessoa usa. Continua igual. |
| GitHub Pages (já tem) | Hospedagem do site | Onde o app fica publicado, de graça. Não muda. |
| Supabase | Backend (guarda-chuva) | A "nuvem" do app. Reúne as 4 peças abaixo num só lugar. |
| ↳ Supabase Auth | Login de verdade | Cada pessoa entra com e-mail/senha. É o que permite "eu + outras pessoas" com segurança. |
| ↳ Supabase Postgres | Banco de dados | Onde os lançamentos passam a morar (no lugar do localStorage). |
| ↳ Supabase Storage | Cofre de arquivos | Onde os comprovantes (foto/PDF) ficam guardados, de forma privada. |
| ↳ Edge Functions | Mini-servidor seguro | Pequenos programas que rodam na nuvem e seguram as chaves de IA. O navegador nunca toca nelas. |
| RLS (Row Level Security) | Tranca do banco | Regra do Postgres que garante: cada pessoa só lê/escreve os próprios dados. Obrigatório no seu caso. |
| Whisper (OpenAI) | Áudio → texto | Transcreve o que você falou. É o padrão do mercado, barato e preciso. |
| Claude (Haiku 4.5) | Texto/imagem → lançamento | Entende a frase e monta o lançamento; e lê comprovantes (visão) pra pré-preencher valor/data. |
Por que Whisper + Claude e não um só? Whisper é imbatível e baratíssimo pra transcrever áudio; Claude é excelente pra "entender" e pra ler imagem de comprovante. Dá pra consolidar num provedor só depois, se você quiser simplificar as chaves — anoto como ponto aberto.
Vou separar honestamente o que é grátis e o que pode custar.
- Plano Free: 500 MB de banco, 1 GB de comprovantes, 50.000 logins/mês, 500 mil execuções de função/mês. Para o seu uso, isso é muito mais do que o suficiente. → R$ 0
- Pegadinha do Free: se o projeto ficar 7 dias sem nenhum acesso, ele "dorme" e você precisa religar com um clique. Chato, mas de graça.
- Plano Pro: US$ 25/mês (~R$ 135) — só vale a pena quando tiver bastante gente usando, ou se quiser que nunca "durma". Você não precisa disso agora.
São valores minúsculos por lançamento:
- Transcrição (Whisper): ~US$ 0,006 por minuto de áudio. Um áudio de 10 segundos custa ~US$ 0,001 (um décimo de centavo).
- Entender o texto (Claude Haiku): cada lançamento usa pouquíssimo. Custa frações de centavo.
- Ler comprovante (Claude visão): também centavos por imagem.
Estimativa realista: se você lançar 100 áudios + 50 comprovantes por mês, o custo de IA fica em torno de US$ 0,30 a US$ 1,00/mês (~R$ 2 a R$ 6). É preciso colocar um cartão nos painéis da OpenAI e da Anthropic, mas dá pra definir um limite mensal (ex: "não passe de US$ 5") pra você nunca tomar susto.
- Nenhum custo (seção 2). Só se você quiser um domínio bonito: ~R$ 40/ano. Opcional.
| Item | Custo |
|---|---|
| Supabase (Free) | R$ 0 |
| IA por uso (uso pessoal) | ~R$ 2 a R$ 6/mês |
| Domínio | R$ 0 (opcional ~R$ 40/ano) |
| Total realista | alguns reais por mês, ou zero se usar pouco |
Como vai ter mais de uma pessoa usando, segurança não é opcional. Pontos que serão tratados desde o começo:
- RLS ligado desde o primeiro dia. No banco, toda linha carimba o dono (
user_id) e a regra é: você só vê o que é seu. (Foi exatamente um RLS faltando que causou o 401 do Premium Beef — aqui já nasce certo.) - Chaves de IA só no servidor. Ficam guardadas como "segredo" na Edge Function, nunca no app.
- Comprovantes privados. O cofre (Storage) é fechado; acesso só por link temporário que expira. Comprovante tem valor, CPF, estabelecimento — é dado sensível (LGPD).
- Validação do que a IA devolve. Antes de gravar, o servidor confere se o JSON faz sentido (a IA às vezes inventa campo). Lixo não entra no banco.
- Limite de abuso (rate limiting). Trava pra ninguém disparar mil chamadas e estourar sua conta de IA.
- Limite de upload. Só foto/PDF, com tamanho máximo, pra não subirem arquivo malicioso.
- Open Finance (conectar bancos automaticamente, como o Meu Assessor): exige ser regulado pelo Banco Central ou contratar um intermediário (Pluggy, Belvo, Klavi) — tem custo mensal e exige CNPJ/contrato. Adiado.
- Agenda, projetos, reuniões (outras funções do Meu Assessor): fora do foco do Thayfinance por enquanto.
- Provedor de IA: mantém Whisper (OpenAI) + Claude, ou consolida num provedor só pra ter uma chave só?
- Login: e-mail/senha basta, ou quer também "entrar com Google"?
- Migração: quer que o app migre o
localStorageautomático no primeiro login, ou prefere migrar via importação do backup JSON (mais manual, mais controlado)?
É totalmente possível, não precisa de domínio novo, ninguém perde dados (export/import já existe e vira a ponte), as tecnologias são Supabase + Whisper + Claude, e o custo é praticamente zero no começo (alguns reais/mês com uso real). Quando você quiser, eu entrego o schema, as funções e o passo a passo no PowerShell.