尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗App de homebanking estilo fintech, construida con Node.js + Express (backend), HTML/CSS/JS vanilla (frontend) y Supabase (Auth + PostgreSQL).
| Capa | Tecnología |
|---|---|
| Backend | Node.js + Express |
| Frontend | HTML, CSS, JS vanilla (sin frameworks) |
| Auth | Supabase Auth |
| Base de datos | Supabase PostgreSQL (pg pool) |
| Banco Central | https://centralbank.brocoly.cc/api — siempre x-environment: test |
| Cotizaciones | https://dolarapi.com/v1/dolares |
homebanking/
├── backend/
│ ├── src/
│ │ ├── app.js # Express app + rutas
│ │ ├── server.js # Entrypoint
│ │ ├── config/
│ │ │ └── db.js # Pool pg + initDb (crea tablas)
│ │ ├── middleware/
│ │ │ └── authMiddleware.js # Valida JWT Supabase
│ │ ├── controllers/
│ │ │ ├── authController.js
│ │ │ ├── cuentaController.js
│ │ │ ├── movimientoController.js
│ │ │ ├── transferenciaController.js
│ │ │ ├── reservaController.js
│ │ │ ├── prestamoController.js # ← Módulo Préstamos
│ │ │ ├── chatController.js
│ │ │ ├── cardController.js
│ │ │ └── mercadoController.js
│ │ ├── routes/
│ │ │ ├── authRoutes.js
│ │ │ ├── cuentaRoutes.js
│ │ │ ├── movimientoRoutes.js
│ │ │ ├── transferenciaRoutes.js
│ │ │ ├── reservaRoutes.js
│ │ │ ├── prestamoRoutes.js # ← Módulo Préstamos
│ │ │ ├── chatRoutes.js
│ │ │ ├── cardRoutes.js
│ │ │ └── mercadoRoutes.js
│ │ └── services/
│ │ └── bancoCentralService.js # Cliente BC API (siempre test)
│ ├── .env # Variables de entorno (no commitear)
│ └── package.json
└── frontend/
├── login.html
├── dashboard.html
├── app.js
└── styles.css
# Desde backend/
npm install
node server.js
# → http://localhost:3000
El servidor sirve el frontend como archivos estáticos. GET / redirige a /login.html.
DATABASE_URL=postgresql://... # URL de conexión Supabase
SUPABASE_URL=https://...
SUPABASE_SERVICE_KEY=...
BANCO_ENV=test # SIEMPRE test, nunca prod
Las tablas se crean automáticamente en initDb() al arrancar. No hay migraciones manuales.
| Tabla | Descripción |
|---|---|
cuentas | Cuentas ARS y USD de cada usuario |
movimientos | Historial de transacciones por cuenta |
transferencias | Transferencias inter-cuenta |
reservas | Metas de ahorro con fecha de vencimiento |
prestamos | Préstamos solicitados (amortización francesa) |
cards | Tarjetas Visa Débito virtuales |
prestamosid SERIAL PRIMARY KEY
usuario_id UUID → auth.users(id)
cuenta_acreditada_id INTEGER → cuentas(id)
monto NUMERIC(14,2)
cuotas INTEGER CHECK (IN (3, 6, 12, 24, 36))
tna NUMERIC(6,4)
cuota_mensual NUMERIC(14,2)
estado VARCHAR(20) DEFAULT 'activo' CHECK (IN ('activo','cancelado','saldado'))
fecha_solicitud TIMESTAMP DEFAULT NOW()
| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/auth/register | Registro de usuario |
| POST | /api/auth/login | Login, devuelve JWT |
| POST | /api/auth/logout | Cierre de sesión |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/cuentas | Lista cuentas del usuario |
| GET | /api/cuentas/saldo | Saldo de cada cuenta |
| POST | /api/cuentas/depositar | Depósito en cuenta ARS |
| POST | /api/cuentas/abrir | Abre cuenta USD (vía BC API) |
| POST | /api/cuentas/convertir | Conversión ARS ↔ USD |
| GET | /api/cuentas/buscar-usd/:valor | Busca cuenta USD por CBU o alias (local) |
| PUT | /api/cuentas/alias-usd | Cambia alias de cuenta USD |
| POST | /api/cuentas/transferir-usd | Transferencia USD (inter-banco vía BC) |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/movimientos | Historial de movimientos |
| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/transferencias | Transferencia ARS entre cuentas |
| GET | /api/transferencias/buscar/:cbu | Busca titular por CBU (BC API) |
| GET | /api/transferencias/alias/:alias | Busca titular por alias (BC API) |
| GET | /api/transferencias/sincronizar | Sincroniza transferencias recibidas desde BC |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/prestamos | Lista préstamos del usuario |
| POST | /api/prestamos/solicitar | Solicita préstamo (acredita en ARS) |
| PUT | /api/prestamos/:id/cancelar | Cancela un préstamo activo |
Parámetros de POST /api/prestamos/solicitar:
{ "monto": 200000, "cuotas": 12 }
monto: entre $10.000 y $5.000.000cuotas: 3, 6, 12, 24 o 36Sistema de amortización: Francés (cuotas fijas). TNA = 95%, IVA sobre intereses = 21%.
Solo se permite un préstamo activo por usuario a la vez.
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/reservas | Lista reservas del usuario |
| POST | /api/reservas | Crea una reserva |
| DELETE | /api/reservas/:id | Elimina una reserva |
| Método | Ruta | Descripción |
|---|---|---|
| POST | /api/chat | Chat con asistente IA integrado |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/cards | Obtiene tarjeta virtual del usuario |
| POST | /api/cards/emitir | Emite tarjeta Visa Débito virtual |
| POST | /api/cards/bloquear | Bloquea/desbloquea tarjeta |
| Método | Ruta | Descripción |
|---|---|---|
| GET | /api/mercado/cotizaciones | Cotizaciones del dólar (DolarAPI) |
Base URL: https://centralbank.brocoly.cc/api
Ambiente: siempre x-environment: test — nunca usar prod
Endpoints usados:
POST /accounts — crear cuenta USDPUT /persons/{cbu}/alias — asignar alias (limitación: falla para CBUs USD)POST /transactions — transferencia (funciona con CBUs USD aunque GET /persons los devuelva 404)GET /persons/{cbu} y GET /persons/alias/{alias} — lookup de titularEl simulador en dashboard.html permite:
pool.on('error') evita que el proceso crashee.BANCO_ENV=test debe estar siempre presente en .env.localStorage para caché del avatar de usuario (clave por user.id)._dolares global y se refrescan cada 5 minutos.