I’ve been building a self-hosted task manager focused on something I couldn’t find in one package: true offline support, fast sync across devices and API support.
Most open source task apps I tried leaned toward either:
- good offline support but weak multi-device sync with no API support
- or good sync but limited offline functionality
Will Be Done is my attempt to solve both.
Demo: https://demo.will-be-done.app/
GitHub: https://github.com/will-be-done/will-be-done
Home page: https://will-be-done.app/
What is supported right now:
- True offline mode - reads and writes happen in the local browser DB and sync to the server when it becomes available again (so you can still use it even if your homelab is down!)
- Fast sync across devices
- Tasks and projects with drag-and-drop support
- Kanban inside projects
- Weekly planner
- Recurring tasks
- Vim keybindings
Planned in the near future:
- CalDAV integration
- Import from Todoist / TickTick / Microsoft To Do
- API support
- MCP support
- Desktop app with global quick-add shortcut
Why I built it:
This is my third attempt over the last 3 years to build my ideal task manager, and I now use it daily.
I’ve worked on local-first and sync-heavy systems professionally, so offline-first architecture is something I care a lot about getting right.
Installation:
Single Docker command, no docker-compose, no external dependencies, SQLite included.
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:latest
Then open http://localhost:3000/.
Would love feedback from people here, especially if you care about self-hosting, offline-first apps, or replacing proprietary task managers.
Oh yeah, it's a long story!
My core idea is to build a task manager that will stay with me for the rest of my life. Because of that, my main requirement is for it to be fast even with a massive database. If I have 10k+ tasks saved over the years, it should still load and feel instant.
Another requirement is that it must be offline-first. I live in a country where the internet goes down pretty often, and I need my tasks to be available regardless of the server status.
Finally, I wanted a clean API so I could connect things like an MCP server or create tasks via Telegram.
I couldn't find an existing app that met all these needs, here is a table where I compared all self-hosted apps that I found(in awesome self-hosted github):
Here is how my journey went:
This third approach finally solved all three requirements. It’s hard to find an open-source app that does this because this specific architecture is difficult to "cook" correctly. On top of the database speed, I also had to solve the sync problem, that should also somehow resolve conflicts while clients are offline, which I handled by building own sync layer with LWW CRDT per column.