Open source · Local-first · Self-hostable

Plan your week,
not just your tasks.

Will Be Done is a local-first task manager built around a visual weekly timeline. It works fully offline, syncs across devices, and can be self-hosted with one Docker command.

100 tasks. What are you doing this week?

No signup required for the demo · macOS · Linux · Windows

Local-first

Full database on your device

Offline

Works with no network at all

Open source

AGPL-3.0, developed in public

Self-hosted

One Docker command, SQLite

Keyboard-first

Vim navigation, global quick add

Open source on GitHub · AGPL-3.0 · SQLite storage · Linux · macOS · Windows

Why weekly planning

Your week is the unit of planning

Most task managers revolve around Today. Miss a day and the unfinished work piles up into tomorrow, until your list is a monument to everything you didn't do.

Will Be Done keeps the whole week visible. Every day is a column, so you can see what is realistic and drag work between days as plans change. Missed tasks stay where you can see them instead of piling up as overdue.

Screenshot showing weekly timeline with day columns for planning your week at a glance

One bad day won't break your week

Skipping a day doesn't snowball. Unfinished work stays where you put it, and you rebalance the rest of the week in a couple of drags.

Screenshot showing weekly planning that stays clean even when you skip a day

No punishment for being human

No angry red "OVERDUE" badges. A missed task gets a quiet yellow marker and stays where you left it, ready to move to another day.

Screenshot showing gentle yellow indicators for missed tasks instead of angry red overdue badges
Sergey Popov, the developer of Will Be Done

Sergey Popov

Building Will Be Done, solo

Why I built this

The task manager I want to use for the rest of my life

That sets the bar. It has to stay fast with years of task history, open without waiting on a full database load, keep working when the internet disappears, and keep my task data on hardware I control.

This is my third attempt in three years. The first two failed because the technology for genuinely fast offline-first apps wasn't ready for the experience I wanted. I have more than 10 years of development experience, including 4 years specializing in offline-first apps, and the third attempt is built on all of it.

Super Productivity came closest of the self-hosted apps I tried, but I wanted something more opinionated about weekly planning, local-first sync and Vim-style keys. So I built it.

3rd

attempt at this idea

3 yrs

of trying to get it right

10+ yrs

building software

4 yrs

on offline-first apps

Built on HyperDB

Will Be Done runs on HyperDB, the local-first database layer I wrote for it after more than two years of researching what would actually fit apps like this: offline-first, reactive, quick to start, and able to share the same typed data logic between the browser and the server.

That's why the same selectors and actions run on your device and on the sync server, and why reads come from local storage on demand instead of loading everything up front.

Local-first

Local-first, not offline-ish

Every device runs a complete local database. Opening a task, moving it across the week or creating a new one never waits for the network. The server only passes changes between your devices when there is a connection.

  • No spinners. Reads and writes happen locally, so every drag and keystroke lands immediately.
  • Plane mode is normal mode. The full app works with no connection, including planning and completing tasks.
  • Server downtime is survivable. If your homelab is rebooting, your tasks are still there and sync catches up later.
  • Built for a lifetime of tasks. Rows are read from local storage on demand instead of loading the whole database at startup, so the app opens straight into your week after years of history.

Your device

Full local database · instant reads and writes

sync

Your server

SQLite in one Docker container · or the cloud

sync

Your other devices

Each with its own local database

Your hands never leave the keyboard

Vim keybinds cover the whole app. Move with h/j/k/l, create tasks with o/O, complete with space, and push work to another day without reaching for the mouse.

Will Be Done task action menu showing Vim keyboard shortcuts for completing, moving, creating, and deleting tasks

Don't break focus to capture a task

A thought surfaces mid-work. Switching apps kills your flow. One global shortcut works anywhere on your Mac, Windows or Linux machine. Type the task, hit enter, and you're back. The popup disappears. Your focus doesn't.

Quick-add popup overlay appearing on top of another application, ready to capture a task

Projects for the work that outlives a week

Each project gets its own kanban board with columns you define, such as Week, Month, Ideas and Someday. Separate spaces keep work and personal apart, so an idea you are not ready for waits in Someday instead of crowding this week.

Screenshot showing project kanban board with Week, Month, Ideas, and Someday columns

And everything else you'd expect

The interesting parts are above. The table stakes are here, and they all work.

  • Recurring tasks by day of week, month or year
  • Project kanban boards with your own columns
  • Separate spaces for work and personal
  • Today view and weekly timeline
  • Stash for what you are focused on right now
  • Desktop apps for Linux, macOS and Windows
  • Global quick add shortcut
  • Mobile-ready PWA
  • Drag and drop for tasks, days and projects
  • HTTP API with OpenAPI docs
  • Task descriptions and checklists
  • Real-time sync across tabs and devices

Coming from Todoist or TickTick?

Bring your tasks with you. Import from Todoist with an API token, or from a TickTick CSV export. Projects and tasks land straight in your spaces.

Screenshot of Will Be Done mobile app showing full task management on phone

Built for people who want control

Over their week, their keyboard, and their data.

Weekly planners

See every commitment across the whole week and rebalance it in seconds.

Keyboard people

Navigate, create, schedule and complete tasks without reaching for the mouse.

Self-hosters

Run the whole service yourself: one container, SQLite, no external services.

Developers

Drive your tasks from scripts through the HTTP API. Your own instance serves the OpenAPI docs.

HTTP API

Wire your tasks into everything else

Spaces, projects, sections, tasks, checklists and schedules are all reachable over a documented HTTP API. A Telegram bot, a cron job or your own script can drop work straight into your week. Create a token in Space settings → Tokens and send it as a bearer token.

API reference Self-hosting? The same docs live at /api/docs on your server.
capture-task.sh
# List your spaces
$ curl https://app.will-be-done.app/api/v1/spaces \
    -H "Authorization: Bearer $WBD_TOKEN"

# Drop a task straight into your stash
$ curl -X POST \
    ".../api/v1/spaces/$SPACE_ID/stash/tasks" \
    -H "Authorization: Bearer $WBD_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"title": "Reply to the Q2 thread"}'
Self-hosted

One command to own your data

Run it on your own server. No third-party services, no cloud account, no tracking. Just a Docker container, and the only login is the one you create on your own instance.

  • SQLite database you can back up by copying one file
  • Local-first: full database in the browser, works offline even when your homelab is not available
  • Separate spaces for work and personal
terminal
$ docker run -d \
  -p 3000:3000 \
  -v will_be_done:/var/lib/will-be-done \
  --restart unless-stopped \
  ghcr.io/will-be-done/will-be-done:latest

 Running at http://localhost:3000
Self-hosting docs One container · SQLite · easy backups · no external services

Open source

If you don't like something, fork it.

~/code
$ gh repo fork will-be-done/will-be-done --clone
✓ Cloned will-be-done into ./will-be-done
$ cd will-be-done && pnpm install
✓ Dependencies installed
$ pnpm all
▲ Will Be Done dev server → http://localhost:5173
$ 
  • Change the UI. Restyle every surface to match your taste.

  • Bend the workflow. Add the views, shortcuts and integrations you wish it had.

  • Ship your own build. Self-host it, or run your fork on your own hardware forever.

AGPL-3.0 licensed · TypeScript, React, SQLite

PS: thanks Theo for this promo idea.

Frequently asked questions

Is Will Be Done open source?

Yes. The whole thing is licensed under AGPL-3.0 and developed in the open on GitHub: web app, desktop app, sync server and API.

Does Will Be Done work completely offline?

Yes. Every device keeps a full local database, so you can read tasks, create them, complete them and move them around your week with no network at all. Changes sync once you are back online.

Can I self-host it?

Yes, with one Docker container. It stores data in SQLite on a volume you control, needs no external services, and serves the web app plus the API from the same port.

Where is my data stored?

A copy lives locally on every device you use, and the synced copy lives on whichever server you choose: your own Docker container, which keeps SQLite under /var/lib/will-be-done, or the hosted cloud.

Do I need an account?

Not for the live demo. It runs entirely in your browser with no signup. You need an account only to sync across devices, either on the cloud or on your own server.

Is there a cloud version?

Yes. app.will-be-done.app is free to start. Use it if you want sync across devices without running a server yourself.

What happens if my self-hosted server goes offline?

The app keeps working. Reads and writes hit your local database, and the app sends pending changes the moment the server comes back.

What happens if I edit the same task on two devices while offline?

Both devices keep working, and they merge their changes field by field once they reconnect, with the last write winning. Say your phone is offline on the train and you rename a task to "Draft Q2 budget", then ten minutes later you rename the same task to "Draft Q2 budget deck" on your desktop: once both sync, the title is the desktop one, because it was edited later. Ordering comes from a hybrid logical clock rather than who reconnects first, so a stale edit uploaded later does not overwrite a newer one.

Does a conflict ever lose my other changes?

Only the specific field that both devices changed is resolved that way. Because the merge is per field rather than per task, edits to different fields survive together: if your phone renamed a task while your desktop moved it to Thursday, you end up with the new title and the new day. Deletes are the one-way case: a deleted task stays deleted rather than being resurrected by an edit from another device.

Can I import my tasks from Todoist or TickTick?

Yes. Todoist imports through an API token you paste into Will Be Done, and TickTick imports from its CSV export. Both bring your projects and tasks into the space you choose.

Is there a mobile app?

Mobile today is a mobile-ready PWA you install to your home screen. It is a real mobile UI, not a shrunken desktop layout. App store builds are on the roadmap, and they will package this same web app for iOS and Android rather than being a separate native rewrite.

Can I share projects or use it with a team?

No. Will Be Done is a single-user planner. Multi-user spaces and shared tasks or projects are not planned for now, so treat it as a personal tool rather than a team tracker.

Can I schedule a task for a specific time of day?

No. You schedule tasks to days, not to times, because the app plans a week rather than fills a calendar. Time-of-day scheduling is not planned for now.

Is my data end-to-end encrypted?

Not today. The data sits locally on your devices and on the server you sync with, which can be your own machine. End-to-end encryption is on the roadmap but is not implemented yet.

Your tasks. Your week. Your server if you want it.

Try the demo without an account, or start free in the cloud.

Prefer your own server? Self-host with Docker →