SpendFlow Planner es una aplicación web responsive para controlar gastos, tarjetas, cuotas y compromisos futuros por grupo.
La idea central del producto es: ver no solo lo que gasté, sino lo que ya comprometí pagar en el tiempo.
MANIFESTO.md: fuente de verdad del producto, reglas críticas y estado actual.ROADMAP.md: fases y sprints del proyecto.SPRINTS.md: sprint activo, tarea actual y validación esperada.AGENTS.md: instrucciones operativas para Codex.
- Next.js.
- TypeScript.
- Tailwind CSS.
- Supabase Auth.
- Supabase Database.
- Supabase Storage.
- OpenAI API.
- PWA.
- Deploy objetivo: Vercel.
- Login con Supabase Auth.
- Grupos y multi-grupo.
- Selector de grupo activo.
- Invitaciones por link.
- Administración de miembros.
- Roles admin / miembro.
- RLS por grupo.
- Registro e historial de gastos.
- Nuevo gasto.
- Reportes.
- Tarjetas físicas y cuentas de tarjeta.
- Calendario de cierre/vencimiento.
- Flujo mensual.
- Cuotas iniciales.
- Personas.
- Categorías.
- Medios de pago.
- Mantenimiento.
- Comprobantes por grupo.
- Storage de comprobantes.
- IA para lectura de imágenes/PDF.
- PWA para iPhone.
- Tema oscuro moderno.
- Tema claro clásico.
- Navegación mobile con bottom nav y menú Más.
Crear .env.local en desarrollo y configurar las mismas variables en Vercel.
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
OPENAI_API_KEY=
NEXT_PUBLIC_APP_URL=
NEXT_PUBLIC_APP_NAME=SpendFlow PlannerNotas:
OPENAI_API_KEYes server-side y no debe exponerse en frontend.- No usar variables
NEXT_PUBLIC_*para secretos. - La service role key de Supabase no debe exponerse en frontend.
NEXT_PUBLIC_APP_URLdebe apuntar a la URL pública real en producción para generar links de invitación.
npm install
npm run devAbrir la URL local que indique Next.js, normalmente http://localhost:3000.
npm run buildPara una validación limpia del sprint actual:
rm -rf .next
npm run build
echo $?El resultado esperado para el sprint activo es exit code 0.
SpendFlow Planner usa Supabase para:
- autenticación de usuarios;
- base de datos PostgreSQL;
- políticas RLS;
- almacenamiento de comprobantes.
Las tablas principales incluyen:
grupos;perfiles;miembros_grupo;invitaciones_grupo;gastos;cuotas_tarjeta;calendario_tarjetas;compras_cuotas_iniciales;comprobantes;cuentas_tarjeta;tarjetas_fisicas;personas;categorias;medios_pago.
El grupo activo se define por perfiles.grupo_id.
Reglas críticas:
- El usuario puede pertenecer a varios grupos mediante
miembros_grupo. - El selector de grupo activo actualiza
perfiles.grupo_id. - Todas las pantallas operativas deben consultar usando el grupo activo.
- Las tablas operativas están protegidas por RLS.
- No desactivar RLS.
- No hacer consultas globales sin
grupo_id. - No mostrar datos de otro grupo.
Los comprobantes se guardan en Supabase Storage, separados por grupo.
Ruta nueva esperada:
{grupo_id}/{año}/{mes}/{gasto_id}/{archivo}
Reglas:
- No borrar rutas antiguas.
- Usar columnas reales en español.
tipo_archivodebe guardar MIME real:image/jpeg;image/png;image/webp;application/pdf.
- No guardar
imagen,pdfuotroentipo_archivo.
La app usa OpenAI API para lectura de imágenes/PDF de comprobantes.
Reglas:
- El análisis debe ejecutarse del lado servidor.
OPENAI_API_KEYno debe estar disponible en frontend.- La IA sugiere datos, pero el usuario valida antes de guardar.
- La IA es un asistente, no un requisito para registrar gastos manualmente.
SpendFlow Planner está orientada a uso mobile-first y PWA en iPhone.
Flujo de instalación en iPhone:
- Abrir la URL pública en Safari.
- Tocar Compartir.
- Elegir Agregar a pantalla de inicio.
- Confirmar el nombre SpendFlow.
- Abrir desde el ícono instalado.
La navegación mobile debe funcionar con bottom nav:
- Inicio.
- Nuevo.
- Gastos.
- Flujo.
- Más.
Pasos esperados:
- Confirmar que
npm run buildfinaliza correctamente. - Crear proyecto en Vercel desde el repositorio.
- Configurar variables de entorno.
- Deployar.
- Copiar la URL pública real.
- Configurar Supabase Auth Redirect URLs.
- Probar login, grupos, invitaciones, gastos, comprobantes, IA y PWA.
En Supabase ir a Authentication → URL Configuration.
Configurar Site URL con la URL real de Vercel, por ejemplo:
https://spendflow-planner.vercel.app
Configurar Redirect URLs:
https://spendflow-planner.vercel.app/**
http://localhost:3000/**
https://*.app.github.dev/**
Si Vercel asigna otra URL real, reemplazar el ejemplo por esa URL tanto en Supabase como en NEXT_PUBLIC_APP_URL.
- No exponer
OPENAI_API_KEYen frontend. - No exponer la service role key de Supabase en frontend.
- No desactivar RLS.
- No crear consultas operativas sin filtro por
grupo_id. - No mostrar datos de otro grupo.
- No tocar schema, RLS, Storage, Auth, grupos, invitaciones, gastos, flujo, calendario o IA salvo tarea explícita.
La app está desplegada en Vercel:
https://spend-flow-planner.vercel.app
Tarea activa según SPRINTS.md:
- Sprint 2 — QA funcional completo.
- Validar flujos principales en producción.
- Confirmar separación por grupo y ausencia de errores bloqueantes.