Recurra

Archivado

Proyecto personal — estructura de facturación recurrente para negocios de servicios locales. Construido como excusa para aprender Nx, AWS CDK y la capa de cobros de punta a punta.

Rol
Solo — backend, web, móvil, infra
Período
feb 2025 – Actual
Stack
  • NestJS
  • React Router 7
  • Expo
  • Kotlin (Clover POS)
  • PostgreSQL
  • Prisma
  • AWS CDK
  • LocalStack
  • Nx monorepo

Qué hace

Recurra es una plataforma de facturación recurrente para negocios de servicios locales. El dueño gestiona servicios, horarios y clientes desde un panel admin en React o una app móvil en Expo. El cliente gestiona sus suscripciones desde un portal propio. Stripe maneja los cobros. Una integración con Clover POS escrita en Kotlin permite cobros presenciales que consultan la suscripción activa del cliente.

Por qué lo construí

No es un producto — es un proyecto personal. Quería construir algo que abarcara web + móvil + POS + infraestructura en AWS en un solo monorepo, en parte para aprender Nx y CDK en serio, y en parte porque la facturación por suscripción para negocios de servicios locales es un dominio que me parece genuinamente interesante (y consistentemente desatendido).

Cómo funciona

Monorepo Nx con NPM workspaces. Seis apps:

  • backend — NestJS con Prisma sobre PostgreSQL en RDS, desplegado en App Runner.
  • web — React Router 7 SPA en build/client/, alojado en S3 + CloudFront.
  • mobile — Expo.
  • clover-pos — Kotlin Android para Clover Mini.
  • infra — AWS CDK con seis stacks: Network, Dns, Database, Backend, Web, Email.
  • backend-e2e — tests e2e con Jest.

Los tipos compartidos y los schemas Zod viven en @recurra/shared y son importados por todas las apps. Los stacks de CDK usan SSM Parameter Store para los secretos y un script de entrada que construye la URL de la base de datos a partir del JSON de Secrets Manager.

Estado

En desarrollo activo. El backend, el panel web de administración y la infra ya están en marcha; la app Clover POS y la app móvil del dueño son los próximos pasos.

Preguntas

¿Qué es Recurra?

Recurra es una plataforma de facturación recurrente para negocios de servicios locales — el lema es 'clientes de siempre, cobros automáticos.' Gestiona citas recurrentes, cobros automatizados vía Stripe, suscripciones de autogestión para clientes, e integración con Clover POS para cobros presenciales.

¿Por qué un monorepo multi-app para Recurra?

Un negocio necesita tres interfaces — panel web del dueño, app móvil del dueño, POS orientado al cliente — compartiendo un solo backend, un modelo de autenticación y un sistema de cobros. El monorepo Nx con @recurra/shared mantiene tipos, validaciones y lógica de negocio en un único lugar para React Router, Expo y el cliente Kotlin del POS.