Criei meu splitwise para chamar de meu
Boa noite, devs.
Quero compartilhar um pouco do que aprendi nos últimos meses usando IA. Mesmo tendo pouca experiência em desenvolvimento, consegui ser o engenheiro por trás de um pequeno projeto inspirado no Splitwise, um aplicativo que eu usava bastante para dividir carona com amigos do trabalho.
Para mim, a ideia de divisão inteligente sempre pareceu algo de outro mundo. Quando comecei esse projeto pensei logo nisso como ponto de partida: criar um algoritmo que fizesse o mínimo possível de transferências entre as pessoas.
A primeira sugestão do Copilot foi pensar da seguinte forma: se você paga algo de 10 reais para três pessoas, cada uma deveria pagar 3,33. Isso significa que você emprestou 6,67 no total. Se outra pessoa paga 20 reais para o grupo, ela passa a ser quem mais emprestou dinheiro. A ideia então é gerar uma lista ordenada de quem mais emprestou para quem mais deve. Na hora de acertar as contas, quem deve mais paga para quem emprestou mais, e assim sucessivamente até o grupo zerar os débitos.
Adorei essa abordagem porque o ponto principal já começou funcionando.
Primeiro criei um app em Vue usando apenas LocalStorage para registrar os lançamentos. Porém esses grupos quase nunca têm apenas uma pessoa lançando despesas, então surgiu a necessidade de ter algo na nuvem para receber e sincronizar as informações.
Usei o PocketBase, que venho utilizando como plataforma para várias ideias. Cada grupo criado gera um UUID v4 que é salvo no banco de dados, criando um link único para compartilhar com os membros. A partir desse UUID toda a aplicação funciona como um modelo de multi tenancy, onde cada grupo acessa e manipula apenas seus próprios dados.
Qualquer pessoa com o link pode acessar o grupo e lançar despesas.
Nesse ponto apareceram alguns problemas interessantes, como race conditions e qual atualização deveria prevalecer. A solução inicial foi considerar sempre o timestamp mais recente.
Depois apareceu outro caso: se um usuário deletasse um lançamento e outro usuário que ainda tinha esse registro local tentasse sincronizar, o lançamento poderia acabar sendo inserido novamente, já que o id não existia mais no banco.
Foi aí que entendi melhor o conceito de soft delete. Um lançamento sempre existiu, apenas mudou de estado. Então cada lançamento passou a ter um estado atual em vez de simplesmente desaparecer.
Com isso acabei criando o projeto que chamei de Passa a Régua:
https://www.ehtudo.app/passaregua.html
Durante esse processo também aprendi bastante sobre subir software em produção. Usei Easypanel e Docker para publicar toda essa stack.
Gostaria muito de ouvir a opinião de desenvolvedores mais experientes. Alguém que desenvolve a aplicação, faz deploy e também usa IA como ferramenta no processo estaria em qual nível hoje no mercado? Pergunto porque não tenho muito contato com outros desenvolvedores no dia a dia, já que trabalho em uma empresa que não tem equipe de desenvolvimento para trocar ideias.
Agradeço a galera do TabNews por qualquer feedback.
repositório do codigo
https://github.com/ehtudoapp/passaregua