尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Gestión de cupos de crédito para una distribuidora de materiales: formulario, panel de aprobación y portal de consulta. Demo sin servidor, con pruebas E2E.
翻譯準備中
正在載入完整 README。
檢視完整 README ↗Solicitud, aprobación y consulta de cupos de crédito para una distribuidora de materiales de construcción. Cuatro aplicaciones web (índice, formulario, panel y portal) que corren 100 % en el navegador, con un servidor simulado y datos ficticios.
Proyecto de portafolio. Todo lo que ves en la demo (empresas, NIT, personas, centros de distribución, correos y montos) es inventado. El repositorio no contiene credenciales, identificadores de recursos, direcciones de despliegue ni datos reales; el flujo de despliegue ejecuta un escáner de secretos.
No hay servidor: un backend simulado corre en tu navegador y guarda los cambios en localStorage.
Cada pantalla tiene una píldora DEMO (abajo a la izquierda) con accesos rápidos por rol, la bandeja de correos simulados y el botón Restablecer datos.
Contraseña de todas: Demo2025!
| Rol | Correo | App | Qué puede hacer |
|---|---|---|---|
| ADMIN | [email protected] | Panel + Portal | Todo: aprobar, devolver, rechazar, editar, usuarios, copias de seguridad, auditoría, IA |
| OPERACIONES | [email protected] | Portal | Consultar créditos, marcar perfil creado por centro y comentar |
| CONSULTAS | [email protected] | Portal | Solo lectura (las acciones de escritura son rechazadas) |
| Ejecutivo comercial | [email protected] | Portal | Vista de solicitudes de sus clientes (rol CONSULTAS) |
| Inactivo | [email protected] | — | Para probar el mensaje de cuenta desactivada |
| Solicitante | (cualquier correo) | Formulario | No requiere cuenta: el código de verificación aparece en pantalla |
| Servicio | En la demo |
|---|---|
| Correo (códigos, cartas, alertas) | Bandeja simulada dentro de la página; los códigos se muestran en pantalla |
| Almacenamiento de documentos | Solo metadatos; el visor abre un PDF de ejemplo generado en el navegador |
| Base de datos | localStorage con datos semilla ficticios |
| IA (análisis de expedientes, chat, extracción) | Respuestas de ejemplo con aviso «simulado» |
| Autenticación y sesiones | Sesiones en localStorage con el mismo contrato |
| Exportaciones Excel / PowerPoint | Archivos .xlsx y .csv reales generados en el navegador |
Formulario de solicitud (público)
Panel de control (administración)
Portal de consulta (operaciones y ejecutivos)
Índice: portal de acceso a las tres herramientas.
Capturas reales tomadas de la demo con un navegador headless (npm run screenshots).
| Login y accesos rápidos por rol | Panel · Dashboard |
| Panel · Solicitudes | Panel · Detalle y acciones |
| Panel · Créditos | Panel · Usuarios |
| Panel · Auditoría | Panel · Copias de seguridad |
| Portal · Dashboard | Portal · Créditos |
| Portal · Notificaciones | Formulario · Paso 1 |
flowchart LR
subgraph Build["node demo/build.mjs"]
SRC["src/*/Index.html<br/>(frontends, include() resueltos)"]
SHIM["demo/shim<br/>API en el navegador · store · semilla · UI demo"]
MOCK["demo/mock/*.js<br/>backend simulado por app"]
end
SRC & SHIM & MOCK --> SITE["site/ (HTML estático)"]
SITE --> PAGES["GitHub Pages"]
subgraph Navegador
FE["Frontend"] -- "google.script.run.apiXxx()" --> SH["shim.js"]
SH --> H["DemoKit.handlers.apiXxx"]
H <--> LS[("localStorage<br/>demo-db")]
H --> SIM["Correo · documentos · IA<br/>simulados"]
end
PAGES --> FE
La lógica del frontend no se toca: shim.js implementa la interfaz de la API y despacha cada llamada a un handler que reproduce el contrato (argumentos y forma de la respuesta) de cada operación api*.
.
├── src/ # Frontends de las 4 apps (HTML, CSS y JS del cliente)
│ ├── indice/ # Portal de acceso
│ ├── formulario/ # Solicitud de crédito
│ ├── panel/ # Panel de control
│ └── portal/ # Portal de consulta
├── demo/
│ ├── build.mjs # genera ./site a partir de src/ + shim + mocks
│ ├── shim/ # API en el navegador, localStorage, semilla, UI de la demo, xlsx
│ └── mock/ # backend simulado: indice / formulario / panel / portal
├── tools/
│ ├── e2e/ # pruebas E2E con Playwright (todos los roles y flujos de escritura)
│ ├── scan-secrets.mjs # escáner de secretos y datos personales
│ ├── screenshots.mjs # capturas reales de la demo
│ ├── cover.mjs # portada tipo mockup
│ └── serve.mjs # servidor estático local
├── assets/ # portada, capturas y logo de la demo
├── .github/workflows/pages.yml # build + escaneo + despliegue en GitHub Pages
└── package.json
npm install # solo instala playwright-core (para pruebas y capturas)
npm run build # genera ./site
npm run serve # http://localhost:4173
npm test # E2E de todas las apps (usa Chrome o Edge instalado)
npm run scan # escaneo de secretos sobre todo el repo
No necesitas dependencias para construir o servir la demo:
demo/build.mjssolo usa Node 18 o superior.
Este proyecto se desarrolló con asistencia de IA (Claude) en el código, los datos de ejemplo y la documentación. La revisión, las decisiones y las pruebas son mías.
Andrés Cabrales Baena · Desarrollador de software · andrescabralesbaena.com