CasaCuenta es una aplicación web para la gestión de gastos personales y familiares. Permite registrar, organizar, monitorear y exportar gastos, incorporando autenticación de usuarios, roles familiares, administración global, control de categorías y reglas de seguridad mediante Supabase Row Level Security.
El proyecto fue desarrollado como un MVP funcional orientado a resolver una necesidad doméstica real: centralizar el control de gastos individuales y familiares en una plataforma web simple, segura y accesible.
Aplicación desplegada en Vercel:
https://casa-cuenta.vercel.app
- React
- Vite
- Supabase Auth
- Supabase PostgreSQL
- Supabase Row Level Security
- Supabase RPC Functions
- CSS modular
- Vercel
- Registro de usuarios.
- Inicio de sesión.
- Recuperación de contraseña por correo.
- Cambio de contraseña desde enlace de recuperación.
- Cambio de correo desde la sección Mi cuenta.
- Cambio de contraseña desde la sección Mi cuenta.
- Validación de cuentas activas e inactivas.
- Registro de gastos personales.
- Edición de gastos propios.
- Eliminación de gastos propios.
- Filtros por fecha, categoría, método de pago y descripción.
- Separación entre gastos propios, familiares y globales.
- Visualización de indicadores rápidos en el dashboard.
- Crear una familia.
- Unirse a una familia mediante código de invitación.
- Visualizar miembros de la familia.
- Consultar roles familiares.
- Ver fecha de unión o creación.
- Consultar total gastado por miembro.
- Salir de una familia.
- Disolver familia como administrador familiar.
El sistema separa los permisos en dos niveles: rol global y rol familiar.
admin: administrador general del sistema.user: usuario normal del sistema.
user: usuario sin familia.member: miembro de una familia.family_admin: administrador de una familia.
Esta separación permite que un administrador global también pueda pertenecer a una familia sin perder sus permisos administrativos dentro del sistema.
- Categorías globales para usuarios sin familia.
- Categorías familiares para usuarios con familia.
- Administración de categorías globales por parte del administrador general.
- Administración de categorías familiares por parte del administrador familiar.
- Uso de categorías activas por parte de los miembros.
Disponible únicamente para usuarios con system_role = admin.
Incluye:
- Cantidad total de usuarios.
- Cantidad total de familias.
- Cuentas activas e inactivas.
- Cantidad total de gastos.
- Total gastado global.
- Listado de usuarios.
- Listado de familias.
- Filtros por estado y rol.
- Activación y desactivación de cuentas.
El dashboard incluye indicadores y visualizaciones como:
- Total gastado en el mes.
- Total gastado en el día.
- Cantidad de gastos registrados.
- Categoría con mayor gasto.
- Promedio diario del mes.
- Método de pago más utilizado.
- Usuario con mayor gasto.
- Comparación con el mes anterior.
- Gasto por categoría.
- Gasto por mes.
- Gasto por método de pago.
- Gasto por usuario.
La aplicación permite exportar información en formato CSV:
- Mis gastos.
- Gastos familiares, disponible para
family_admin. - Gastos globales, disponible para
admin.
CasaCuenta utiliza una arquitectura frontend conectada directamente con Supabase como Backend as a Service.
El frontend fue desarrollado con React y Vite. Supabase se utiliza para autenticación, base de datos PostgreSQL, políticas de seguridad RLS y funciones RPC para operaciones sensibles.
Usuario
↓
Frontend React + Vite
↓
Supabase Auth
↓
Supabase PostgreSQL + RLS + RPC
↓
Vercel Deploymentsrc/
components/
auth/
AuthLayout.jsx
layout/
AppNavigation.jsx
DashboardHeader.jsx
DashboardSection.jsx
LoadingScreen.jsx
CategoryManager.jsx
CreateFamily.jsx
ExpenseForm.jsx
ExpenseTable.jsx
FamilyPanel.jsx
Filters.jsx
JoinFamily.jsx
MyAccount.jsx
SummaryCards.jsx
pages/
Dashboard.jsx
ForgotPassword.jsx
Login.jsx
Register.jsx
ResetPassword.jsx
sections/
AccountSection.jsx
AdminSection.jsx
AnalyticsSection.jsx
CategoriesSection.jsx
ExpensesSection.jsx
ExportsSection.jsx
FamilyExpensesSection.jsx
FamilySection.jsx
GlobalExpensesSection.jsx
OverviewSection.jsx
services/
supabaseClient.js
styles/
account.css
admin.css
analytics.css
auth.css
categories.css
dashboard.css
expenses.css
exports.css
family.css
layout.css
monitor.css
utils/
logger.js
App.jsx
App.css
index.css
main.jsxEl sistema utiliza las siguientes tablas principales en Supabase.
Guarda la información de los usuarios dentro del sistema.
Campos principales:
idemailfull_namesystem_rolerolefamily_idis_activecreated_atjoined_family_at
Guarda la información de las familias creadas.
Campos principales:
idnameinvite_codecreated_byis_activecreated_atdeleted_at
Guarda categorías globales y familiares.
Campos principales:
idfamily_idnameis_activecreated_bycreated_atupdated_at
Guarda los gastos registrados por los usuarios.
Campos principales:
idfamily_iduser_idcategory_idexpense_dateamountdescriptionpayment_methodcreated_at
CasaCuenta implementa Row Level Security en Supabase para proteger el acceso a los datos.
Reglas generales aplicadas:
- Cada usuario puede crear, editar y eliminar únicamente sus propios gastos.
- El administrador familiar puede monitorear los gastos de su familia, pero no editar gastos ajenos.
- El administrador global puede monitorear información general del sistema, pero no editar gastos ajenos.
- Las acciones sensibles se realizan mediante funciones RPC.
- La gestión de categorías se controla mediante funciones RPC.
- La activación y desactivación de cuentas se realiza mediante funciones RPC.
- Las operaciones familiares, como crear, unirse, abandonar o disolver una familia, se gestionan mediante funciones RPC.
Esta estructura evita depender únicamente de validaciones en el frontend y permite reforzar la protección de datos desde la base de datos.
Crear un archivo .env tomando como base .env_example:
VITE_SUPABASE_URL=tu_url_de_supabase
VITE_SUPABASE_ANON_KEY=tu_anon_key_de_supabaseNo se deben subir archivos .env reales al repositorio.
Clonar el repositorio:
git clone <url-del-repositorio>
cd casa-cuenta-appInstalar dependencias:
npm installCrear el archivo de variables de entorno:
cp .env_example .envConfigurar las variables de entorno con los datos del proyecto Supabase.
Ejecutar en modo desarrollo:
npm run devEjecutar entorno de desarrollo:
npm run devGenerar build de producción:
npm run buildPrevisualizar build de producción:
npm run previewEjecutar revisión de código con ESLint:
npm run lintPara que el proyecto funcione correctamente, se debe configurar:
- Supabase Auth.
- Email provider de Supabase.
- Redirect URL para recuperación de contraseña.
- Tablas principales.
- Funciones RPC.
- Políticas RLS.
- Variables de entorno en desarrollo y producción.
Redirect URLs recomendadas:
http://localhost:5173/reset-password
https://tu-dominio/reset-passwordEl proyecto puede desplegarse en Vercel.
Pasos generales:
-
Subir el proyecto a GitHub.
-
Importar el repositorio en Vercel.
-
Agregar las variables de entorno:
VITE_SUPABASE_URLVITE_SUPABASE_ANON_KEY
-
Configurar en Supabase la URL de producción para recuperación de contraseña.
-
Ejecutar el despliegue.
El proyecto se encuentra en versión MVP funcional.
Incluye:
- Autenticación completa.
- Gestión de gastos propios.
- Gestión familiar.
- Monitoreo familiar.
- Monitoreo global.
- Panel de administración.
- Gráficas básicas.
- Exportaciones CSV.
- Políticas RLS.
- Diseño responsive.
- Exportación en formato Excel.
- Filtros avanzados en exportaciones.
- Transferencia de administración familiar.
- Regeneración de código de invitación.
- Presupuestos mensuales.
- Alertas de gastos.
- Mejoras visuales en gráficas.
- Historial de auditoría para acciones administrativas.
Desarrollado por Axel Pariona como proyecto MVP de gestión de gastos personales y familiares.