Synaplan
開源 AI 平台,供企業使用:自行託管的 AI 代理、符合 GDPR 的聊天機器人小工具、RAG 知識庫、WhatsApp 與 Outlook AI、MCP、多模型路由。Docker、Kubernetes 或託管於 Germ
AI 翻譯
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Single-file IT PMO Kanban board demo for a fictitious bank: vanilla HTML/CSS/JS, in-memory state, drag-and-drop, accessible keyboard moves, FormSubmit email notifications
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A single-file Kanban board for the IT Project Management Office of a fictitious bank, built as an internal demo/training app. It is plain HTML, CSS and JavaScript in one index.html, with no build step and no dependencies.
Live demo: https://alfredang.github.io/kanban8/
UOB-ITPM-0009.prefers-reduced-motion.[email protected]), so no notification goes anywhere until you configure it (see below).Either open index.html directly in a browser, or serve the folder:
python -m http.server 8000
# then open http://localhost:8000/
Serving over HTTP is the better option if you want to test the FormSubmit email call.
All configuration is in the CONFIG block at the top of the <script> in index.html:
| Constant | Purpose |
|---|---|
FORMSUBMIT_ENDPOINT | https://formsubmit.co/ajax/<your-address>. Replace [email protected]. |
ID_PREFIX | Prefix for task IDs (UOB-ITPM-) |
EMAIL_SUBJECT_TAG | Subject-line tag on notification emails |
FormSubmit setup:
FORMSUBMIT_ENDPOINT. That constant is the only place the code reads it from. The HTML comment above the script and CLAUDE.md also mention the placeholder, but they are documentation only.success: "false", and the app treats that answer as a failure.The task is always added to the board first. If the email fails, you only see a warning toast and the card stays on the board.
Reference data lives in constants near the top of the script: STATUSES, PROJECTS, CATEGORIES and PRIORITIES. These constants fill the dropdowns and act as allow-lists for validation. The CSS has rules keyed on status and priority values (.column[data-status="…"] and .card.prio-<slug>), so if you rename a value, update the matching CSS as well.
.github/workflows/pages.yml runs on GitHub Actions:
check runs on every push, pull request and manual dispatch. It scans the full git history for secrets with gitleaks, fails if index.html is missing, and fails if FORMSUBMIT_ENDPOINT no longer uses the placeholder address (so a real address can't reach the public site by accident).deploy runs after check passes on a push to main or a manual workflow_dispatch. It copies only the public site files (index.html and docs/) into _site/ and publishes that to GitHub Pages. CLAUDE.md, .github/ and other repo files are not deployed.index.html The whole app: HTML, CSS and JS
docs/screenshot.png Screenshot used in this README
.github/workflows/pages.yml CI checks and GitHub Pages deploy
CLAUDE.md Architecture notes for AI coding assistants
README.md This file
index.html. Don't add a build step, package manager or framework.state, then call renderBoard()" pattern. There is no incremental DOM patching.escapeHtml(). Toasts use textContent.data-action. To add one, add a button in renderCard() and a matching case in handleBoardClick.state.ui.focus so keyboard users keep their place.:root (palette, --space-1..6, radii, shadows) instead of hard-coded values. Put new code in the numbered banner-comment section it belongs to.See CLAUDE.md for a fuller architecture walkthrough.
There is no automated test suite. To test, open the page and work through the flows by hand: add a task (including the validation errors), filter, drag and drop, use the Move menu with the keyboard, delete, and check the layout at the 1100px and 767px breakpoints.