An offline-first, self-hosted task planner built around a visual weekly timeline.
Will Be Done is built around a simple workflow: collect tasks, place them on a weekly timeline, and keep the few you care about right now in Stash.
It is also local-first: your tasks stay available offline, changes feel instant, and sync catches up across devices when your server is available.
I want it to feel fast in the same way Linear feels fast. The app should open straight into your tasks, without a big loading spinner first. It reads from local persistent storage on demand, so startup should stay quick even after years of saved tasks.
Under the hood, Will Be Done runs on HyperDB, my own local-first database layer. I built it after more than two years of researching what kind of database would actually fit the apps I want to make: offline-first, reactive, fast at startup, and able to share the same typed data logic between the browser and the server.
Try the live demo | Use the cloud app | Download desktop app
Will Be Done is for people who want a fast, private task manager that is built for planning, not just capture.
- Plan the week visually. Each day is a column, so you can see what is realistic and rebalance by dragging tasks around.
- Keep the UX instant. The app should open directly into your tasks, without a blocking spinner or a full database load first.
- Stay useful offline. The app keeps a full local database in the browser, so you can read and write tasks without waiting on the network.
- Start fast, even with years of tasks. Will Be Done reads data on demand from local storage, so it can stay useful as a lifelong task archive.
- Own the data. Self-host the sync server with Docker, store data in SQLite, and avoid handing your task history to a third-party task app.
- Move fast from the keyboard. Vim-style navigation, quick task creation, project movement, stashing, scheduling, and task actions are all keyboard-friendly.
- Keep focus visible. Stash is a persistent focus list available from any page for the tasks you want close at hand this week or month.
- Live demo: demo.will-be-done.app - no sign-up required.
- Cloud app: app.will-be-done.app - try it before self-hosting.
- Desktop app: download the latest release for Windows, macOS, or Linux.
- Mobile: install the web app as a PWA. Native mobile clients are planned.
Run the server:
docker run -d \
-p 3000:3000 \
-v will_be_done_storage:/var/lib/will-be-done \
--restart unless-stopped \
ghcr.io/will-be-done/will-be-done:latestThen open http://localhost:3000 in your browser.
The Docker server hosts the web app, stores server-side data under /var/lib/will-be-done, and provides sync for browser, PWA, and desktop clients.
| Project | Timeline |
|---|---|
|
|
| Today | Mobile |
|
|
Task management
- Create, edit, complete, move, reorder, and delete tasks.
- Add task descriptions and checklist items.
- Check off and reorder checklist items inside tasks.
- Schedule tasks to specific dates, schedule them for today, or clear their schedule.
- View tasks in daily, weekly timeline, project, and stash contexts.
Projects and planning
- Organize tasks into projects.
- Split projects into ordered categories or columns.
- Drag tasks between projects, categories, daily lists, and stash.
- Use multiple spaces to separate work, personal tasks, and side projects.
- Keep an inbox project for quick capture.
- Use Stash as a persistent focus list available from every page.
Recurring tasks
- Convert a task into a recurring template.
- Create recurring templates with daily, weekly, monthly, and yearly rules.
- Set custom intervals such as every 2 weeks or every 3 months.
- Choose weekdays for weekly repeats.
- Choose month day for monthly repeats.
- End a recurring series never, after a number of occurrences, or on a date.
Local-first speed
- Full browser-side database for instant interactions.
- Read and write support while offline.
- On-demand reads from persistent storage, so the app can start quickly without a blocking loading spinner.
- Designed to stay fast with a large task history, not only a fresh database.
- Real-time sync across tabs and devices when connected.
Keyboard and workflow
- Vim keybindings for navigation and task actions.
- Drag and drop for tasks, days, projects, and categories.
- Desktop app with global quick add.
- Mobile-ready PWA for planning away from the desktop.
Import, backup, and ownership
- Self-hosted server in one Docker command.
- SQLite storage.
- No external services required for a self-hosted setup.
- Todoist import by API token.
- TickTick import from CSV export.
Global:
\- toggle stashv- toggle task details panelp- toggle project viewz- zen mode: close stash, task details, and project view
When a task is focused:
i,enter- enter insert mode to edit the task;escexits insert modej,k- move between tasksh,l- move between columnsctrl-j,ctrl-k,ctrl-down,ctrl-up- move task up or downctrl-h,ctrl-l,ctrl-left,ctrl-right- move task left or righto- create a task below the focused taskO- create a task above the focused taskspace- toggle task statem- move task to another projectS- stash tasks- schedule datet- schedule task for todayr- reset scheduled,x,backspace- delete taske- edit task descriptionc- add checklist itema- open action menu
When a project is focused:
i- edit projectj,k- move between projectsd,x,backspace- delete project
Reserved / WIP:
u,cmd-z,ctrl-z- undo actionctrl-r,cmd-shift-z,ctrl-shift-z- redo action
Planned for v1.0:
- Repeating tasks
- Task details
- Checklists inside tasks
- Todoist / TickTick migration
- Desktop app with global quick add
- OpenAPI integration
- CLI app
- Undo / redo
Possible next features:
- Task comments
- Task attachments
- CalDAV integration
- MCP integration
- Project themes with custom backgrounds and task colors
- Global command palette
- Multi-select tasks
- Global themes
- Drag and drop for project columns
- Internationalization
- More Vim keybindings
- End-to-end encryption
- Global search
- Mobile widgets
- Notifications on web, mobile, and desktop
- Native mobile app
Not planned for now:
- Multi-user spaces or projects
- Shared tasks, projects, or spaces
- Time-of-day scheduling for tasks
Install dependencies:
pnpm installRun the API and web app in separate terminals:
pnpm dev:server
pnpm dev:clientUseful checks:
pnpm ts
pnpm lint
pnpm test
pnpm test:e2eI am building Will Be Done as the task manager I want to use for the rest of my life.
That means it needs to stay fast with years of task history, start quickly without waiting on a full database load, work even when the internet disappears, and keep sensitive task data under my control. It also needs to fit the way I work: weekly planning, keyboard-first navigation, a persistent focus stash, desktop quick add, and an API that can connect to tools like Telegram or an MCP server.
Super Productivity came closest to what I wanted from the self-hosted ecosystem, but I wanted a more opinionated workflow around weekly planning, local-first sync, visual customization, and Vim-style ergonomics.
This table captures the feature set I was optimizing for while building Will Be Done. Other projects may have changed since this comparison was written.
| Feature | Will Be Done | Super Productivity | Donetick | Tududi | Vikunja | TaskTrove |
|---|---|---|---|---|---|---|
| Open source and self-hosted | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Fully usable offline | ✅ | ✅ | 🟥 | 🟥 | 🟥 | 🟥 |
| Drag and drop for tasks and projects | ✅ | ✅ | 🟥 | 🟥 | ✅ | ✅ |
| Real-time refresh without manual reload | ✅ | ✅ with SuperSync | ✅ | 🟥 | 🟥 | 🟥 |
| Multi-tab support | ✅ | 🟥 | ✅ | 🟨 | 🟨 | 🟨 |
| API | 🟨 WIP | ✅ with SuperSync | ✅ | ✅ | ✅ | ✅ |
| Mobile version | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Keyboard shortcuts / Vim bindings | ✅ | ✅ | ✅ | ✅ | ✅ | 🟨 |
| Weekly planner | ✅ | ✅ | 🟥 | 🟥 | 🟥 | 🟥 |
| Categories or columns inside projects | ✅ | ✅ | 🟥 | 🟥 | ✅ | ✅ |
| Desktop app with global quick add | ✅ | ✅ | 🟥 | 🟥 | 🟥 | 🟥 |
| Local-first architecture | ✅ | ✅ | 🟥 | 🟥 | 🟥 | 🟥 |
I have been developing this project for more than a year, and this is my third attempt in three years. The first two attempts failed because the technology for fast offline-first apps was not ready for the experience I wanted.
This version uses my own local-first development approach and a database that works across the frontend and backend, so the same domain logic can run in both places. I have more than 10 years of development experience, including 4 years specializing in offline-first apps. I use Claude Code to help with development, but I review the code manually.



