created by Chris Green

TaskFlow 0 tasks
What makes TaskFlow different
💾
Saves automatically, locally

Every change you make is saved instantly to your browser's localStorage. No account, no server, no sync delay. Your tasks are there when you come back — even after closing the tab.

📂
Nested tasks & mini-projects

Every task can hold subtasks, turning any item into its own mini-project. Organize work at three levels — Projects, Tasks, and Subtasks — without switching tools or views.

📦
Portable with one click

Hit Export to download your entire workspace as a JSON file. Move it to another device, back it up to a drive, or import it back anytime. Your data is always yours — no lock-in.

🏷️
Tags, priority & due dates

Each task supports status columns (To Do, In Progress, Done, Blocked), priority levels, due dates with overdue highlighting, custom tags, and freeform notes.

🔒
Completely private

TaskFlow runs entirely in your browser. Nothing is sent to a server. No analytics, no telemetry, no third-party data access. Just a file on GitHub Pages doing exactly what it looks like.

One file, anywhere

TaskFlow is a single HTML file with no build step and no dependencies. Save it to your desktop, host it on GitHub Pages, drop it on a USB drive — it works the same everywhere.

How to use TaskFlow

Create a project by typing a name in the bar at the top and pressing Enter. Inside each project, add tasks the same way. Click the button on any task to open its detail panel — that's where you set status, priority, due date, tags, and notes.

Tasks support one level of subtasks. Hover a task and click the + button to add one, or click the arrow toggle to expand and collapse. Double-click any task or project name to rename it inline.

Use Export in the top-right to save your data as a JSON file, and Import to restore it. This is how you move your workspace between devices or keep a backup.

Enter Add project or task
Ctrl N Focus new project field
Esc Close dialogs
dbl-click Rename inline