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: