PRISM-INSIGHT
These are 13 specialized AI agents that analyze Korean and US stocks in real-time, and this is open source and free to use.
AI translation
Análisis de gastos del Coworking Café
Translation pending
FinanceJavaScript · TypeScriptGitHub @marcos611moralesOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Analyze and organize expenses based on CFDI 4.0 XML invoices, directly in your browser.
Taken from the repository README
Loading the full README.
Read the full README ↗Análisis de gastos del Coworking Café. Es una página web (Next.js, desplegada en Vercel) para analizar las facturas de gastos (CFDI 4.0 XML) que los proveedores le emiten al coworking café. La persona usuaria arrastra los archivos al navegador; las facturas se procesan en el navegador y nunca se guardan en una base de datos. Solo si la persona lo pide, se envían a DeepSeek descripciones de conceptos y nombres de proveedor (nunca RFC, UUID ni montos). La usan el dueño, sus socios y su contador con una contraseña compartida.
Requisitos: Node.js 24.x y pnpm 11.5.2 (fijado en packageManager).
pnpm install
Crea un archivo .env.local (está ignorado por git) con dos valores aleatorios:
echo "APP_PASSWORD=$(openssl rand -base64 18)" > .env.local
echo "SESSION_SECRET=$(openssl rand -base64 48)" >> .env.local
Después:
pnpm dev # servidor de desarrollo en http://localhost:3000
pnpm verify # lint + typecheck + pruebas + build
pnpm build && pnpm smoke:auth # prueba de la contraseña y de la ruta de agrupar productos contra un servidor de producción
.env.example documenta cada variable. Nunca uses el prefijo público de Next.js con APP_PASSWORD, SESSION_SECRET ni DEEPSEEK_API_KEY.
El proyecto de Vercel lo crea quien administra la cuenta (D-26) y se usa el dominio *.vercel.app que Vercel asigna por defecto (D-27).
Sube el repositorio a GitHub. Este repositorio todavía no tiene remoto: crea un repositorio en GitHub, luego git remote add origin <url> y git push -u origin main. La carpeta Facturas/ está en .gitignore, así que no se sube. Alternativa: usar la CLI de Vercel desde una copia del proyecto sin la carpeta Facturas/ (.vercelignore también la excluye, junto con .env*).
Crea el proyecto: Vercel Dashboard > Add New > Project > importa el repositorio. Framework: Next.js.
Versión de Node: Project > Settings > General > Node.js Version = 24.x.
Variables de entorno (Project > Settings > Environment Variables), para Production y Preview:
APP_PASSWORD: contraseña compartida larga y aleatoria (12 caracteres o más).SESSION_SECRET: salida de openssl rand -base64 48.DEEPSEEK_API_KEY: clave de acceso a DeepSeek que usa el servidor para agrupar productos. Solo vive en el servidor: no la pegues en el código ni uses un prefijo público.DEEPSEEK_MODEL (opcional): modelo de DeepSeek que se usa; si falta, se usa deepseek-flash.ENABLE_EXPERIMENTAL_COREPACK = 1: pnpm 11 no está en la lista oficial de Vercel; con Corepack activado, Vercel instala con la versión fijada en packageManager.Cambiar APP_PASSWORD o SESSION_SECRET cierra la sesión de todas las personas.
Despliega (o vuelve a desplegar) después de guardar las variables.
Revisa el log de build: debe indicar que se instaló con pnpm 11.5.2 y que el build terminó bien. Si la instalación falla con un error de versión de pnpm, el plan alternativo es cambiar packageManager a pnpm 10 y regenerar pnpm-lock.yaml (la configuración allowBuilds de pnpm-workspace.yaml necesitaría el equivalente de pnpm 10).
Antes de desplegar, ejecuta localmente:
node scripts/check-bundle-secrets.mjs # compila con valores centinela y busca secretos en .next/static y en las páginas .html y .rsc prerrenderizadas
pnpm audit --prod --audit-level high # sin avisos altos o críticos en dependencias de producción
El análisis del build cubre también la clave de DeepSeek (DEEPSEEK_API_KEY): ni su valor ni los nombres DEEPSEEK_API_KEY y DEEPSEEK_MODEL pueden aparecer en lo que llega al navegador. Además, pnpm build && pnpm smoke:auth prueba la ruta /api/llm/group contra un servidor de producción: sin sesión responde 401, un cuerpo mal formado responde 400 y, con la clave vacía, responde 500 server_not_configured; nunca llama a DeepSeek de verdad.
Confirma en la URL real (ventana privada): cualquier ruta, por ejemplo / o /cualquier-cosa, lleva a /login; la contraseña correcta entra; recargar y volver a visitar más tarde sigue dentro; "Cerrar sesión" regresa a /login. La fase solo se cierra cuando esto queda confirmado en la URL real (D-28).
Requiere Google Chrome instalado (Playwright usa el canal chrome).
pnpm test:e2e
Levanta un build de producción en el puerto 3210 con una contraseña de prueba, arma una carpeta sintética de facturas en el directorio temporal del sistema y comprueba: la puerta de acceso, la carga de la carpeta, que ninguna petición de red lleve contenido XML, el aviso al recargar y el cierre de sesión.
Para correr además la muestra real, solo en esta máquina (nunca se sube a ningún lado):
E2E_FACTURAS_DIR=Facturas/2025 pnpm test:e2e
Estas pruebas no forman parte de pnpm verify. Variables opcionales: E2E_APP_PASSWORD, E2E_SESSION_SECRET y E2E_FACTURAS_DIR.