remix logo

Hacker Remix

Show HN: Colanode, open-source and local-first Slack and Notion alternative

144 points by hakanshehu 5 days ago | 49 comments

Hey HN,

I'm Hakan, the founder of Colanode (https://github.com/colanode/colanode), an open-source, local-first collaboration app combining the best of Slack-style chats and Notion-style note-taking, fully self-hostable for complete data control. Here's a quick demo: https://www.youtube.com/watch?v=wp1hoSCEArg

As a heavy Notion user, I often found it tough to get my teams fully onboard since people naturally gravitate toward chat for quick interactions. Maintaining context between chat apps like Slack and documentation apps like Notion became increasingly frustrating. Switching contexts, losing track of information, and managing data across multiple tools created unnecessary friction.

This frustration led me to build Colanode, a single platform integrating structured notes and knowledge management with real-time chat. After building the first version, early feedback highlighted a critical issue: teams/organizations want full control over sensitive data, especially conversations. That's why I decided to open-source Colanode under an Apache 2.0 license, making it fully self-hostable so you can retain complete ownership and privacy over your data.

Colanode is built with simplicity and extensibility in mind, using only open-source tools and avoiding any vendor or cloud lock-in. It features a local-first architecture offering complete offline support. From a technical perspective, Colanode consists of a Node.js server API and an Electron desktop client, with mobile apps coming soon. Everything in Colanode is represented as a node (e.g., message, file, folder, chat, channel, database, record), each with specific attributes and permissions. All reads and writes performed by the desktop client happen locally within a SQLite database, and changes sync seamlessly via a synchronization engine built on top of SQLite, Postgres, and Yjs—a CRDT library for conflict resolution. The server then propagates these changes to other collaborators. You can self-host the server in any environment using Docker, Postgres, Redis, and any S3-compatible storage, and connect using the official desktop client, which supports simultaneous connections to multiple servers and accounts. This local-first approach also prepares us for future integrations with fully local LLMs, further enhancing privacy and performance.

I'd love your feedback and suggestions on Colanode. What features would you like to see? What would you change?

Thanks, looking forward to your thoughts!

mdaniel 4 days ago

Congratulations on your launch, the animation makes it seem like a neat product!

I don't think I've ever seen a "coming soon" pricing page before <https://colanode.com/pricing/>

For my curiosity, your readme mentions Valkey but the docker compose uses Redis - is that on purpose? https://github.com/colanode/colanode/blob/v0.1.3/docker-comp...

You will also almost certainly want to either use the Apache 2 version of Minio[1] or label that dependency as AGPLv3 to ensure folks are aware. I would also recommend always pinning image versions, because you don't control what that project does or doesn't do in releases

1: https://github.com/minio/minio/blob/RELEASE.2021-04-22T15-44...

hakanshehu 4 days ago

Thank you! We're still working on the hosted offering, hence the "coming soon" pricing page.

Regarding Valkey, I included it as an example of a Redis compatible alternative, but you're right, it's probably better to use it in our Docker Compose file as well. Thanks also for pointing out the licensing considerations around Minio, will definitely look into that.

mdaniel 4 days ago

I tried booting it up and two things:

- this is just evil. Pure. evil. https://github.com/colanode/colanode/blob/v0.1.3/apps/deskto...

If that's the kind of error handling that you believe in, one should have religious backups of any data placed into this

- It seems to actually puke if one doesn't provide it a live, TLS enabled, SMTP server[2] which (a) WTF (b) isn't present in the docker-compose

Thankfully replacing .verify with return new Promise(() => true) at least let the server start

2: https://github.com/colanode/colanode/blob/v0.1.3/apps/server...

hakanshehu 3 days ago

Thank you for taking the time to test it and call these issues out. Both points slipped through our refactor/cleanup checklist.

- We’ll replace the current error handling for server sync with something safer and more graceful.

- We’ll make SMTP optional, expose TLS verification as a configurable setting and update the docker-compose.

We’ll make these improvements soon, thanks again for the heads-up.

yencabulator 3 days ago

Here an example of it taking arbitrary input and blindly casting it to a type; anything after this point can blow up. There seems to be no input validation anywhere.

  const input = req.body as SyncMutationsInput;
https://github.com/colanode/colanode/blob/9e69f29858a2ced6b1...

And the database use looks racy, sometimes not using transactions at all but having a read-modify-write cycle, no GET FOR UPDATE seen anywhere in transactions. Somebody is going to figure out how to do nasty things to the data.

salahuddin_dev 3 days ago

[flagged]

regnerba 4 days ago

Do you have plans for mobile app? It looks really useful but the two places I would use it would both require I mobile app before I could switch to it.

hakanshehu 4 days ago

Hi, thanks for the question! Yes, we do plan to implement mobile apps, but we don't have a concrete timeline yet. It depends on the limitations and challenges we might face when we implement the same local-first approach as we did in desktop (full offline support, background syncing etc).

drcongo 4 days ago

This looks very interesting purely because I can just about see from the very fast gif on the README that it has tasks in there, how much of a first class citizen they are of the app could be really important. It blows my mind that both Slack and Notion have such half-arsed task implementations - every time I need to introduce better, asynchronous task assignments at work I get pushback over "people won't use yet another app" - and sure enough, getting people to assign me something rather than @ notifying me while I'm nose deep in code of something that needs doing in a few days time has been impossible. A single app that lets a team manage work without constant interruptions would be the dream.

lelanthran 4 days ago

> A single app that lets a team manage work without constant interruptions would be the dream.

I can see how it can work, using a native application client to interface to something like develops or jira and then bolt on instant messaging (or the reverse).

The question is, can I get a company to open their wallets for this? From experience, I think not, but i am open to being convinced.

alok-g 4 days ago

Looks nice! Would wait for the documentation to learn more.

How does this compare to Notesnook? I have found that to be the best in terms of getting the details right (However, the last I checked, the documentation for self-hosting was unclear, and there were bugs in data exporting).

https://notesnook.com/

hakanshehu 3 days ago

Thank you! I haven’t used Notesnook personally, but from their description it focuses mainly on note-taking. Colanode, by contrast, also includes collaboration features such as chat, file sharing, and databases. One other difference is that Notesnook offers end-to-end encryption, whereas Colanode does not (at least for now).