Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Multi-tenant SaaS scaffold for the lead-to-lease loop. Next.js (App Router) on Vercel · Supabase (Postgres + Auth + Row-Level Security).
This milestone is the spine: orgs + auth + per-tenant branding + tenant isolation enforced by Postgres RLS. M2 adds the CRM loop.
app/ landing, login, signup, onboarding, dashboard, auth routes
lib/supabase/ browser + server + middleware Supabase clients
middleware.ts refreshes the session, guards /dashboard + /onboarding
supabase/migrations/ 0001_init.sql — schema, RLS policies, helper functions
scripts/verify-rls.mjs the M1 acceptance test (org A cannot read org B)
Supabase dashboard → SQL Editor → New query → paste all of
supabase/migrations/0001_init.sql → Run. It creates the tables, enables
RLS, defines the policies, and grants the authenticated role its privileges.
Supabase → Authentication → Providers → Email → turn "Confirm email" OFF for now so signups log in instantly. (Re-enable before production.)
Copy .env.local.example to .env.local and fill from Supabase →
Project Settings → API:
NEXT_PUBLIC_SUPABASE_URL — Project URLNEXT_PUBLIC_SUPABASE_ANON_KEY — anon public keySUPABASE_SERVICE_ROLE_KEY — service_role key (only used by the RLS test;
never shipped to the browser)npm install
npm run dev # http://localhost:3000
Sign up → create an organization → land on the branded dashboard → add a property.
node --env-file=.env.local scripts/verify-rls.mjs
Creates two orgs under two users and asserts neither can read or write the
other's rows. Must print ✅ PASS.
vacantless).NEXT_PUBLIC_* env vars (Production + Preview). Do not add
the service_role key to Vercel.https://your-app.vercel.app/auth/callback).organization_id via the
user_org_ids() SECURITY DEFINER helper (no policy recursion).