this post was submitted on 03 Apr 2026
105 points (93.4% liked)

Selfhosted

60587 readers
1378 users here now

A place to share alternatives to popular online services that can be self-hosted without giving up privacy or locking you into a service you don't control.

Rules:

Detailed Rules Post

  1. Be civil.

  2. No spam.

  3. Posts are to be related to self-hosting.

  4. Don't duplicate the full text of your blog or readme if you're providing a link.

  5. Submission headline should match the article title.

  6. No trolling.

  7. Promotion posts require active participation, with an account that is at least 30 days old. F/LOSS without a paywall has exceptions, with requirements. See the rules link for details. Tags [CBH] or [AIP] are required, see the links in Rule 8 for details.

  8. AI-related discussions and AI-involved promotional posts have additional requirements for tagging, as noted in Rule 7 and the AI & Promotional Post Expanded Rules post, and find example disclosures here.

Resources:

Any issues on the community? Report it using the report flag.

Questions? DM the mods!

founded 3 years ago
MODERATORS
 

Hey everybody! I am building self-hosted fast task manager, and today I am happy announce that I made desktop app and it supports macos, windows and linux! For mobile it is still PWA. All platforms support fast sync and works offline even when your homelab is down.

Also, one of the top feature that I really wanted is global quick add shortcut. You can trigger it with cmd+shift+a on macos, ctrl+shift+a on windows/linux.

Installation

Single Docker command with SQLite as db:

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
you are viewing a single comment's thread
view the rest of the comments
[–] quolpr@lemmy.world 3 points 3 months ago (1 children)

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:

  1. First approach: I tried using Redux and MobX. Performance sucked. The main reason is that MobX/Redux don't support B-tree indexing. Local-first apps rely heavily on "intervals"(cause you use fractional-indexing-jittered to order things and to support LWW per column), and that’s exactly where B-trees shine. Without them, it just got slower as the data grew.
  2. Second approach: I tried a reactive UI based on persistent SQLite queries (using wa-sqlite). It worked well for small lists, but it felt sluggish once the dataset got large.
  3. Third approach (Current): I decided to build my own DB solution, which you can see here: HyperDB. The trick is that you write the logic once, but on the frontend, it runs against an in-memory B-tree index (which is incredibly fast) and data still stored at persistent wa-sqlite layer, while on the backend, it runs against persistent SQLite (which keeps memory usage low).

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.

[–] comrademiao@piefed.social 3 points 3 months ago

What does this solve that a standard CalDav server doesn’t? Plenty of FOSS apps for web, Linux, iPhone that can all sync to the many caldav servers like Baikal? Caldav servers can handle unlimited numbers of tasks.

Also I read through your page it seems you don’t have CalDav implemented currently. How do you sync between local applications then? Would you sync with other CalDav servers? Or is the project just the webui currently?

Maybe I’m missing something but I don’t see how your couldn’t development meets any of these requirements except the nice ui