finances-frontend
Finance Tracker — Frontend
Section titled “Finance Tracker — Frontend”SPA vanilla JS (ES modules) + Vite para tracker de finanzas personales/familiares.
Consume la API de finances-backend:
login/signup JWT, compras/recibos con OCR, ingresos/gastos, ahorros, deudas,
remesas familiares y sync bancario vía Plaid.
Requisitos
Section titled “Requisitos”- Node.js 18+
finances-backendcorriendo (por defecto se asume enlocalhost:3001)
Variables de entorno
Section titled “Variables de entorno”Copiar .env.example a .env y ajustar si hace falta:
cp .env.example .envVITE_API_BASE_URL— URL base del backend (opcional). Si no se define, enlocalhostusahttp://localhost:3001, y en cualquier otro host usahttp://<mismo-host>:3001(heurística de fallback pensada para desarrollo). Para producción con el backend en un dominio propio, definir esta variable explícitamente (ej.https://api.midominio.com).
Desarrollo
Section titled “Desarrollo”npm installnpm run devLevanta el dev server de Vite (por defecto en http://localhost:5173).
Build / preview
Section titled “Build / preview”npm run buildnpm run previewTesting
Section titled “Testing”npm testCorre la suite con Vitest + jsdom. Alcance actual: funciones puras/aisladas
(trimmedMean, helpers de HTML en ui-helpers.js, resolución de API_BASE e
inyección de header Authorization en apiFetch). No cubre flujos de
render/DOM completos — es una SPA sin capa de dominio separada, y esa
cobertura no está en proporción con el alcance del proyecto hoy.
Estructura del proyecto
Section titled “Estructura del proyecto”index.html— markup de las 8 pestañas de la app (Purchases, Income & Expenses, Products, Compare, Savings, Analysis, Family, Bank Sync)public/styles.css— estilos, servido como estáticosrc/main.js— entry point: importa todos los módulos de dominio y expone sus funciones enwindow(la UI depende de atributosonclick/onchangeinline, incluidos varios generados dinámicamente víainnerHTML)src/state.js— estado mutable compartido entre módulos y constantessrc/api.js—API_BASE, override defetchcon inyección de JWT y manejo de 401src/auth.js— login/signup, auth gatesrc/core.js— carga general de la app, purchases, products, transactions, comparesrc/receipts.js— recibos y sus líneas (incluye scan/OCR)src/savings.js— cuentas de ahorrosrc/debts.js— deudassrc/analysis.js— análisis mensual y gráficas (Chart.js)src/family-bank.js— remesas familiares y sync bancario (Plaid)src/settings.js— personalización (fondo, dim)src/ui-helpers.js/src/hero.js— helpers compartidos de UI y métricas herovite.config.js— config de dev server, build y tests (Vitest)
Ver docs/adr/001-import-baseline.md y .claude/ARCHITECTURE.md para más
detalle de arquitectura.
Deploy
Section titled “Deploy”El frontend se sirve como sitio estático (npm run build genera dist/).
El backend (finances-backend) se despliega por separado; apuntar
VITE_API_BASE_URL a su dominio en el entorno de build de producción.