{"id":49085809,"url":"https://github.com/sanghel/expense-manager","last_synced_at":"2026-05-22T03:13:15.161Z","repository":{"id":351419914,"uuid":"1210913025","full_name":"Sanghel/expense-manager","owner":"Sanghel","description":"Sistema de gestión de finanzas personales con Next.js e InsForge","archived":false,"fork":false,"pushed_at":"2026-04-20T14:54:29.000Z","size":1728,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"develop","last_synced_at":"2026-04-20T15:50:21.028Z","etag":null,"topics":["ai","chakra-ui","expense-tracker","nextauth","nextjs","personal-finance","postgresql","react","typescript","vercel"],"latest_commit_sha":null,"homepage":"https://expense-manager-pied-three.vercel.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Sanghel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-04-14T22:11:33.000Z","updated_at":"2026-04-20T14:53:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Sanghel/expense-manager","commit_stats":null,"previous_names":["sanghel/expense-manager"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Sanghel/expense-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanghel%2Fexpense-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanghel%2Fexpense-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanghel%2Fexpense-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanghel%2Fexpense-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Sanghel","download_url":"https://codeload.github.com/Sanghel/expense-manager/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Sanghel%2Fexpense-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32305039,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-26T09:34:17.070Z","status":"ssl_error","status_checked_at":"2026-04-26T09:34:00.993Z","response_time":129,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","chakra-ui","expense-tracker","nextauth","nextjs","personal-finance","postgresql","react","typescript","vercel"],"created_at":"2026-04-20T15:34:40.407Z","updated_at":"2026-04-26T17:00:37.374Z","avatar_url":"https://github.com/Sanghel.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Expense Manager\n\nSistema de gestión de finanzas personales con IA integrada, soporte multi-moneda y análisis de gastos.\n\n## Características\n\n- **Transacciones** — CRUD completo de ingresos y gastos con categorización\n- **IA Conversacional** — Chat con Claude para registrar gastos en lenguaje natural\n- **Multi-moneda** — Soporte COP, USD, VES con conversión en tiempo real\n- **Dashboard** — Resumen financiero con gráficos de tendencia mensual\n- **Presupuestos** — Seguimiento de límites de gasto por categoría\n- **Metas de Ahorro** — Objetivos con barra de progreso y depósitos\n- **Gastos Recurrentes** — Suscripciones y pagos periódicos con generación automática vía cron\n- **Etiquetas** — Sistema de tags para clasificación adicional\n- **Exportación** — CSV y JSON con filtros personalizados\n- **Calendario** — Vista mensual de transacciones\n- **Mobile-first** — Bottom navigation, card views y experiencia nativa en móvil\n- **Autenticación** — Google OAuth con NextAuth.js\n\n## Stack Tecnológico\n\n| Capa | Tecnología |\n|---|---|\n| Framework | Next.js 16 (App Router, Server Components) |\n| Lenguaje | TypeScript |\n| UI | Chakra UI v3 |\n| Autenticación | NextAuth.js v4 |\n| Base de datos | InsForge (PostgreSQL) |\n| IA | Anthropic Claude (claude-sonnet-4-5) |\n| Gráficos | Recharts |\n| Validación | Zod |\n| Deploy | Vercel |\n| Animaciones | Framer Motion |\n\n## Prerequisitos\n\n- Node.js 20+\n- pnpm 8+\n- Cuenta en [InsForge](https://insforge.dev)\n- Proyecto OAuth en [Google Cloud Console](https://console.cloud.google.com)\n- API Key de [Anthropic](https://console.anthropic.com)\n\n## Instalación\n\n```bash\n# 1. Clonar repositorio\ngit clone https://github.com/Sanghel/expense-manager.git\ncd expense-manager\n\n# 2. Instalar dependencias\npnpm install\n\n# 3. Variables de entorno\ncp .env.example .env.local\n# Editar .env.local con tus credenciales\n\n# 4. Iniciar en desarrollo\npnpm dev\n```\n\nAbrir [http://localhost:3000](http://localhost:3000)\n\n## Variables de Entorno\n\n```env\n# NextAuth\nNEXTAUTH_URL=http://localhost:3000\nNEXTAUTH_SECRET=                    # openssl rand -base64 32\n\n# Google OAuth\nGOOGLE_CLIENT_ID=\nGOOGLE_CLIENT_SECRET=\n\n# InsForge\nNEXT_PUBLIC_INSFORGE_URL=           # https://\u003cproyecto\u003e.us-east.insforge.app\nNEXT_PUBLIC_INSFORGE_ANON_KEY=      # clave pública (cliente)\nINSFORGE_API_KEY=                   # clave privada (servidor, bypassa RLS)\n\n# Anthropic (chat IA)\nANTHROPIC_API_KEY=\n\n# Cron job (generación de recurrentes)\nCRON_SECRET=                        # openssl rand -hex 32\n```\n\nVer [`.env.example`](./.env.example) para referencia completa.\n\n## Scripts\n\n```bash\npnpm dev          # Servidor de desarrollo\npnpm build        # Build de producción\npnpm start        # Servidor de producción\npnpm lint         # ESLint\nANALYZE=true pnpm build   # Análisis de bundle\n```\n\n## Arquitectura\n\n```\napp/\n  (dashboard)/      # Rutas protegidas del dashboard\n  api/\n    auth/           # NextAuth handlers\n    cron/           # Cron jobs (generación de recurrentes)\n  login/            # Página de autenticación\ncomponents/\n  dashboard/        # Layout, Header, Sidebar, BottomNav\n  transactions/     # CRUD + card mobile view\n  budgets/          # Presupuestos\n  savings/          # Metas de ahorro\n  recurring/        # Transacciones recurrentes\n  charts/           # Gráficos Recharts\n  chat/             # Interfaz de chat IA\n  ui/               # Componentes globales reutilizables\nhooks/              # useFinancialSummary, useDebounce\nlib/\n  actions/          # Server Actions (una por módulo)\n  validations/      # Schemas Zod\ntypes/              # Tipos TypeScript compartidos\n```\n\n## Cron Jobs\n\nEl proyecto incluye un cron job que se ejecuta diariamente a las **00:00 COT** (05:00 UTC):\n\n```\nGET /api/cron/generate-recurring\nAuthorization: Bearer \u003cCRON_SECRET\u003e\n```\n\nGenera automáticamente las transacciones recurrentes cuya fecha de ejecución haya llegado.\n\nConfigurado en `vercel.json`:\n```json\n{ \"crons\": [{ \"path\": \"/api/cron/generate-recurring\", \"schedule\": \"0 5 * * *\" }] }\n```\n\n## Deploy\n\nPush a `main` dispara deploy automático en Vercel.\n\nVariables requeridas en Vercel → Settings → Environment Variables: ver sección anterior.\n\n## Contribuir\n\nVer [CONTRIBUTING.md](./CONTRIBUTING.md).\n\n## Licencia\n\nMIT — ver [LICENSE](./LICENSE).\n\n## Autor\n\n**Sanghel González**\n- GitHub: [@Sanghel](https://github.com/Sanghel)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanghel%2Fexpense-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsanghel%2Fexpense-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsanghel%2Fexpense-manager/lists"}