Punchlist
v1.5.61July 19, 2026
--:--

A day planner that's one HTML file.

No account, no server, no install, no network requests. The whole app is one 471 KB HTML file. Use it right here, or download it & open it from disk. Tasks save to your browser's own storage & export to JSON or Markdown whenever you want them out.

1 file 0 dependencies 0 requests after download 40-step undo v1.5.61
Open the board Download the board Set up sync Get updates by email View source on GitHub

Both buttons are the same 471 KB file. Open it here & it runs at this URL, saving tasks to this browser's storage. Download it & the identical file runs from your disk, offline, zero requests, even if this site disappears. Each copy keeps its own board, unless you point your devices at one private GitHub repo under Settings → Sync. New to GitHub? The sync setup guide walks you through it from scratch.

That's not a mockup. It's the actual app in a frame, running in demo mode: every click, key, drag & setting behaves exactly like the download, because it is the same file. It edits itself until you touch it; your edits stay on your device & the example board resets when the page reloads.

Why this exists

My tasks lived in five places: a notes app, chat messages to myself, two abandoned to-do apps, & whatever paper was on the desk. Every tool I tried wanted an account, a sync service, or a subscription before it would let me type a first task. Then it wanted me to stay, so getting my own lists back out came down to whatever its exporter felt like giving me.

So I set one rule for this build: the whole app has to fit in a single file you can open from disk. No database, no server, no framework, no npm install. Today's build is v1.5.61, 481,969 bytes of native HTML, CSS & JavaScript.

Your data never leaves the browser. Tasks persist in local storage, export losslessly to JSON, & copy out as indented Markdown that pastes clean into Obsidian, Notion, or any text editor. There's no telemetry to switch off because the file doesn't contain any.

The name is a construction term. When a building is nearly done, the contractor walks the site & writes the punch list: every unfinished fix, one line each, worked down to zero before handover. I came across the format on a project in that world & liked what it does to scope: the job isn't done until the list is empty. Same idea here, minus the drywall.

What the file does

Nested outline

Enter adds a task, Tab indents, Alt+arrows move anything anywhere. Undo holds your last 40 board actions.

Plan a weekend trip
Compare train versus driving
Check ticket prices

Markdown clipboard

Ctrl+C turns any selection into indented Markdown. Collapsed groups copy in full, children included. Pasting Markdown creates tasks.

- [ ] Ship the invoice
  - [x] Attach June hours

Linked copies

One task, two places. Edit or complete either copy & both update. A shortcut jumps to the original instead.

Fix the balcony door hingein Today
Fix the balcony door hingein Backlog · linked

Completed & Trash

Done tasks hide on your schedule: immediately, after a period, or never. Deletes land in a restorable Trash by default.

Renew the car registrationhides in 7 days

Day timeline

Optional day view from 06:00 to midnight with a current-time line. Drag to reschedule in 15-minute steps.

Draft the proposal09:00 · 90m

Focus mode

One task full-screen with a running timer. Time accumulates per task & reads out against your plan.

Draft the proposal23:12 · +10m vs plan

Works on your phone

Drawer sidebar, 44 px touch targets, long-press drag. Light & dark themes with per-group color tints in both.

Your data, portable

Lossless JSON export & import. Features you don't enable render zero buttons; the default screen stays clean.

board.jsontasks.md

What's planned

Offline stays the default. The file makes zero requests until you switch something on. Three opt-in features have shipped since launch: GitHub sync, which points your phone & laptop at one private repo so every change lands as a commit; signed exports, so a board you hand to someone proves who sent it; & an assets store that keeps pasted images out of the main file & slim in sync. It still can't remind you of anything while it's closed. What I want next, in rough order:

  • Sync for people who don't want a GitHub account or a token.
  • Sharing a section of your board with someone else, linked so both sides stay current, unlinkable at any time.
  • Identity without accounts: hashed usernames that are unique without a signup form.
  • Optional encryption for anything that ever leaves your machine.
  • Deeper reminders, scheduling & time tracking, kept invisible until you switch them on.

No dates. It ships when it works. Every build is logged in the build notes, newest first, with what changed & how to use it. If you want one of these first, or you want something that isn't on the list, write me: