Synaplan
기업을 위한 오픈소스 AI 플랫폼
소프트웨어 스튜디오와 팀을 위한 무료 프로젝트 관리
Free project management for software studios and teams: boards, tasks, issues, releases, clients, docs and team chat across all your organizations, with roles and private-by-default data.
비즈니스TypeScript · PLpgSQLGitHub @m-shinan온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
Free, open-source project management for software teams: boards, tasks, issues, releases, clients, docs and team chat. Next.js + Supabase.
README 전체를 불러오는 중입니다.
README 전문 보기 ↗Free, open-source project management for software studios and teams. Kanban boards, tasks, issues, releases, clients, docs and team chat, across any number of organizations with one login, with private-by-default data.
Live app · Architecture · Contributing · Security · License: AGPL-3.0
mso-pm is an MCP server at
https://pm.mshinan.com/api/mcp (or /api/mcp on your own copy). Add that URL
in your AI app, sign in with your mso-pm account, and click Allow:
| App | Where |
|---|---|
| Claude (web and desktop) | Settings → Connectors → Add custom connector |
| ChatGPT | Settings → Connectors, with developer mode on |
| Claude Code | claude mcp add --transport http mso-pm https://pm.mshinan.com/api/mcp, then /mcp to sign in |
| Cursor | .cursor/mcp.json: { "mcpServers": { "mso-pm": { "url": "https://pm.mshinan.com/api/mcp" } } } |
| VS Code | .vscode/mcp.json: { "servers": { "mso-pm": { "type": "http", "url": "https://pm.mshinan.com/api/mcp" } } } |
Tools: list_organizations, list_projects, list_tasks, get_task,
create_task, update_task, add_comment. Then just ask, for example
"What's assigned to me in WEB?" or "Move WEB-41 to Review and comment that it's ready."
Every call runs as you, so the AI sees and changes only what you could in the app, and your teammates get the usual notifications.
Next.js 16 (App Router, Server Components) · Supabase (Postgres, Auth,
Realtime, Vault, pg_cron, pg_net, OAuth 2.1 server) · Tailwind CSS v4 ·
MCP (@modelcontextprotocol/server, @supabase/server) · Cloudflare R2 for
files · Resend for email · Vercel for hosting.
Every table has row-level security, so the database itself decides who can
read or change what: the UI only hides what you can't do. The model, schema
and trade-offs are in docs/ARCHITECTURE.md, and
tests/rls.test.ts checks them against a real database with real users.
Everything below fits in free tiers: Supabase (database and auth), Vercel Hobby (hosting, personal and non-commercial use), Cloudflare R2 (10 GB of files, free downloads) and Resend (3,000 emails a month).
Create a project at supabase.com.
cp .env.example .env.local and fill in the Supabase values (Project
Settings → API keys and Database → connection string, session pooler).
Apply the schema and make yourself the platform admin:
npm install
npm run db:push
node --env-file=.env.local scripts/platform-admin.mjs [email protected]
npm run dev # http://localhost:3000
Sign up with the email you made admin, confirm it with the code, and create an
organization. In Supabase → Authentication → URL Configuration, add your app's
URLs to the redirect list (http://localhost:3000/** and your production URL).
Supabase's built-in email only reaches members of your Supabase team, so add your own sender before inviting anyone:
In Resend, verify your domain and create an API key.
Supabase → Authentication → Emails → SMTP: host smtp.resend.com, port
465, user resend, the API key as password, and your sender address.
Store the same settings for notification emails (read from the environment, so the key never lands in your shell history):
RESEND_API_KEY=re_... node --env-file=.env.local scripts/email-setup.mjs "mso-pm <[email protected]>" https://your-app.example
After deploying (step 5), switch the sign-up and reset emails to codes:
node --env-file=.env.local scripts/auth-emails.mjs (needs
SUPABASE_ACCESS_TOKEN).
mso-pm-attachments) and add a CORS rule that
allows GET and PUT with header content-type from your app's origins.R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY and
R2_BUCKET in .env.local.Without R2, everything works except attachments, which say storage isn't set up.
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗