Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。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.