Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
PM tool for Every project in the world
翻譯準備中
正在載入完整 README。
檢視完整 README ↗If everyone could see the whole board, most status meetings wouldn't need to exist. So here, everyone sees the whole board.
For reviewers: Solo-built work-management platform in production at Alembic Pharmaceuticals (5 teams, ~40 users). ~62k lines TypeScript, 294 unit tests, 5 E2E specs. Key decisions: no AI on scoring paths, hand-rolled auth, append-only audit trail, single permissions table for UI + API.
Run your own in ~10 minutes — free tiers end to end, first account created in the browser:
The full path — including using it solo, e.g. tracking an exam with a hard
date: docs/SELF_HOSTING.md.
Live app — look around with a demo account, nothing to set up:
| Password | Role | |
|---|---|---|
[email protected] | Demo@1234 | Team Lead (best first look) |
[email protected] | Demo@1234 | Individual Contributor |
These are public demo accounts on a public demo workspace — don't put anything
real in them. Details: docs/DEMO_ENVIRONMENT.md.
Project and task management for teams, built on one question: why does a contributor only get to see their own slice? There's no good reason — so here they don't. Everyone gets a view of everything moving in their team, plus a truly private personal space nobody else can see, admins included. Born in pharma quality work, so every change is recorded and nothing is quietly deleted; the model itself works anywhere. Invite-only — there is no public sign-up. Request access at pragatialm.vercel.app/request-access.
| Role | What they see |
|---|---|
| Contributor | Their tasks, their day, and private personal projects invisible to everyone else. |
| Team Lead | Their teams, projects and tasks; assigns work; tracks progress. |
| Admin | The whole workspace, user management, the audit log. |
These aren't features so much as defaults:
Solo-built, in production. These numbers come from the repo itself — npm test, find, git log — not from a pitch:
| ~62,000 lines of TypeScript | 93 API route handlers |
| 19 Mongoose models | 294 unit tests + 5 end-to-end specs, all green |
| 675+ commits of real iteration | Typecheck · lint · test · build gated on every push |
Decisions worth a closer look — each one started by questioning a default:
src/lib/ai/*) are plain,
deterministic, unit-tested code. You can't debug a model weight; you can
debug a line.src/lib/permissions.ts is the single source of
truth, imported by both sides — so what a role sees and what it can do can
never disagree.src/lib/quickAddParse.ts) extracts the
date, the priority, and a clean title. No library needed.src/lib/ai/slipRisk.ts).flowchart LR
Browser["Browser (client components)"] -->|httpOnly JWT cookie| Edge["Next.js route handler / RSC"]
Edge -->|validateSession| Auth["lib/auth + lib/jwt"]
Edge -->|await connectDB| DB[("MongoDB / Mongoose")]
Edge -->|Zod validate| Validations["lib/validations"]
Edge -->|logOperation| Audit[("Audit log\n(append-only)")]
Edge -->|serialize| Browser
Reads go straight from server components to the data layer; every change flows
through a validated route handler and lands in the audit trail. Deep dive:
docs/ARCHITECTURE.md · how it scales:
docs/SCALING.md.
以上為 README 的開頭部分。其餘內容請閱讀原文。 檢視完整 README ↗