Bops
A team of AI bots that runs your business ops: inbox, pipeline, invoices, reports. Each one has its own computer, email and phone number, and remembers everything.
翻译准备中
尚未收集仓库信息。
尚未检测到更新。GitHub 发布版本后会显示在这里。
制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Live demo (v2, cartoon revamp): https://alfredang.github.io/kanban11/v2/ Original v1: https://alfredang.github.io/kanban11/
A single-file Kanban board demo for an IT PMO, built with vanilla HTML/CSS/JS. All markup, styles and script live in index.html.
Tasks are seed/demo data (IDs UOB-ITPM-0001–0008; due dates are computed relative to today). The notification email is the placeholder [email protected].
Open index.html in a browser (Start-Process index.html on Windows). No server or build needed.
Set your notification address in one place only: FORMSUBMIT_ENDPOINT in the config section at the top of the <script>. FormSubmit requires a one-time email activation per address (see the HTML comment above the script); until activated, new-task notifications are not delivered (the board still works, a warning toast is shown).
GitHub Actions (.github/workflows/pages.yml) deploys the repo root to GitHub Pages on every push to main. A check job runs node --check on the extracted script block first; deploy only runs if it passes.
localStorage, cookies, etc.); a refresh resets to seed data.!important; colours/spacing come from :root custom properties.escapeHtml(); board DOM is built only in renderBoard()/renderCard(); events are delegated on #board.There is no test suite. Syntax check of the script block:
sed -n '/^<script>/,/^<\/script>/p' index.html | sed '1d;$d' > "$TEMP/k.js" && node --check "$TEMP/k.js"
v2/)prefers-reduced-motion: no-preference.#board, #visual, #timeline): Board (drag-and-drop Kanban), Visual (KPIs, status donut, priority bars, per-project stacked bars, overdue rescue list), Timeline (Gantt-style start-to-due bars with a Today marker). The filters apply to all three.script-src 'self', style-src 'self', connect-src https://formsubmit.co, form-action 'none', base-uri 'none', object-src 'none'), enabled by splitting the app into index.html / styles.css / app.js (no inline code).innerHTML: the DOM is built with createElement/textContent, so user text is never parsed as HTML.credentials: omit, redirect: error, no-referrer, frame-busting, and inert background while the modal is open.v2/ for innerHTML, eval, !important, storage APIs and inline code.frame-ancestors/HSTS cannot be set (frame-busting JS is used instead).