尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
Sistema de gestión de gastos personales desarrollado por Bethalabs. Incluye presupuestos mensuales, gastos recurrentes automatizados y análisis estadístico.檢視完整 README ↗
Sistema de gestión de gastos personales desarrollado por Bethalabs. Incluye presupuestos mensuales, gastos recurrentes automatizados y análisis estadístico.
# Clonar el repositorio
git clone https://github.com/elrichi31/control-gastos.git
cd control-gastos
# Instalar dependencias
npm install
# Configurar variables de entorno
cp .env.example .env.local
# Completar .env.local (cada variable indica si es obligatoria u opcional)
# Ejecutar servidor de desarrollo
npm run dev
Abre http://localhost:3000 en tu navegador.
supabase/migrations/ en el SQL Editoranon/authenticated (ver docs/CODE_REVIEW.md)Todas están en .env.example, agrupadas por bloque (Supabase, NextAuth, Google, sesiones, cron, MCP, correo Yahoo, Jev) e indicando si son obligatorias. Las mínimas para levantar la app: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY, NEXTAUTH_URL y NEXTAUTH_SECRET; CRON_SECRET para los cron.
El único cron de recurrentes requiere también SUPABASE_SERVICE_ROLE_KEY privada y aplicar la migración SQL en Supabase. Guardar una regla no genera un gasto inmediatamente. Ver modelo, compatibilidad y activación.
Servidor autenticado para consultar y gestionar gastos manuales propios desde ChatGPT. Configuración OAuth, migración y guía de conexión en docs/MCP.md.
Un Schedule diario de Dokploy (5 5 * * * UTC = 00:05 en Ecuador, shell sh) dentro del contenedor genera los gastos recurrentes vencidos:
wget -qO- --header="Authorization: Bearer $CRON_SECRET" http://127.0.0.1:3000/api/cron/process-recurring-expenses
Otro Schedule cada 30 min (*/30 * * * *, shell sh) trae los movimientos bancarios del correo de las últimas 2 semanas:
wget -qO- --header="Authorization: Bearer $CRON_SECRET" http://127.0.0.1:3000/api/cron/sync-email
La imagen es node:20-alpine: trae wget pero no curl. La última corrida de cada cron se ve en el sidebar (Automatizaciones).
src/
├── app/ # App Router de Next.js
│ ├── api/ # API Routes
│ ├── auth/ # Páginas de autenticación
│ ├── detalle-gastos/ # Vista detallada de gastos
│ ├── estadisticas/ # Análisis y gráficos
│ ├── form/ # Formulario de gastos
│ ├── gastos-recurrentes/ # Gestión de gastos recurrentes
│ └── presupuesto/ # Gestión de presupuestos
├── components/ # Componentes React
│ ├── ui/ # shadcn/ui y piezas genéricas
│ ├── layout/ # Sidebar, TopBar, providers y tema
│ ├── gastos/ # Formulario, lista y edición de gastos
│ ├── gastos-recurrentes/ # Formulario, lista y modales de recurrentes
│ ├── dashboard/ # Widgets del dashboard
│ ├── detalle-gastos/ # Componentes de vista detallada
│ ├── presupuesto/ # Componentes de presupuestos
│ ├── stats/ # Componentes de estadísticas
│ ├── conexiones/ # Sesiones y conexiones MCP
│ └── landing/ # Página pública
├── hooks/ # Custom React hooks
├── lib/ # Utilidades y configuración
│ ├── auth/ # Configuración de autenticación
│ ├── database/ # Cliente service-role de Supabase (solo servidor)
│ └── constants/ # Constantes globales
├── services/ # Capa de servicios/API
└── types/ # Definiciones de TypeScript
gasto con flag is_recurrent: truegeneradoEste proyecto es de código abierto bajo licencia MIT.
# Ejecutar en modo desarrollo
npm run dev
# Build de producción
npm run build
# Servidor de producción
npm run start
# Pruebas y tipos
npm test
npm run typecheck
# Linter
npm run lint
Desarrollado con ❤️ usando Next.js y Supabase