尚未收集儲存庫資訊。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
DataLite es una aplicación de página única (SPA) sin necesidad de servidor (serverless), procesando todo directamente en el navegador del usuario para garantizar privacidad y velocidad de carga.
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Dashboards, gráficos y tablas dinámicas a partir de Excel y CSV, directo en el navegador. El análisis ocurre en el equipo del usuario; solo los proyectos que se guardan con DataLite Pro se suben a la nube.
Sitio: https://data-lite.vercel.app
src/main.jsx App React: carga, cuenta, proyectos, puertas de Pro
src/app/ Tablero tipo Power BI (Dashboard, panel de visuales, fórmulas, filtros) y ventanas de la nube
src/lib/data.js Lectura de archivos, detección de tipos, tabla dinámica, filtros
src/lib/formula.js Intérprete de fórmulas tipo Excel (sin eval): columnas, medidas y funciones propias
src/lib/model.js Modelo de datos: aplica columnas calculadas, medidas y funciones del usuario
src/lib/Chart.jsx Gráficos SVG propios (sin Chart.js); Visuals.jsx: treemap, combinado, dispersión, medidor, KPI, matriz
src/lib/exporters.js PowerPoint (gráficos nativos), PNG, Excel de varias hojas
src/lib/cloud.js Cliente Supabase sin dependencias: enlace al correo (PKCE), RPC, Storage, pagos
src/config.js URL y clave publicable de Supabase (públicas por diseño)
api/ Funciones de Vercel: checkout, confirmación y webhook de Wompi
supabase/migrations/ Esquema, RLS y funciones de la base de datos
tests/ Pruebas unitarias (node --test tests/*.test.mjs)
src/lib/samples.js Datos de ejemplo
src/consent.js Banner de cookies, AdSense condicionado al consentimiento, Vercel Analytics
src/styles.css Estilos
src/pages/ Contenido de cada página (encabezado JSON con título, descripción, schema)
build.mjs Compila JS/CSS y genera los .html, sitemap.xml
Los archivos generados (index.html, guias/*.html, assets/, sitemap.xml) se versionan para que Vercel sirva el sitio estático sin paso de compilación.
npm install
npm run bundle # recompila assets y páginas
npx serve . # vista local
Edita siempre en src/ y vuelve a ejecutar npm run bundle; no edites los .html de la raíz a mano.
ads.txt ya incluye el ID de editor pub-9781408296787253.AD_SLOTS dentro de src/consent.js.X-Frame-Options: DENY, nosniff, Permissions-Policy restrictiva, CORS limitado al propio dominio y CSP con lista blanca: scripts solo del propio dominio y de Google AdSense (ver vercel.json). Si AdSense agrega un dominio nuevo, revisa la consola del navegador y súmalo a la CSP.service_role y los secretos de Wompi solo existen en el servidor.src/lib/xlsx.js, con JSZip empaquetado): la app no ejecuta código de servidores externos. Los .xls antiguos no se leen; se pide guardarlos como .xlsx.dwluwzeqexgihihauuos (esquema en supabase/migrations/). Todo pasa por funciones SECURITY DEFINER con permisos validados; las tablas no se pueden leer ni escribir directo desde el navegador. Los datos de cada proyecto van comprimidos en el bucket privado datalite/<id>/data.bin.DL- a /api/pagos/webhook de DataLite. Además, la página /pago confirma la transacción al volver del checkout.SUPABASE_URL, SUPABASE_ANON_KEY, SUPABASE_SERVICE_ROLE_KEY (sensible), WOMPI_PUBLIC_KEY, WOMPI_INTEGRITY_SECRET, WOMPI_EVENTS_SECRET, SITE_URL. Sin ellas, el botón de pago muestra «se habilita en los próximos días» y nada se rompe.api/compartir/notificar envía la invitación por SMTP (cliente propio en api/_lib/smtp.js, TLS 465). La base autoriza cada envío (dl_claim_invite_email: solo el dueño con plan vigente, la persona debe estar invitada, máximo un aviso cada 12 h por persona y 40 al día por dueño). Variables en Vercel: SMTP_USER (la cuenta de Gmail), SMTP_PASS (contraseña de aplicación, sensible) y, opcionales, SMTP_HOST, SMTP_PORT, SMTP_FROM_NAME. Sin ellas, la invitación igual funciona y la app sugiere copiar el enlace.src/lib/connectors.js. Google Sheets con el selector oficial y permiso drive.file (exporta a .xlsx por la API de Drive); Excel en OneDrive/SharePoint con Microsoft Entra (código + PKCE en ventana emergente, retorno en /conectar/microsoft, descarga por Graph). Todo en el navegador; los tokens solo viven en memoria. Los identificadores públicos van en CONNECT de src/config.js; vacíos, los botones no aparecen.select public.dl_admin_activate_plan('[email protected]'); con la cuenta de administrador.api/conexiones/iniciar → ventana de Google/Microsoft → api/conexiones/callback, que guarda el refresh token cifrado (AES-256-GCM, TOKEN_ENC_KEY) en private.dl_connections. El navegador nunca lo ve.pg_cron (minuto 5 de cada hora) llama a api/reportes/cron con la clave guardada en Supabase Vault (datalite_cron_key), que el servidor valida con dl_check_cron_key.src/server/engine.js se empaqueta en api/_lib/engine.js (node build.mjs); usa el mismo lector y cálculo del tablero./reportes/baja) y la cabecera List-Unsubscribe de un clic.TOKEN_ENC_KEY, GOOGLE_CLIENT_SECRET, MICROSOFT_CLIENT_SECRET (además de SMTP_* y SUPABASE_*).https://data-lite.vercel.app/api/conexiones/callback.api/_lib/whatsapp.js ya envía alertas con la API oficial de WhatsApp Business (Meta Cloud API), pero está apagado. Para activarlo:
datalite_alerta (categoría Utilidad, idioma es) con 4 variables: alerta, proyecto, valor y enlace.WHATSAPP_TOKEN (token permanente de usuario del sistema), WHATSAPP_PHONE_ID y, si cambian, WHATSAPP_TEMPLATE y WHATSAPP_LANG.src/app/Schedules.jsx (hoy dice «Próximamente»), pedir los números con autorización del titular y actualizar la política de privacidad.Una tarea programada toma cada semana el primer tema pendiente de content-plan.md, escribe la guía en src/pages/guias/, recompila y abre un pull request con un post sugerido para LinkedIn y otro para X. Para publicar, revisa el PR y haz merge. El índice de guías y el sitemap se actualizan solos.
Los artículos pueden enlazar a la herramienta con un ejemplo ya cargado: /?ejemplo=ventas, /?ejemplo=produccion o /?ejemplo=gastos.