Skip Navigation

InitialsDiceBearhttps://github.com/dicebear/dicebearhttps://creativecommons.org/publicdomain/zero/1.0/„Initials” (https://github.com/dicebear/dicebear) by „DiceBear”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)Q
Posts
2
Comments
14
Joined
2 mo. ago

  • 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.

  • I checked Planify - wow, it is a decent work. But as far as I see it misses web app, mobile mode (will be done can do it with PWA) and macOS/windows platforms.

    Also, the killer feature of will be done - the planner mode. You can plan your tasks through week. It basically the main reason why I built it.

    Also, I compared it will all others task managers that I found at self-hosted github (except Planify, it doesn't relate to self-hosted)

  • Thanks for the feedback! You’re right that it’s not a 1:1 replacement for TickTick/Todoist yet. That is why I used the word 'alternative' rather than 'replacement' in the title.

    The core functionality is already there, and I’m working toward 70–80% feature parity over the next year or two.

    I am also glad to know what particular features you miss so they will be more in my focus

  • Yep, it's on plan. Glad to hear!

  • Thanks!

  • Thanks!

  • Thanks! Not for now, but I am building it in a way that it will be pretty easy to add themes support

  • Selfhosted @lemmy.world

    Modern offline-first self-hosted open-source TickTick/Todoist alternative. Now with desktop app and quick add global OS popup!

  • Thanks! I am already building this iteration for one year, and I enjoy it! Both development and daily usage

  • Oh, that's interesting. Log in page as first page looks correct - once logged in you should always see your tasks on app launch.

    But I think I should correct my manfest.json and hard-code open page to be /.

  • Thanks for the honest feedback!

    Could you share what specifically makes it feel like a bloated todo app to you? Also, what deployment or distribution method would you prefer over Docker?

  • Yep, that's actually what I am doing except moving task to next day. I am still not sure about automatic moving part, though I am doing this by hand. I will need to play with this auto-moving flow a bit and maybe will bring it as a setting option.

    I also have some strong desire to make tui or just CLI, but don't have resources for this right now.

    Thanks for sharing your flow!

  • Yep, I agree too, it's totally fair 👍

    Thanks for your feedback!

  • Yep, that's why I don't like SuperProductivity, it's hard to make proper sync on top of json/caldav(especially with proper conflict resolution). As far as I know, SuperProductivity building its own cloud sync protocol, but it's plan to be a paid feature anytime.

    As for mobile version - yep, I plan to add them too. It's already support PWA, so you can install app as a bookmark (and it opens pretty fast btw! And works offline also). But I want to have proper notifications in future and maybe widgets, so andriod/ios will be, but not sure when.

    Thanks for the feedback!

  • Thanks for the feedback!

    DnD is already here. You can reorder tasks/move to other projects. And as for nesting, it's pretty complex feature. It will be hard to implement and maintain (especially maintain), so not planning right now, unfortunately. But at least I plan to add subtask list.

  • Selfhosted @lemmy.world

    Will Be Done - modern offline-first self-hosted TickTick/Todoist alternative