Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
SALPER · Sistema de gestión de órdenes de producción App para reemplazar el seguimiento en papel de las órdenes de producción de SALPER (sublimación, uniformes escolares, industrial). Cualquiera con acceso al link puede ver en qué etapa va cada orden sin tener que preguntar. Stack: React + Vite (frontend) · Supabase (Postgres + Storage + API + realtime). Sin backend propio: el navegador habla directo con Supabase usando la "anon key" pública, protegida por Row Level Security y funciones RPC (ver supabase/schema.sql, supabase/schema_v2.sql y supabase/schema_v3.sql).查看完整 README ↗
App para reemplazar el seguimiento en papel de las órdenes de producción de SALPER (sublimación, uniformes escolares, industrial). Cualquiera con acceso al link puede ver en qué etapa va cada orden sin tener que preguntar.
En vivo: https://salper-ordenes.vercel.app
Stack: React + Vite (frontend) · Supabase (Postgres + Storage + API +
realtime). Sin backend propio: el navegador habla directo con Supabase
usando la "anon key" pública, protegida por Row Level Security y funciones
RPC (ver supabase/schema.sql, supabase/schema_v2.sql y supabase/schema_v3.sql).
Identidad visual: blanco (fondo) → negro (texto) → amarillo (dentro de
botones negros + acentos puntuales) → naranja (pocos detalles). Rojo y
verde quedan reservados exclusivamente como indicadores de estado (orden
atrasada / completada) — nunca decorativos. El logo real de SALPER está
pendiente de integrar (por ahora hay una insignia con el nombre en texto,
ver src/components/layout/Logo.jsx — es el único lugar que hay que tocar
cuando llegue el archivo).
Estados de una orden (fijos, en este orden):
En confirmación → Confirmado → Cortado → Sublimado → En producción → Completado
Estas cosas ya tienen un lugar pensado en el modelo de datos o la estructura de carpetas, pero no tienen UI ni lógica todavía:
| Función | Qué ya existe | Qué falta |
|---|---|---|
| Roles (admin/producción/consulta) | Comentario con tabla profiles sugerida en schema.sql | Login, tabla real, políticas RLS por rol |
| Links compartibles por orden | Columna orders.share_token (uuid único) ya se genera para cada orden | Vista pública de solo lectura filtrando por ese token |
| Notificaciones | Comentario con tabla notifications sugerida en schema.sql | Trigger/servicio que dispare avisos (email, WhatsApp, etc.) |
src/
lib/ # cliente de Supabase, constantes (estados, colores)
services/ # única capa que habla con Supabase (CRUD + RPC + realtime)
hooks/ # useOrders, useOrder, useOrderTypes (fetching + estado)
utils/ # fechas, slugs, helpers de estado — sin dependencias de UI
components/
layout/ # AppLayout (header + nav)
orders/ # tarjetas, badges, filtros, stepper, cambio de estado, historial
calendar/ # ProductionCalendar (vista Gantt semanal)
common/ # loading/error/empty states, pantalla de config faltante
pages/ # una página por ruta (Dashboard, Nueva orden, Detalle, Calendario)
supabase/
schema.sql # esquema base: órdenes, tipos, historial, RLS, realtime
schema_v2.sql # fotos (Storage), anuncios, pendientes
schema_v3.sql # prendas (orders.items) y plantillas de orden
La idea de esta separación: para agregar roles o notificaciones más
adelante, normalmente solo se toca services/ + una tabla nueva en un
schema_v4.sql, y se agrega un componente/página — sin tener que
reescribir el resto.
Necesitas Node.js 18 o superior instalado.
npm install
cp .env.example .env
Llena .env con los datos de tu proyecto de Supabase (Project Settings →
API → Project URL y anon public key).
Luego, en el SQL Editor de tu proyecto de Supabase, pega y corre todo
el contenido de supabase/schema.sql. Esto crea las
tablas, los tipos de orden iniciales (sublimación/escolar/industrial), las
funciones de creación/cambio de estado, las políticas de seguridad y
habilita realtime.
Después, corre también supabase/schema_v2.sql
(agrega el bucket de Storage para fotos, y las tablas de anuncios y
pendientes), y luego supabase/schema_v3.sql
(prendas de la orden y plantillas).
Finalmente:
npm run dev
Abre la URL que te muestre la terminal (normalmente http://localhost:5173).
VITE_SUPABASE_URL y VITE_SUPABASE_ANON_KEY.main vuelve a desplegar solo.El proyecto ya está configurado para esto (base: './' en vite.config.js
HashRouter, así que no necesitas configurar reescritura de URLs):npm run build
npx gh-pages -d dist
(La primera vez, instala la dependencia de despliegue: npm install -D gh-pages.)
Como GitHub Pages sirve sitios estáticos sin variables de entorno en build
time del lado del servidor, las variables VITE_* quedan "quemadas" en el
build que corras localmente — asegúrate de tener tu .env correcto antes
de correr npm run build.
Sin login todavía, las políticas de Supabase dejan la lectura abierta
a quien tenga la anon key (necesario para que cualquiera en el equipo vea
el estado de las órdenes sin credenciales). Las escrituras no tienen
policy directa de INSERT/UPDATE: solo pasan por las funciones
create_order, update_order_status y create_order_type (security definer), que validan los datos antes de tocar las tablas. Cuando se
agregue autenticación y roles, lo que hay que endurecer es:
select using (true) por unas que revisen
auth.uid() / el rol del usuario.anon y
authenticated pueden ejecutar las tres).npm install / npm run dev / npm run build en esta
sesión (el entorno no tenía Node.js) — verifícalo tú antes de confiar
en que compila sin errores.