Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗The CUEPA marketing site and client proposal pages.
Next.js 16 (App Router) · React 19 · TypeScript · plain CSS · deployed on Vercel.
npm install
npm run dev # http://localhost:3000
npm run build # production build
npm start # serve the production build
npm run lint
npx tsc --noEmit
Vercel builds production from main, serving makingcuepa.com and
www.makingcuepa.com. Every other branch deploys as a preview.
Preview deployments and all *.vercel.app URLs sit behind Vercel SSO, so only
the account owner can open them. Custom domains are exempt — makingcuepa.com
is the URL to share with anyone else.
| Route | What it is |
|---|---|
/ | The marketing site |
/contact | Email capture |
/api/contact | Sends form submissions through Resend |
/cirques-experience | Client proposal (noindex, not in site nav) |
/cirques-experience/operations-hub | Phase One dashboard concept, illustrative data only |
/cirques-experience/approved | Terms sheet and electronic signature |
The three /cirques-experience routes are noindex and deliberately absent
from the site navigation. They are reachable only by direct link.
| Variable | Purpose |
|---|---|
RESEND_API_KEY | Required. Without it /api/contact returns 503 and the forms say so rather than failing silently. |
CONTACT_TO | Where submissions go. Defaults to [email protected]. |
CONTACT_FROM | From address. Defaults to Resend's shared sender. |
Fonts load via <link> in app/layout.tsx, not @import. Next's CSS
pipeline strips remote @import from bundled stylesheets, which silently drops
every webfont and ships the site in Arial. If you add a family, add it to that
<link>.
app/globals.css and app/motion-refine.css set bare-element rules —
h2 { … } and h1,h2,h3,h4 { font-family: 'Archivo Black' } among them. Those
outrank a single class, so scoped stylesheets have to declare font-family and
margins explicitly rather than relying on inheritance. Both .cx and .hub
wrap their resets in :where() for the same reason.
Client proposal configuration lives in named constants at the top of the files that use it:
app/cirques-experience/page.tsx — APPROVE_URL, CONTACT_EMAIL, HUB_URLapp/cirques-experience/approved/page.tsx — SIGNER_EMAILapp/cirques-experience/approved/agreement.ts — the terms being signed, and
a VERSION string. Change the price or timeline on the proposal and change it
here too: this text is what ends up inside a signed record, and it has to
match what the client read. Bump VERSION when it changes.public/cirques-hub-preview.png is a captured render of
/cirques-experience/operations-hub, used in the proposal hero. If the hub's
layout changes, regenerate it from the live route or it goes stale.