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.