Usando o Cursor para o desafio de projeto Criando um APP de Organização de Finanças Pessoais
Desenvolver uma aplicação completa normalmente envolve muitas decisões: entender o problema, definir as funcionalidades, escolher as tecnologias, modelar o banco de dados, criar a API, desenvolver a interface e testar a integração entre todas essas partes.
No desafio de projeto da DIO, decidi experimentar uma abordagem diferente. Em vez de utilizar a inteligência artificial apenas para gerar pequenos trechos de código, usei o Cursor como um parceiro durante todo o processo de desenvolvimento.
O resultado foi o FinançaFácil, uma aplicação web de organização financeira que permite registrar receitas e despesas por meio de uma conversa simples.
A ideia do projeto
Muitas pessoas começam a controlar suas finanças, mas abandonam esse hábito depois de algum tempo. Um dos motivos é a quantidade de informações que normalmente precisam ser preenchidas para registrar uma simples despesa: valor, descrição, categoria, data, forma de pagamento e outras informações.
Pensando nesse problema, a ideia central do FinançaFácil foi simplificar o registro financeiro.
Em vez de preencher um formulário, o usuário pode escrever algo como:
“Gastei 45 reais no almoço hoje.”
A aplicação interpreta a mensagem, identifica o valor, a categoria, a descrição e a data. Em seguida, apresenta os dados encontrados e solicita uma confirmação antes de registrar a transação.
Além do chat financeiro, a aplicação possui autenticação, dashboard, gerenciamento de transações, metas financeiras, relatórios e geração de um plano de economia.
Começando por um prompt bem estruturado
Antes de pedir ao Cursor que criasse o projeto, procurei transformar a ideia em uma especificação detalhada.
O prompt utilizado descrevia:
- o problema que a aplicação deveria resolver;
- o público-alvo;
- as funcionalidades obrigatórias;
- as regras de negócio;
- a arquitetura esperada;
- as tecnologias que deveriam ser utilizadas;
- os critérios de aceite;
- os testes necessários;
- a documentação que deveria ser produzida.
Também determinei que o frontend fosse criado com React e TypeScript, dentro da pasta front, e que o backend fosse desenvolvido com PHP, dentro da pasta back. Para persistência dos dados, defini o uso do MySQL.
Essa etapa foi importante porque percebi que trabalhar com inteligência artificial não significa simplesmente escrever “crie um aplicativo”. Quanto mais claro for o contexto, melhores são as decisões tomadas durante a implementação.
O prompt funcionou como um contrato para o projeto.
Dividindo o trabalho entre subagentes
Como o projeto possuía várias áreas diferentes, organizei o desenvolvimento utilizando subagentes especializados.
As responsabilidades foram divididas entre agentes de:
- análise funcional;
- arquitetura;
- banco de dados;
- backend;
- frontend;
- experiência do usuário e acessibilidade;
- qualidade e segurança;
- documentação.
Essa divisão ajudou a transformar uma tarefa muito ampla em etapas menores e mais controláveis.
Um dos pontos mais importantes foi definir os contratos da API e a estrutura do banco antes de avançar com a implementação das telas. Dessa forma, frontend e backend puderam seguir uma referência comum, reduzindo inconsistências entre os dados enviados pela interface e os dados esperados pela API.
A documentação do projeto passou a funcionar como uma fonte de verdade, reunindo PRD, arquitetura, contratos da API, modelo do banco, tipos compartilhados e registros de validação.
A arquitetura escolhida
O FinançaFácil foi dividido em três partes principais:
- Uma aplicação frontend desenvolvida com React, TypeScript e Vite;
- Uma API REST desenvolvida com PHP e Slim Framework;
- Um banco de dados relacional MySQL.
O frontend funciona como uma SPA e se comunica exclusivamente com o backend por meio de requisições HTTP em formato JSON.
No backend, organizei o código em camadas:
- os controllers recebem as requisições;
- os services executam as regras de negócio;
- os repositories realizam o acesso ao banco;
- o PDO executa consultas preparadas no MySQL.
A autenticação utiliza JWT, e os dados financeiros são sempre filtrados pelo usuário autenticado. Isso impede que uma pessoa consulte ou altere transações pertencentes a outra conta.
Para valores monetários, foram utilizados campos DECIMAL, evitando os problemas de precisão que poderiam ocorrer com tipos como float.
O chat financeiro
A funcionalidade que considero mais interessante no projeto é o registro de transações por linguagem natural.
O usuário pode escrever frases como:
“Paguei 120 reais de internet ontem.”
“Recebi 3.500 de salário hoje.”
“Gastei 32,90 com Uber.”
O sistema analisa a frase e procura identificar:
- se é uma receita ou despesa;
- o valor;
- a descrição;
- a categoria;
- a data da movimentação.
Depois dessa análise, o chat apresenta os dados encontrados e solicita a confirmação do usuário. A transação nunca é registrada automaticamente.
Essa confirmação foi uma decisão importante, porque estamos trabalhando com informações financeiras. Mesmo que o parser interprete corretamente a maioria das frases, o usuário precisa ter a oportunidade de revisar e corrigir os dados.
Inteligência sem depender de uma API externa
Apesar de o projeto utilizar uma experiência semelhante à de um agente de inteligência artificial, o MVP não depende obrigatoriamente de um modelo de linguagem externo.
O parser foi criado utilizando:
- expressões regulares;
- palavras-chave;
- normalização de valores monetários;
- reconhecimento de datas relativas;
- regras de categorização.
Dessa forma, a aplicação consegue interpretar padrões comuns em português, incluindo valores como R$ 1.200,50, além de expressões como “hoje”, “ontem” e “semana passada”.
Essa abordagem trouxe duas vantagens para o MVP: o processamento não possui custo por requisição e as respostas são praticamente instantâneas.
Ao mesmo tempo, a arquitetura possui uma interface de provedor de NLP preparada para que, futuramente, o parser local possa ser substituído ou complementado por um modelo de linguagem.
Outras funcionalidades desenvolvidas
Além do chat, o FinançaFácil oferece um conjunto de recursos para que o usuário tenha uma visão mais clara da própria situação financeira.
No dashboard, é possível acompanhar saldo, receitas, despesas, evolução mensal, categorias com maiores gastos e transações recentes.
Na área de transações, o usuário pode pesquisar, filtrar, cadastrar, editar e excluir receitas e despesas.
Também foi criado um módulo de metas financeiras. Nele, o usuário pode definir um objetivo, o valor desejado, o prazo e registrar novos aportes. A aplicação calcula automaticamente o percentual já alcançado.
Os relatórios apresentam a distribuição das despesas por categoria e a evolução financeira ao longo dos meses.
Por fim, o sistema pode gerar um plano básico de economia utilizando a regra 50-30-20 como referência.
Validação e testes
Uma das minhas preocupações foi não considerar o projeto concluído apenas porque as telas estavam aparecendo corretamente.
Por isso, o processo também incluiu testes automatizados, lint, build e validação do banco de dados.
No backend, foram executados 60 testes com PHPUnit, incluindo testes relacionados ao parser, autenticação, valores monetários e integração com transações.
No frontend, foram executados 23 testes com Vitest e Testing Library, cobrindo pontos como validação do login, proteção de rotas, formatação dos dados e confirmação de transações pelo chat.
O build do frontend foi concluído sem erros de TypeScript, e a análise do ESLint também foi executada sem erros ou avisos. As migrations e os seeds foram validados utilizando MySQL 8.4 em um container Docker.
O que aprendi com o processo
O principal aprendizado deste projeto foi entender que o resultado produzido por uma inteligência artificial depende muito da qualidade das instruções fornecidas.
Quando o pedido é genérico, a resposta também tende a ser genérica. Quando existem contexto, critérios de aceite, regras de negócio e uma ordem clara de execução, a IA consegue atuar de maneira muito mais próxima de uma equipe de desenvolvimento.
Também percebi que Vibe Coding não significa aceitar tudo o que a IA produz.
Foi necessário orientar, limitar o escopo, definir padrões e exigir validações. A IA ajudou a acelerar a implementação, mas as decisões sobre o produto e sobre a arquitetura ainda precisaram de intenção e direção.
Outro aprendizado foi a importância da documentação. Ao registrar as decisões antes da implementação, ficou mais fácil manter o banco, o backend e o frontend alinhados.
Limitações e próximos passos
Como o projeto foi desenvolvido como um MVP, ainda existem algumas limitações.
O parser local funciona bem para frases mais diretas, mas pode ter dificuldades com mensagens muito ambíguas. A aplicação também não possui integração real com bancos, Open Finance ou serviços de pagamento.
Entre as possíveis evoluções estão:
- integração com um modelo de linguagem;
- importação automática de transações por Open Finance;
- exportação de relatórios em PDF ou CSV;
- criação de uma PWA com suporte offline;
- alertas de orçamento por categoria;
- recuperação de senha por e-mail;
- versão mobile nativa.
Conclusão
Criar o FinançaFácil foi uma experiência importante para entender, na prática, como utilizar inteligência artificial durante um projeto completo.
Mais do que gerar código, o desafio envolveu aprender a comunicar uma ideia, transformar um problema em requisitos e coordenar diferentes etapas do desenvolvimento.
O Cursor foi utilizado como parceiro de implementação, mas o resultado só foi possível porque existia uma direção clara: qual problema resolver, quais regras seguir e como validar a entrega.
Para mim, esse é o ponto mais interessante do Vibe Coding: a inteligência artificial pode acelerar muito o desenvolvimento, mas cabe ao desenvolvedor fornecer contexto, avaliar as decisões e garantir que o resultado realmente resolva o problema proposto.
O código-fonte e a documentação completa do FinançaFácil estão disponíveis no repositório público do projeto.
https://github.com/Renantx/app-financas-DIO



