Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Production-oriented foundation for the multi-tenant automobile dealership CRM defined in AGENTS.md.
The web app has an explicit local visual-preview mode. Preview data is isolated in src/lib/demo-page-repository.ts and is never rendered merely because configuration is missing. Production authorization and domain persistence live at the Supabase boundary.
pnpm install
pnpm dev
Open http://localhost:3000. Normal development requires configured Supabase public values and fails closed they are absent.
For local screenshot/manual QA only, set NEXT_PUBLIC_ENABLE_LOCAL_PREVIEW=true and run pnpm dev. The flag must be the literal true, is honored only when NODE_ENV=development, and exposes a floating role switcher plus isolated sample workspaces. Open / to start on the Sales Consultant dashboard, then use the floating Dev role button to jump directly to any role dashboard. This simulates the UI role preset only; it never changes a real account, permission, or data scope. The flag is ignored by production builds even if accidentally set.
Copy .env.example to .env.local and supply the configured project values. Never expose SUPABASE_SERVICE_ROLE_KEY, Tigris credentials, Brevo credentials, Trigger credentials, encryption keys or provider secrets through NEXT_PUBLIC_* or EXPO_PUBLIC_* variables.
Add the deployed /auth/callback URL to Supabase Auth redirect URLs; the recovery request adds a validated next=/reset-password query. Password-recovery delivery also requires production custom SMTP (Brevo per AGENTS.md). Public NEXT_PUBLIC_* values are embedded at build time, so configure them before the Vercel build rather than only after deployment.
Sample workspace records remain preview-only. Until each live Supabase query/RPC adapter is wired, configured deployments display a closed data-boundary state instead of demo customer or lead data.
Apply the migrations in order and seed catalogs:
supabase db reset
supabase functions serve
Deploy each focused function from supabase/functions/ according to the target Supabase project. Configure provider/Tigris/Brevo secrets through Supabase Edge secrets, not database rows readable by clients.
For Trigger.dev, set TRIGGER_PROJECT_REF and TRIGGER_SECRET_KEY, then deploy the tasks in trigger/ using the current Trigger.dev v4 CLI.
Create mobile/.env.local from mobile/.env.example and set only
EXPO_PUBLIC_SUPABASE_URL and EXPO_PUBLIC_SUPABASE_ANON_KEY. Expo loads environment files from
the mobile/ project directory, and these public values are embedded in the mobile bundle. Never
copy server or provider secrets into that file.
pnpm dlx [email protected] mobile/node_modules/expo/bin/cli start mobile --clear --android
Fully stop the old Metro process before restarting it after any environment change. For EAS builds, configure the same two public values separately in the selected preview or production environment. Provider/service credentials never belong in Expo variables. Test-drive background location requires a development or production build; Expo Go cannot validate every background-location behavior.
pnpm format:check
pnpm lint
pnpm typecheck
pnpm test:api
pnpm build
pnpm --dir mobile typecheck
Automated tests intentionally cover backend/API/domain contracts only. UI validation remains manual per the product contract.
Production release order, environment ownership, rollback guidance and current external blockers are documented in the deployment runbook. Repository deployment commands are pinned, but they are never executed by CI automatically; production changes require an authorized operator and the release gates in that runbook.
Pending is derived work state and never a lead lifecycle value.