Synaplan
开源 AI 软件平台,面向企业:自托管 AI 代理,符合 GDPR 的聊天机器人小部件,RAG 知识库,WhatsApp 与 Outlook AI,MCP,多模型路由。支持 Docker、Kubernetes 或在 Germ 托管。
AI 翻译
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证正在加载完整 README。 以下为已保存的摘录。
A concept prototype for a Referral Status System — a way for a job seeker to
request a referral through their network and follow its status transparently,
without repeatedly nudging the referrer.
Concept prototype — not affiliated with or endorsed by LinkedIn.
Built for a portfolio demo only. It uses the LinkedIn logo, colours and system
font, with mobile patterns matched to the LinkedIn iOS app (via Mobbin), so the
concept can be judged in context. The in-app footer keeps the disclaimer visible.查看完整 README ↗A concept prototype for a Referral Status System — a way for a job seeker to request a referral through their network and follow its status transparently, without repeatedly nudging the referrer.
Concept prototype — not affiliated with or endorsed by LinkedIn. Built for a portfolio demo only. It uses the LinkedIn logo, colours and system font, with mobile patterns matched to the LinkedIn iOS app (via Mobbin), so the concept can be judged in context. The in-app footer keeps the disclaimer visible.
lucide-react iconslocalStorage (survives refresh)npm install
npm run dev # http://localhost:5173
npm run build # type-check + production build
npm run preview # preview the production build
There is no auth. A role switcher in the top bar (a demo-only control) flips
between the two perspectives that share the same localStorage data:
| Route | Role | Purpose |
|---|---|---|
/messaging | Both | Inbox + 1:1 threads with the inline Referral Request card |
/jobs | Requester | Job Tracker: ask a connection at the company for a referral |
/compose | Requester | Create a Referral Request (job + resume required → review → send) |
/status/:id | Both | Current status, what it means, full history; Withdraw (requester) / update (referrer) |
/notifications | Both | Status updates land here for the requester, with an unread badge on the bell |
/my-jobs | Requester | List of all the requester's referral requests |
/feedback | Facilitator | Test responses saved in this browser, with CSV export (not linked in the UI) |
The stored values follow the PRD object model; people see plain labels.
| Stored | Shown as | Who sets it | Meaning |
|---|---|---|---|
| Pending | Sent | System, on creation | Waiting on the referrer |
| Considering | Looking into it | Referrer | Seen and being worked on; still open |
| No Update Received | No reply yet | System only | The referrer has not answered a Sent request for seven days (a design assumption; the timer is not built, the state is staged). It never replaces Looking into it; reversible by any later update |
| Referred | Referred | Referrer | Done: the referral was made (final) |
| Unable to Refer | Can’t refer | Referrer | Done: the referrer can’t refer this time (final) |
| Withdrawn | Withdrawn | Requester | The requester no longer needs it |
First-time visitors get a 4-screen intro, then a dark guide bar under the header names their next step through the whole journey (ask as Albin → switch to Alex → respond → switch back → see the update). When they reach the final status, a short survey opens: experience rating, whether the feature is useful and why, and what could be better.
Each browser tab counts as one visit. If a new visit finds a finished journey, or one idle for 30+ minutes, it starts fresh automatically; if someone stopped mid-way recently, it asks whether to continue or start fresh. A refresh never resets progress, and collected feedback is never cleared.
Responses are always saved in the tester's browser (see /feedback). To collect
them from remote testers, create a free Formspree form
and set its URL as an environment variable (locally in .env.local, and in
Vercel under Project → Settings → Environment Variables):
VITE_FEEDBACK_ENDPOINT=https://formspree.io/f/yourFormId
?fail=1 makes the next send fail.StatusUpdate (single source of truth — avoids the two-sources-of-truth bug).ALLOWED_TRANSITIONS is the single source of truth for which status-change
actions render anywhere in the app. Terminal states offer no actions.No Update Received can move back to
Considering, Referred, or Unable to Refer — a later human action always wins.Withdrawn is treated as terminal here, but no UI asserts permanence — that
product decision is deliberately left open.These decisions trace to the source PRD (kept alongside the project handoff).