Fluxa
Projetos

Produto · Fluxa Labs

Controle financeiro pessoal, do jeito certo.

Papel
Produto próprio · design, backend e frontend
Formato
Web app + PWA
Status
Em desenvolvimento ativo, código aberto
Contexto
Fluxa Labs

Aberto

código no GitHub

SSE

tempo real

JWT

multiusuário isolado

Contexto

O problema e a resposta

A maioria dos apps de finanças trata saldo como um número guardado e parcelamento como uma linha só — e é aí que as contas param de bater. O Kofre nasceu da decisão de modelar isso do jeito certo desde o início.

Saldo é sempre a soma das transações (livro-razão). Uma compra em 10x vira 10 lançamentos, um por mês, e o centavo que sobra da divisão vai para a primeira parcela. Transferência é um par de lançamentos que nascem juntos ou nenhum. Fatura de cartão segue a regra de fechamento e vencimento.

É também o laboratório da Fluxa: autenticação JWT multiusuário, tempo real com Server-Sent Events, PWA instalável e conformidade com a LGPD — tudo em desenvolvimento aberto.

O que faz

Módulos e funcionalidades

01

Contas e lançamentos

Saldo calculado como livro-razão — nunca um campo que desalinha.

02

Parcelamentos

N lançamentos, um por mês, sem perder um centavo na divisão.

03

Faturas de cartão

Regra de fechamento e vencimento; pagamento parcial ou total.

04

Recorrentes

Lançamentos recorrentes gerados por um processo diário idempotente.

05

Tempo real

Todas as telas atualizam sozinhas via Server-Sent Events.

06

Conta e privacidade

Perfil, troca de senha e exclusão de conta (LGPD).

07

PWA

Instalável no celular, com categorias padrão no primeiro acesso.

Destaques de engenharia

Decisões que fazem diferença

  1. 01

    O centavo que não some

    R$ 100 em 3x = 33,34 + 33,33 + 33,33. Dividir e arredondar três vezes perderia um centavo; o resto da divisão inteira vai para a primeira parcela.

  2. 02

    Identidade que se prova, não se declara

    O userId saiu dos DTOs: a identidade vem do token JWT. Conta alheia responde 404, não 403 — não confirma nem a existência.

  3. 03

    Tempo real sem polling

    Cada tela mantém uma conexão SSE aberta; o serviço publica uma mudança a cada lançamento e todas as telas recarregam sozinhas.

  4. 04

    API que sabe recusar

    Bean Validation e testes dos casos de erro: 409 para id duplicado, 400 para nome vazio ou dia 45. API boa se mede pelo que ela recusa.

Stack

Backend

JavaSpring BootPostgreSQLDocker

Frontend

ReactTypeScriptVitePWA

Segurança

JWTBCryptLGPD

Quer algo assim?

Me conte o processo que hoje depende de planilha, papel ou boa vontade.

Próximo projeto

CCTV Control Panel

Plataforma corporativa · Segurança patrimonial