144 points by hakanshehu 5 days ago | 49 comments
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
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
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
- 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
- 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
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
regnerba 4 days ago
hakanshehu 4 days ago
drcongo 4 days ago
lelanthran 4 days ago
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
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).
hakanshehu 3 days ago