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.