Markdown Task Manager
A single-file, local-first Kanban board that turns plain Markdown files into a drag-and-drop task manager, with no server, database, or account required.
Repository Health
Technical Analysis
Markdown Task Manager is a standalone, single-HTML-file Kanban board that uses the browser’s File System Access API to read and write tasks directly to plain Markdown files (kanban.md and archive.md) on your local disk. There’s no server, no database, no account, and no installation beyond downloading one HTML file and opening it in a Chromium-based browser.
Because tasks live as plain text, the board doubles as a git-friendly task tracker: files can be committed, diffed, and reviewed alongside code, and multiple projects are supported through a recent-projects switcher backed by IndexedDB for remembered folder handles. The board itself supports customizable columns, drag-and-drop, priorities, categories, multi-user assignment, tags, due dates, subtasks with progress bars, and a hand-rolled Markdown-to-HTML renderer for task descriptions and notes.
The project leans deliberately into AI-assisted development workflows: it defines a strict Markdown task format and ships ready-made instruction files (and a dedicated Claude Code skill) for Claude, GitHub Copilot, ChatGPT, Gemini, Qwen, and other assistants, so an AI pair programmer can create, update, and archive tasks in the same file a human edits, with each change traceable back to git commits.
The entire app builds from a small set of numbered JavaScript and CSS partials concatenated by a custom Node build script into one dependency-free HTML file, keeping the codebase easy to audit and the output trivially portable — copy the file anywhere, or centralize one copy and point it at different project folders.
What You Get
- Single-file, zero-install Kanban board that runs entirely in the browser
- Direct read/write access to local kanban.md and archive.md files via the File System Access API
- Customizable columns, drag-and-drop, priorities, tags, categories, multi-user assignment, and due dates
- Subtasks with checkable items and an automatic progress bar per task
- Multi-project support with a recent-projects switcher persisted in IndexedDB
- Built-in dark mode, responsive layout, and touch drag-and-drop for mobile
- Ready-made AI assistant integration (Claude, Copilot, ChatGPT, Gemini, and more) via a strict Markdown task format and a dedicated Claude Code skill
- Multilingual UI (English, French, German, Simplified Chinese)
Common Use Cases
- Solo developers who want a lightweight, git-versioned Kanban board without spinning up Trello or a project-management SaaS
- Teams that want task data to live in the repo itself, reviewable in pull requests alongside code changes
- Developers pairing with AI coding assistants who want tasks, subtasks, and progress notes captured in a strict, machine-readable Markdown format
- Users who need an offline-first task tracker with no account, subscription, or server dependency
- Distributed or remote teams synchronizing tasks through git instead of a hosted tool
Under The Hood
Architecture The app builds via build.mjs, which concatenates numbered partials from src/scripts (01-state.js through 12-init.js) and src/styles into a single self-contained task-manager.html, with no bundler or module system — plain global-scope classic scripts relying on load order (numeric filename prefixes) and shared mutable state (tasks, config, directoryHandle in 01-state.js). It’s a monolithic single-page app decomposed by concern (state, storage, io, markdown, board, filters, columns-form, task-detail, archive, i18n, generate, init), but with no module boundaries or dependency injection — everything communicates through shared globals and DOM queries. That’s intentional given the project’s goal of a single dependency-free HTML file, but it makes the codebase tightly coupled; changing the shape of the core tasks array would ripple through storage, markdown, board, and archive files alike.
Tech Stack No frontend framework is used — vanilla JS, HTML, and CSS only. Persistence relies on two browser-native mechanisms: the File System Access API (showDirectoryPicker, file handles) to read/write kanban.md/archive.md directly on disk, and IndexedDB (03-storage.js) to remember recent project directory handles across sessions. Build tooling is a small custom Node script (build.mjs) with html-minifier-terser as the sole devDependency, concatenating src/styles/.css and src/scripts/.js (ordered by numeric filename prefix) into placeholders in src/index.html, with an optional —dev unminified mode. There’s no bundler, no test runner, and no CI configuration. The deployment target is simply the static HTML file itself; only Chromium-based browsers (Chrome, Edge, Opera 86+) are supported since the File System Access API isn’t available in Firefox or Safari.
Code Quality No test files or CI configuration exist in the repository — quality assurance appears to rely on manual testing. Error handling is present but ad hoc: async functions wrap IndexedDB and File System Access calls in try/catch with console.error and user-facing notifications, but there’s no centralized error boundary. The custom Markdown-to-HTML renderer shows some security awareness — it escapes HTML before applying formatting and validates link URL schemes to block javascript:/data: URIs — but is a hand-rolled regex-based parser rather than a battle-tested library, which raises the risk of edge-case bugs. Naming is descriptive and consistent, but there’s no TypeScript, no linter or formatter configuration, and no module system — scripts run as classic globals relying on load order, which is fragile at this codebase’s size.
What Makes It Unique The distinctive design choice is treating Markdown files themselves as the single source of truth for a Kanban board, using the File System Access API to read and write kanban.md/archive.md directly with no server, database, or account, so task data stays plain-text, git-diffable, and editable by hand. The project explicitly designs around AI-assisted workflows: it ships a companion Claude Code skill and instruction templates for several AI assistants so an AI pair-programmer can create and update tasks in the same strict Markdown format a human would edit, giving a lightweight audit trail linked to git commits. That’s a specific and current niche — AI-native task tracking — rather than a novel UI or parsing algorithm, since the Kanban board and Markdown rendering themselves use standard techniques.
Self-Hosting
Licensing Model Mozilla Public License 2.0 (MPL-2.0) — a permissive, file-level copyleft license. You can use, modify, and distribute the code, including commercially, but modified versions of the MPL-2.0-covered source files must remain under MPL-2.0 with their source made available.
Self-Hosting Restrictions None found. There is no separate paid tier, license key, or gated feature set — it’s a single static HTML file with no backend to restrict.
Enterprise Features None — there is no enterprise or paid tier. All functionality (Kanban board, filters, multi-project support, archiving, AI-assistant integration) ships in the one open-source HTML file.
Cloud vs Self-Hosted Not applicable — there is no hosted or cloud offering. The application runs entirely client-side in the browser and reads/writes directly to local files; nothing is sent to a server.
License Key Required No.
Related Apps
deepseek-harness
AI Agents · AI Development · Developer Tools
An open-source, plugin-based agent harness from DeepSeek AI that runs coding and automation agents across web, desktop, CLI, and SDK surfaces.
AutoGPT
Automation · Productivity · AI Assistants
Build, deploy, and run autonomous AI agents that automate complex multi-step workflows using a visual block-based graph editor.
Ollama
AI Development · Developer Tools
Run Llama, Gemma, DeepSeek, and other open LLMs on your own machine with one command and an OpenAI-compatible API.