Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Versión actual: v1.0.0
Aplicación SaaS multiempresa construida con Next.js 15, TypeScript, Tailwind CSS, componentes estilo Shadcn UI y Supabase.
app/(auth): autenticación con Supabase Auth.app/(app): área protegida y responsive.components: shell, dashboard, notificaciones y componentes UI reutilizables.lib/supabase: clientes para browser, server components y middleware.lib/tenant.ts: resolución de empresa activa, usuario y rol.lib/security.ts: sanitización, rate limiting y protección de origen.supabase/migrations: esquema SQL completo con llaves foráneas, índices, auditoría, RLS, Storage y Realtime.app/
(auth)/ Login, registro
(app)/ Área protegida: activos, mantenimientos, agenda, informes, usuarios, settings...
api/ Rutas API: Google OAuth, feeds de calendario, cron jobs, informes
calendar/public/ Página pública de disponibilidad (sin autenticación)
components/ Componentes React reutilizables (shell, calendario, informes, UI base)
lib/
actions/ Server Actions (mutaciones)
email/ Plantillas, envío SMTP/Resend, cola de correo
google/ OAuth y sincronización con Google Calendar
reports/ Generadores de PDF/Excel
supabase/ Clientes Supabase (browser/server/admin)
supabase/
migrations/ Migraciones SQL numeradas (idempotentes)
seed/ Datos de prueba (solo para desarrollo/QA)
docs/ Documentación técnica y de producción
Software propietario desarrollado para Progrúas S.A.S. Todos los derechos reservados — no distribuir sin autorización.
cp .env.example .env.local
npm install
npm run dev
Ver .env.example para la lista completa comentada. Resumen:
| Variable | Requerida | Descripción |
|---|---|---|
NEXT_PUBLIC_SUPABASE_URL | Sí | URL del proyecto Supabase |
NEXT_PUBLIC_SUPABASE_ANON_KEY | Sí | Clave pública (anon) de Supabase |
SUPABASE_SECRET_KEY | Sí | Clave de servicio (server-only, nunca exponer al cliente) |
APP_URL | Sí | URL base del despliegue (sin / final), usada para OAuth de Google |
SMTP_CREDENTIALS_ENCRYPTION_KEY | Sí para SMTP | Frase usada para cifrar las contraseñas SMTP guardadas por cada empresa |
RESEND_API_KEY / RESEND_FROM_EMAIL | No | Respaldo de envío de correo si una empresa no configuró su propio SMTP |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET | No | Habilitan la sincronización con Google Calendar |
GOOGLE_TOKEN_ENCRYPTION_KEY | No (requerida si se usa Google) | Frase usada para cifrar los tokens OAuth de Google |
CRON_SECRET | Recomendada en producción | Protege los endpoints app/api/cron/* llamados por Vercel Cron |
Ninguna variable con secretos reales debe commitearse — .gitignore excluye todos los .env* salvo .env.example.
El proyecto está pensado para desplegarse en Vercel:
supabase/migrations/ sobre el proyecto Supabase de producción (ver sección siguiente).app/api/cron/reminders, app/api/cron/email-queue y app/api/cron/expirations según vercel.json.Para despliegue alternativo en un VPS propio, ver Despliegue en Hostinger VPS.
En el editor SQL de Supabase, aplica todos los archivos de supabase/migrations/
en orden numérico (001 → el número más alto disponible). Todas las migraciones son
idempotentes, así que volver a correrlas no causa daño. No apliques nada de
supabase/seed/ en una instalación de producción real — esos archivos insertan datos
de prueba y solo sirven para un entorno de QA/desarrollo desechable.
supabase/repairs/ y supabase/diagnostics/ son notas históricas de sesiones de
depuración anteriores, ya incorporadas a las migraciones numeradas; no hace falta
correrlas.
Cada tabla operativa incluye company_id. La aplicación consulta e inserta usando la empresa activa del usuario, y Supabase RLS bloquea cualquier acceso fuera de la empresa.
Roles soportados:
SUPER_ADMINADMINSUPERVISOROPERARIOEl panel principal recalcula: