JoĂŁo Oliveira
JoĂŁo Oliveira10/08/2026 20:34
Compartilhe

🚀 FinançasAI: do “funciona” ao beta — preparando um app financeiro para usuários reais

    Estou desenvolvendo o **FinançasAI**, um app de organização financeira pessoal, e nas Ășltimas semanas entrei em uma etapa que considero uma das mais importantes do projeto:

    **endurecer o sistema antes de colocar mais usuĂĄrios reais dentro dele.**

    No começo, é fåcil pensar:

    **usuário → ação → banco → sucesso**

    Na prĂĄtica, existem vĂĄrios caminhos intermediĂĄrios:

    - banco confirma;

    - banco retorna erro;

    - banco não confirma a alteração;

    - Storage falha;

    - signed URL falha;

    - usuårio repete a ação;

    - duas operaçÔes acontecem ao mesmo tempo.

    E foi justamente nesses caminhos que comecei a encontrar alguns dos problemas mais interessantes.

    ## đŸ–Œïž Um exemplo: avatar

    Um upload de foto parece simples:

    **upload → salvar URL → apagar foto antiga**

    Mas o que acontece se o upload funcionar e o banco não confirmar a atualização?

    Ou se o banco confirmar, mas a signed URL nĂŁo puder ser criada?

    Ou se a remoção da foto antiga falhar?

    A solução foi separar responsabilidades:

    **persistĂȘncia ≠ apresentação ≠ limpeza**

    Assim:

    - o avatar confirmado no banco nĂŁo Ă© removido por uma falha visual;

    - uma limpeza de Storage pode falhar sem quebrar o fluxo principal;

    - uma atualização não confirmada não gera falso sucesso;

    - falhas de signed URL podem cair para as iniciais;

    - operaçÔes potencialmente destrutivas usam estratégias **fail-safe**.

    ## đŸ§Ș E os testes?

    Outra mudança importante foi parar de testar apenas:

    > “deu certo?”

    e começar a testar:

    > “o que acontece quando dá errado?”

    A suíte jå estå próxima de **500 testes**, além de:

    - TypeScript;

    - lint;

    - build;

    - `git diff --check`;

    - testes comportamentais dos fluxos crĂ­ticos.

    O objetivo nĂŁo Ă© ter um nĂșmero bonito de testes.

    É conseguir responder:

    > **“Se essa operação falhar no meio, o estado do usuário continua seguro?”**

    ## 🔐 Outra coisa que aprendi

    Em algumas mutations, usar algo genérico como `Partial<Goal>` pode parecer conveniente.

    Mas quando uma operação deveria aceitar somente:

    `id`, `current_amount` e `completed`

    Ă© melhor deixar o contrato explĂ­cito.

    E nĂŁo confiar somente no TypeScript.

    A própria mutation também deve construir explicitamente o payload que serå enviado ao banco.

    Isso protege contra campos extras tanto **em compile time quanto em runtime**.

    ---

    Agora estou chegando em outra etapa do projeto:

    ## đŸ‘„ Colocar o FinançasAI nas mĂŁos de pessoas que nĂŁo sĂŁo eu

    Esse talvez seja o teste mais difícil até agora.

    Eu jå conheço:

    - onde clicar;

    - o que cada tela deveria fazer;

    - quais limitaçÔes existem;

    - quais comportamentos sĂŁo intencionais.

    Um usuĂĄrio novo nĂŁo conhece nada disso.

    EntĂŁo o prĂłximo objetivo nĂŁo Ă© simplesmente conseguir mais cadastros.

    É descobrir:

    > **“O que acontece quando alguĂ©m usa o produto sem conhecer a cabeça de quem o construiu?”**

    Estou procurando algumas pessoas para participar desse primeiro beta e dar feedback sincero — principalmente sobre:

    - coisas confusas;

    - bugs;

    - funcionalidades que nĂŁo fazem sentido;

    - dificuldades durante o primeiro uso;

    - pontos que poderiam ser mais simples.

    NĂŁo estou procurando apenas elogios.

    Na verdade, prefiro descobrir agora aquilo que pode incomodar um usuĂĄrio real.

    ## 🚀 Quer testar o FinançasAI?

    O beta estĂĄ disponĂ­vel:

    👉 **https://chat-financas-ease.vercel.app**

    Se vocĂȘ testar, quero muito saber:

    - o que ficou confuso;

    - o que vocĂȘ melhoraria;

    - se encontrou algum bug;

    - se o aplicativo realmente ajuda no controle financeiro;

    - e se vocĂȘ voltaria a utilizĂĄ-lo.

    Feedback sincero Ă© muito bem-vindo. 🙏

    Se vocĂȘ tambĂ©m estĂĄ construindo um projeto e jĂĄ passou pela fase de transformar **“funciona” em “estĂĄ pronto para usuĂĄrios reais”**, compartilha sua experiĂȘncia.

    #DIO #Desenvolvimento #React #TypeScript #Supabase #Testes #SoftwareEngineering #FinançasAI #OpenToWork

    Compartilhe
    ComentĂĄrios (0)