dotodo local markdown driven project management app
Try now GitHub

PROJECT MANAGEMENT APP FOR CHAMPIONS

Ship fast with a secure, versatile app

dotodo blends a tactile board with Markdown-first storage so your projects stay portable, private, and frictionless.

Feature

Built to keep work calm and focused.

A local-first board with thoughtful guardrails and no noise.

Safe and sound

Your data stays on-device, backed by local storage and Markdown.

Fast to navigate

Drag, drop, and scan columns without losing context.

Private by default

No accounts or trackers. You own every line.

Keyboard shortcuts

Fast navigation and action without leaving the keys.

Import and export dotodo file

Move projects in and out with a single Markdown format.

UI-only mode

Use it purely as a board without linking a file.

Link a local md file for UI sync

Commit it alongside the rest of your codebase.

Markdown

Integration with coding agent

Integration for coding agent

Add the following to agent.md and let the coding agent read and update task md file:

# dotodo - Markdown Task Editing Instructions

  Use the Markdown format below to update tasks. You may:
  - Update **status** by moving tasks under the correct section.
  - Create **new tasks** by adding new lines (omit `id` to create).
  ## Format

  # Project: Name (id:UUID)   # optional, do not change id unless instructed

  ## TODO

  ## IN PROGRESS

  ## DONE

  - [ ] (id:UUID) [feature|medium] Task title - Optional description

  ## Rules
  - **Status** is determined by the section header (TODO / IN PROGRESS / DONE).
  - **To create a task**, omit `(id:...)`:
    - `- [ ] [feature|low] New task title - Description`
  - **To update a task**, keep its `(id:...)` and edit title/description.
  - **Description** comes after " - " on the same line. Remove it if not needed.
  - Keep `type` as `feature` or `bug`. Priority is `low`, `medium`, or `high`.
  - Move tasks to the correct section to change status.

  ## Template

  # Project: NAME (id:UUID)

  ## TODO

  - [ ] [feature|medium] New task title - Short description

  ## IN PROGRESS

  - [ ] (id:EXISTING-ID) [bug|high] Existing task title - Updated description

  ## DONE

  - [x] (id:EXISTING-ID) [feature|low] Completed task title - Final notes

  ## Examples
  Create:

  - [ ] [feature|medium] Add onboarding hints - Guide new users through actions

  Update:

  - [ ] (id:abc123) [bug|high] Fix sync race - Handle file update conflicts

  Move to done:

  ## DONE

  - [x] (id:abc123) [bug|high] Fix sync race - Handle file update conflicts

Sample usage with coding agent

Loop through tasks
check todo.md and finish pending task
Plan tasks
update todo.md with tasks that need to be finished to build a global leaderboard
dotodo format
# Project: Product Launch

## TODO
- [ ] [feature|high] Launch checklist - Ship on time

## IN PROGRESS
- [ ] (id:9f2e) [feature|medium] Landing page layout

## DONE
- [x] (id:b7aa) [bug|low] Fix export path

Versioning

Version controlled by default.

Keep Markdown alongside code

Commit your board changes with the same repo history.

Edit via UI or file

Changes sync in both directions, no manual export needed.

Make sure file is linked to the board.

Search

Search across all projects.

Find tasks instantly

Search spans every project, column, and tag so you never lose a detail.

  • Natural filters for priority and status
  • Highlight matches as you type
  • Stay in flow with keyboard-first commands
Searchtype to filter

Philosophy

Build with intention.

dotodo is built on the idea that project management should stay close to the work itself.

software development these days is largely spec driven, and features are built within minutes and hours

Instead of locking projects inside a tool, dotodo keeps Markdown as the source of truth. And the visual board is a lens on top of them. This ensures portability, transparency, and long-term ownership of your data.

dotodo favors local-first workflows. Projects live on your machine, sync through files you control, and remain usable without accounts, servers, or hidden automation.

The board is intentionally simple:

  • Status is explicit and structural.
  • Progress is visible through movement.

dotodo is designed to work equally well for individual developers, small teams, and coding agents. Its strict Markdown format and deterministic rules make it easy to automate, reason about, and evolve over time.

clear interface between intent, execution, and record. nothing more, nothing less.