Estudo de caso

360Finance AI

SaaS financeiro em que autenticação, banco, pagamento e relatório de IA fecham o mesmo ciclo, fora do localhost.

Pagamentos em modo teste do Stripe. Ninguém é cobrado de verdade.

Produto
SaaSdashboard, transações e assinatura no mesmo app
Auth e pagamento
Clerk + Stripewebhook invoice.paid atualiza o plano na hora
Dados
Prisma + NeonPostgreSQL na nuvem, mutações em Server Actions
IA
Sem invençãoo relatório soma o que está no banco, não inventa lançamento

O que separa um CRUD de um produto

Quase sempre são os detalhes que só aparecem quando o projeto sai do localhost: autenticação, banco, pagamento, variável de ambiente e webhook de produção. Sem isso, a tela até funciona. O produto, não.

Anos na área contábil me ensinaram que número não pode divergir. O 360Finance AI nasceu para amarrar essas pontas: Next.js 14 (App Router) e TypeScript, PostgreSQL na Neon com Prisma, interface na Vercel, login no Clerk e plano Premium no Stripe.

Três decisões que eu defendo

Mutação fica no servidor, com contrato

Criar, editar e apagar passam por Server Actions, com validação estrita no Zod. O Decimal do Prisma não vaza para o client. Se o tipo não fecha, a transação não entra. É a mesma disciplina de um livro-razão: o lançamento só existe se a regra deixar.

O webhook é o contrato da assinatura

O plano Premium (R$ 19/mês, modo teste) libera transações ilimitadas e o relatório de IA. A parte difícil não é o botão do Stripe. É o invoice.paid atualizar o publicMetadata do Clerk para a tela de assinatura mudar na hora, sem refresh manual nem dado inventado no front.

IA não inventa lançamento

O relatório consome o banco, soma receitas, despesas e investimentos, e monta a análise em cima dos lançamentos reais do dashboard. Sem chave da OpenAI, o app mostra um markdown de exemplo. Com chave, o texto ainda parte do mesmo número que o usuário vê na tela.

O app que a pessoa usa no mês

Dashboard com saldo e categorias, tabela de transações com CRUD e o formulário que grava no Postgres.

Auth, pagamento e o que o plano libera

Login no Clerk, checkout no Stripe, metadata de volta no usuário. A UI de assinatura e o botão de IA seguem esse estado, não um flag no front.

O relatório parte do banco

Com o plano ativo, a IA lê receitas, despesas e categorias do mês e devolve um texto conferível contra o dashboard.

O que isso prova para quem contrata

Não é uma tela estática. É um ciclo fechado: login, dado persistido, pagamento, permissão e um texto de IA que dá para auditar. Os problemas pouco glamorosos (Decimal no client, .env, webhook de produção) estão resolvidos o suficiente para o produto subir na Vercel e o repositório ficar aberto para review.