Recurra
Em desenvolvimentoProjeto pessoal — andaime de cobrança recorrente para negócios de serviços locais. Construído como desculpa para aprender Nx, AWS CDK e a camada chata de billing ponta a ponta.
O que faz
Recurra é uma plataforma de cobrança recorrente para negócios de serviços locais — repeat business, on repeat. O dono gerencia serviços, agenda e clientes a partir de um dashboard React ou um app mobile Expo. O cliente faz self-serve de assinaturas a partir de um portal hospedado. Stripe cuida das cobranças. Uma integração Clover POS escrita em Kotlin permite checkout presencial puxando a assinatura ativa do cliente.
Por que construí
Percebi que infraestrutura de cobrança por assinatura para negócios de serviços locais (clínicas, salões, banho-e-tosa, aulas) é consistentemente ruim — ou enxertada num SaaS horizontal que não entende o workflow, ou construída num POS vertical que não te deixa mudar preço sem ligar pro suporte. Recurra é a versão que um dono de negócio de serviço realmente escolheria.
Como funciona
Monorepo Nx com NPM workspaces. Seis apps:
backend— NestJS com Prisma contra PostgreSQL no RDS, deployado para App Runner.web— SPA React Router 7 em build/client/, hospedada em S3 + CloudFront.mobile— Expo.clover-pos— Android Kotlin para Clover Mini.infra— AWS CDK com seis stacks: Network, Dns, Database, Backend, Web, Email.backend-e2e— testes e2e Jest.
Tipos compartilhados e schemas Zod vivem em @recurra/shared e são importados por todo app. Os stacks CDK usam SSM Parameter Store para segredos e um entrypoint script que monta a URL do banco a partir do JSON do Secrets Manager.
Status
Em desenvolvimento ativo. Backend, admin web e infra estão de pé; o app Clover POS e o app mobile do dono são os próximos.
Perguntas
O que é o Recurra?
Recurra é uma plataforma de cobrança recorrente para negócios de serviços locais — o tagline é 'repeat business, on repeat'. Lida com agendamentos recorrentes, cobranças automáticas via Stripe, self-serve de assinaturas pelo cliente e uma integração Clover POS para checkout presencial.
Por que um monorepo multi-app para o Recurra?
Um negócio precisa de três superfícies — admin web do dono, mobile do dono, POS voltada ao cliente — compartilhando um backend, um modelo de auth e um sistema de cobrança. O monorepo Nx com @recurra/shared mantém tipos, validação e regra de negócio em exatamente um lugar entre React Router, Expo e o cliente Kotlin POS.