Lalabase
Tickets, Doku, Zeiterfassung und Kundengespräche an einem Ort, durchsuchbar per KI. Für Softwarefirmen mit Kundenprojekten. Open Source: auf deinem eigenen Server oder in unserer Cloud in Deutschland.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Repositorio para desarrollos para la marca Café de mi Tierra
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
Café de mi Tierra — Panel Administrativo Sistema administrativo interno para la gestión operativa y financiera de Café de mi Tierra: ventas, facturación, inventario, cuentas por cobrar, comisiones de vendedores e informes gerenciales. Sistema en producción con datos reales. Los cambios de esquema en Supabase se ejecutan manualmente y con cuidado — ver Base de datos. • Next.js 16 (App Router) + React 19 + TypeScript • Supabase — Postgres, Auth y RLS como backend • Tailwind CSS 4 • Recharts para gráficos, ExcelJS para informes descargables, Resend para envío de facturas por correo檢視完整 README ↗
Sistema administrativo interno para la gestión operativa y financiera de Café de mi Tierra: ventas, facturación, inventario, cuentas por cobrar, comisiones de vendedores e informes gerenciales.
Sistema en producción con datos reales. Los cambios de esquema en Supabase se ejecutan manualmente y con cuidado — ver Base de datos.
npm install
cp .env.local.example .env.local # completar con las credenciales de Supabase/Resend
npm run dev
Abrir http://localhost:3000.
| Variable | Uso |
|---|---|
NEXT_PUBLIC_SUPABASE_URL | URL del proyecto Supabase |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Cliente público (respeta RLS) |
SUPABASE_SERVICE_ROLE_KEY | Solo server-side; usada en rutas API que necesitan bypass de RLS |
RESEND_API_KEY | Envío de facturas por correo |
NEXT_PUBLIC_APP_URL | Base URL de la app (links en correos, callbacks de auth) |
Todo el panel vive bajo app/(dashboard)/, protegido por sesión de Supabase Auth:
| Módulo | Descripción |
|---|---|
dashboard | Vista general del negocio |
pedidos | Registro y consulta de pedidos, con filtro por rango de fechas |
facturas | Facturación y envío por correo (Resend) |
clientes | Gestión de clientes |
productos | Catálogo de productos |
inventario | Movimientos de stock |
compras | Registro de compras a proveedores |
cajas | Control de caja y movimientos |
cuentas-cobrar | Cartera de clientes, pagos parciales |
comisiones | Liquidación de comisiones de vendedores (ver detalle abajo) |
informes | Reportes con rango de fechas personalizado y desempeño por vendedor |
configuracion | Administración de catálogos (presentaciones, tipos de producto, tarifas) |
usuarios | Gestión de usuarios y roles |
profiles.role es uno de: admin, seller, consulta. El rol consulta es de
solo lectura (ver lib/perfil-context.tsx); las políticas RLS en Supabase son la
fuente de verdad de los permisos, no el cliente.
Modelo clave del sistema, documentado aquí porque no es obvio desde el código:
presentations.comision guarda la tarifa vigente, editable en
Configuración › Presentaciones.order_items.comision_unitaria guarda la comisión congelada al momento de
la venta — un trigger en Postgres (supabase/comisiones_trigger_congelar.sql)
la copia desde presentations en cada INSERT.NULL y 0 significan cosas distintas: NULL es "sin tarifa definida" (se
reporta como advertencia y liquida en $0 sin estimar nada); 0 es "definida,
no paga comisión".app/api/comisiones/route.ts) con
hoja de detalle, resumen por vendedor y tarifas vigentes.El esquema completo y las migraciones incrementales viven en supabase/:
schema.sql — esquema base (tablas, RLS, funciones)No hay un runner de migraciones automatizado: cada script se revisa y se ejecuta a mano contra la base de producción.
npm run dev # servidor de desarrollo
npm run build # build de producción
npm run start # servidor de producción
npm run lint # eslint
Optimizado para Vercel, pero cualquier plataforma con soporte para Next.js 16 funciona. Recordar configurar las mismas variables de entorno en el entorno de despliegue.