Developing a self-hosted alternative to Google Keep
-
Nextcloud Notes or Joplin (nevermind all the other features Nextcloud provides) tick most of your boxes. They're more productivity focused than privacy focused, it doesn't do "zero knowledge" encryption the way you're describing, but I don't really understand the point of that when you're self-hosting and the server host belongs to you anyway. The federation may leave you wanting more and the collaboration might not be "real time" enough for you either, though. If you can build something better by all means go for it.
Oh yeah, both Joplin and NextCloud are great. I tried them both in the past. NextCloud is a bit bloated in my opinion though, I was hoping to go for something simpler both to install and to use.
Most of us here on the Lemmy Selfhosted community are skilled enough to keep a computer running somewhere, expose it securely on the internet (or just LAN, if that's good enough), and install their own services such as Joplin and NextCloud, but my goal would be to make something that you don't need to self-host. If you can trust any server, you don't need to host your own. I like the idea of building a network comprised of both self-hosting users, and "normal" users, like here on Lemmy.
The federation may leave you wanting more and the collaboration might not be โreal timeโ enough for you either, though. If you can build something better by all means go for it.
I'm not sure I understand what you mean. Do you mean writing a protocol that supports federation is a very difficult thing to do? Actually my first draft didn't include federation as that's just too much for my skills. But I am considering adopting Matrix, and Matrix includes federation, so why not? They built real-time messaging with Matrix, so I would assume that should be real-time enough for document editing.
-
Why not use Joplin? Open-source, very flexible, I run it on a bunch of devices and sync it via a EU cloud provider over S3 in an encrypted bucketโฆ
Its not really a keep replacement. Its a good note taking app though.
-
I've specifically been looking for a self-hostable keep alternative for a while now. This sounds amazing, will be following the project!
same here
-
For notes, I have moved to Joplin with the option to synchronize my data using a WebDAV server. It works really well, and it has both a mobile and desktop app. If you're interested in developing your project, maybe you can have a look at the options this provides. For example, I really like the ability to separate notes between groups, assign tags, create drawings, and the possibility to use Markdown.
Good luck with your projects! To mirror @enemenemu's suggestion, I would also look into collaborating with the people trying to push the EU Docs alternative. Not sure if that will work, but it's worth a shot if you're interested
Oh yeah, I used Joplin in the past. Although the goals are quite different from my idea. Joplin is a great recommendation as an alternative to Google Keep, but it's not real-time collaborative (or federated, for what it matters).
create drawings
Ah, I don't remember this option. Maybe it wasn't available when I tried it last time a few years ago. I guess that means Joplin is still being actively developed.
I would also look into collaborating with the people [...] Not sure if that will work, but itโs worth a shot if youโre interested
Oh! I just noticed that they have quite a few things besides Docs. I mean... I probably should. My goal is for something much smaller, I just want a replacement for Google Keep, and some day in the near future, SplitWise. Joplin sounds like a better candidate than Numerique.
Thanks for pushing to collaborate, I realize that would actually make more sense than starting a new project from scratch. Not without guilt, I have to admit that I code for fun, and I have more fun working on something that works exactly as I envision it rather than just joining another project. Someday I might learn how to make some real contributions to existing software, but I don't think this idea of making a simple replacement for Google Keep will be my trampoline to working this way. Still, thank you for trying to push me to do it!
-
Hi! I'm a software developer working on a suite of collaborative self-hostable apps to replace proprietary services I couldn't find a good replacement for.
I am writing this post to seek opinions and ideas now that I am still in the early prototyping phase, before it's too late to change track.
My idea is to develop a collection of simple single-purpose apps that do one and only one thing. The first app will be called Simple Notes (mirror), a replacement for Google Keep. Every operation is encrypted locally on the client, and the server never sees plaintext data. I am investigating federations models to let users connect to other instances and work collaboratively, much like Lemmy.
So, my goals in order of priority are:
- No compromises on privacy and security
- Completely FOSS
- Read-time collaboration between users
- Asynchronous collaboration (work offline, sync when back online)
- One account to operate on all apps in this suite
- Web UI / desktop UI / mobile UI
- Minimal interface which my grandma can use, no feature-bloat
- No anti-features such as advertisements, tracking, etc...
- Self-hosting
- Federation
After Simple Notes, I plan to keep developing other simple apps, some ideas on my list:
- Simple Notes - Replacement for Google Keep
- Simple Split - Replacement for SplitWise
- Simple Chat - Replacement for WhatsApp/Slack/Meet/Teams
- Simple Docs - Replacement for Google Docs
- Simple Draw - Collaborative drawing app
- Simple Calendar - Replacement for Google Calendar
Initially I started writing my own protocol (mirror), operating quite differently from Lemmy's, but then I realized that someone else already has developed a protocol for this purpose: Matrix. It is (optionally) E2EE, it's FOSS, and it's federated. So yeah, it sounds like the perfect choice to me. Also, if I pick Matrix, Simple Chat will just be a reskin of Element, so development cost is almost zero.
So, a questions for the developers on the Lemmy Selfhosted community: do you think piggybacking the Matrix protocol would be a good choice? Do you know any alternative that might be more suited for this purpose?
And a question for all Lemmy Selfhosted users: is there a simple app that you would like me to add to the list?
Bonus question: do you know of any Lemmy community where I could repost?
Thank you very much for the time you spent reading my post!
--
Link to source code on my server and GitHub mirror.
What I'm currently missing is a simple app for keeping contacts synced between my android phone and Linux desktop.
Excited to see what you do!
-
As far as I know, Joplin is not really real-time collaborative, nor federated. I was using it a few years ago and I like it, that would be a great suggestion for people not interested in those two things.
why you wouldnโt hop on projects already out there
Ah... that's... yeah, that would probably make a lot of sense. I think that to us developers it's much easier to come up with our own ideas than to hop onto other projects unless they align very well with our vision. It's quite unusual to find other people with our very same goals. I'll be honest, I code for fun. I would like to build this tool because want it more than because I need it, as there already are both Google Keep and Joplin after all. If there was an alternative out there with most of the feature features I need, in a programming language and framework that I am familiar with, I would probably have joined or forked it. But no, unfortunately that's not the case. My goal is not to just find/build a replacement for Google Keep, my goal is to find/build a framework that can be used to build more collaborative apps in the future. A replacement for SplitWise is my next goal immediately after Google Keep, and I assume (hopefully not too naรฏvely) that once I will have a starting point, making more similar apps will be virtually free in terms of time required.
Actually, I was just so incredibly lucky that the Matrix protocol seems to overlap almost exactly with all the things I had in mind. I had included a few more features in my draft for a custom protocol, but honestly adopting something already made would save many tens of hours of work, so joining something already existing sounds like a good idea. I don't think I will be able to contribute code to it though, as it's developed in a language I am not familiar with (yet), so if I decided to go for Matrix after all, I will just be joining as a consumer.
LibreOffice also has Async collab [...] might also benefit from another person putting their time towards it
Oh, that's actually good to know, thanks! Personally, at the moment I use Google Docs when I need to work in real-time on a document with someone else. In my opinion it's just too convenient to just be able to share a link which can be opened with a web browser from any device and operating system. There are some good self-hostable web options for documents imho though, which are probably less resource-demanding than LibreOffice.
Unfortunately I am not interesting in contributing to LibreOffice. I have installed it on all of my devices, but I almost never use it.
Whatever you choose to do, Iโll be super interested to see the results.
I'll take that as an encouragement! Thanks!
I think I understand your requirements more clearly now, a framework for FOSS collaborative work would be really great. I Hope you can find a way to use Matrix for it. Thanks for the explanation.
Man, I loved the google docs realtime collab functionality, they pretty much nailed it day 1 in my eyes. It's so easy. If your project works/takes off it should be a lot more straightforward for FOSS projects to incorporate it. Hype!
-
Just take a common word and remove a vowel or too. That's still hip, right?
Power Operations -> Po Op -> Poop
Perfect.
-
What I'm currently missing is a simple app for keeping contacts synced between my android phone and Linux desktop.
Excited to see what you do!
That's a good idea and it shouldn't be too difficult, especially as it wouldn't even really need collaboration. If I manage to get this thing started I'll try to add this suggestion to the list of apps. Thanks!
-
I think I understand your requirements more clearly now, a framework for FOSS collaborative work would be really great. I Hope you can find a way to use Matrix for it. Thanks for the explanation.
Man, I loved the google docs realtime collab functionality, they pretty much nailed it day 1 in my eyes. It's so easy. If your project works/takes off it should be a lot more straightforward for FOSS projects to incorporate it. Hype!
Well... if a FOSS project wants to incorporate collaborative work they could already do it, well... through Matrix for instance.
They might (depending on how the application works) also need to implement additive changes and possibly also a conflict resolution UI if they want to support synchronization from offline changes. But I'm afraid both these things might be very application-specific.
I'll be honest, I don't think much of what I have in mind would really be adoptable by existing projects. But I'll do my best to keep everything relatively modular just in case.
Thanks (again) for the encouragement!
-
Hi! I'm a software developer working on a suite of collaborative self-hostable apps to replace proprietary services I couldn't find a good replacement for.
I am writing this post to seek opinions and ideas now that I am still in the early prototyping phase, before it's too late to change track.
My idea is to develop a collection of simple single-purpose apps that do one and only one thing. The first app will be called Simple Notes (mirror), a replacement for Google Keep. Every operation is encrypted locally on the client, and the server never sees plaintext data. I am investigating federations models to let users connect to other instances and work collaboratively, much like Lemmy.
So, my goals in order of priority are:
- No compromises on privacy and security
- Completely FOSS
- Read-time collaboration between users
- Asynchronous collaboration (work offline, sync when back online)
- One account to operate on all apps in this suite
- Web UI / desktop UI / mobile UI
- Minimal interface which my grandma can use, no feature-bloat
- No anti-features such as advertisements, tracking, etc...
- Self-hosting
- Federation
After Simple Notes, I plan to keep developing other simple apps, some ideas on my list:
- Simple Notes - Replacement for Google Keep
- Simple Split - Replacement for SplitWise
- Simple Chat - Replacement for WhatsApp/Slack/Meet/Teams
- Simple Docs - Replacement for Google Docs
- Simple Draw - Collaborative drawing app
- Simple Calendar - Replacement for Google Calendar
Initially I started writing my own protocol (mirror), operating quite differently from Lemmy's, but then I realized that someone else already has developed a protocol for this purpose: Matrix. It is (optionally) E2EE, it's FOSS, and it's federated. So yeah, it sounds like the perfect choice to me. Also, if I pick Matrix, Simple Chat will just be a reskin of Element, so development cost is almost zero.
So, a questions for the developers on the Lemmy Selfhosted community: do you think piggybacking the Matrix protocol would be a good choice? Do you know any alternative that might be more suited for this purpose?
And a question for all Lemmy Selfhosted users: is there a simple app that you would like me to add to the list?
Bonus question: do you know of any Lemmy community where I could repost?
Thank you very much for the time you spent reading my post!
--
Link to source code on my server and GitHub mirror.
Really interested on seeing this, although if I could make a suggestion, start by scouting around and see if you can adapt FOSS apps, maybe fork them and add/remove features to please your objectives and tastes.
Although I'm eager to see these through, I like projects like murena (/e/OS) that cobble together good Foss projects into a single cohesive ecosystem (without making the word ecosystem gross and vendor locked in like in most cases)
-
Hi! I'm a software developer working on a suite of collaborative self-hostable apps to replace proprietary services I couldn't find a good replacement for.
I am writing this post to seek opinions and ideas now that I am still in the early prototyping phase, before it's too late to change track.
My idea is to develop a collection of simple single-purpose apps that do one and only one thing. The first app will be called Simple Notes (mirror), a replacement for Google Keep. Every operation is encrypted locally on the client, and the server never sees plaintext data. I am investigating federations models to let users connect to other instances and work collaboratively, much like Lemmy.
So, my goals in order of priority are:
- No compromises on privacy and security
- Completely FOSS
- Read-time collaboration between users
- Asynchronous collaboration (work offline, sync when back online)
- One account to operate on all apps in this suite
- Web UI / desktop UI / mobile UI
- Minimal interface which my grandma can use, no feature-bloat
- No anti-features such as advertisements, tracking, etc...
- Self-hosting
- Federation
After Simple Notes, I plan to keep developing other simple apps, some ideas on my list:
- Simple Notes - Replacement for Google Keep
- Simple Split - Replacement for SplitWise
- Simple Chat - Replacement for WhatsApp/Slack/Meet/Teams
- Simple Docs - Replacement for Google Docs
- Simple Draw - Collaborative drawing app
- Simple Calendar - Replacement for Google Calendar
Initially I started writing my own protocol (mirror), operating quite differently from Lemmy's, but then I realized that someone else already has developed a protocol for this purpose: Matrix. It is (optionally) E2EE, it's FOSS, and it's federated. So yeah, it sounds like the perfect choice to me. Also, if I pick Matrix, Simple Chat will just be a reskin of Element, so development cost is almost zero.
So, a questions for the developers on the Lemmy Selfhosted community: do you think piggybacking the Matrix protocol would be a good choice? Do you know any alternative that might be more suited for this purpose?
And a question for all Lemmy Selfhosted users: is there a simple app that you would like me to add to the list?
Bonus question: do you know of any Lemmy community where I could repost?
Thank you very much for the time you spent reading my post!
--
Link to source code on my server and GitHub mirror.
Simple Notes - Replacement for Google Keep
Yes please!
Simple Chat - Replacement for WhatsApp/Slack/Meet/Teams
Why not just use one of the other Matrix clients?
Simple Docs - Replacement for Google Docs
This seems overly ambitious. The thing I like about Google Docs is all the rendering features and whatnot, I don't really use the collaborative editing part. If you really want the collaborative bits, those exist.
do you think piggybacking the Matrix protocol would be a good choice?
No. Matrix is designed for chat, not data, and self-hosting it requires a fair amount of resources.
For something this simple, I don't think there's an "out of the box" solution here, nor do I think there needs to be one. The main things you need to handle are:
- state changes - same as a non-collaborative app, but you also need to pick who wins
- users and their locations in a document - can even send unsaved snippets as well
I'd personally just DIY it since it's really not a ton of logic, no reason to bring a whole protocol into this.
But hey, maybe it'll work out great. Having more options is generally a good thing.
-
Simple Notes - Replacement for Google Keep
Yes please!
Simple Chat - Replacement for WhatsApp/Slack/Meet/Teams
Why not just use one of the other Matrix clients?
Simple Docs - Replacement for Google Docs
This seems overly ambitious. The thing I like about Google Docs is all the rendering features and whatnot, I don't really use the collaborative editing part. If you really want the collaborative bits, those exist.
do you think piggybacking the Matrix protocol would be a good choice?
No. Matrix is designed for chat, not data, and self-hosting it requires a fair amount of resources.
For something this simple, I don't think there's an "out of the box" solution here, nor do I think there needs to be one. The main things you need to handle are:
- state changes - same as a non-collaborative app, but you also need to pick who wins
- users and their locations in a document - can even send unsaved snippets as well
I'd personally just DIY it since it's really not a ton of logic, no reason to bring a whole protocol into this.
But hey, maybe it'll work out great. Having more options is generally a good thing.
Regarding your requirement, you might want to take a look at KitchenOwl.
If you prefer freestyle notes/lists, Joplin can share and sync note collections as well.
-
Regarding your requirement, you might want to take a look at KitchenOwl.
If you prefer freestyle notes/lists, Joplin can share and sync note collections as well.
KitchenOwl
Nice! You sir or madame are a wonderful person. This does far more than we need, but honestly, those features look like something we should use anyway (esp. recipes and meal planning).
-
Naming software is one of the hardest problems in all of software development.
There are 2 hard problems in computer science: cache invalidation, naming things, and off-by-1 errors.
-- Leon Bambrick
-
KitchenOwl
Nice! You sir or madame are a wonderful person. This does far more than we need, but honestly, those features look like something we should use anyway (esp. recipes and meal planning).
The shopping list alone is beautifully done. Glad that I could help
-
What I'm currently missing is a simple app for keeping contacts synced between my android phone and Linux desktop.
Excited to see what you do!
I use Nextcloud for that. On Android phone it's DAVx5. Thunderbird can use the contact via CardDAV, DAVx5 syncs them with the Android addressbook. Fossify Contacts is nicer than the Google contacts app.
The same way it's done with my appointments. I have also replaced the native Google calendar with the Fossify Calendar here, because it's less annoying.
-
I use Nextcloud for that. On Android phone it's DAVx5. Thunderbird can use the contact via CardDAV, DAVx5 syncs them with the Android addressbook. Fossify Contacts is nicer than the Google contacts app.
The same way it's done with my appointments. I have also replaced the native Google calendar with the Fossify Calendar here, because it's less annoying.
Self host radicale if you don't want the whole nextcloud suite
-
Hi! I'm a software developer working on a suite of collaborative self-hostable apps to replace proprietary services I couldn't find a good replacement for.
I am writing this post to seek opinions and ideas now that I am still in the early prototyping phase, before it's too late to change track.
My idea is to develop a collection of simple single-purpose apps that do one and only one thing. The first app will be called Simple Notes (mirror), a replacement for Google Keep. Every operation is encrypted locally on the client, and the server never sees plaintext data. I am investigating federations models to let users connect to other instances and work collaboratively, much like Lemmy.
So, my goals in order of priority are:
- No compromises on privacy and security
- Completely FOSS
- Read-time collaboration between users
- Asynchronous collaboration (work offline, sync when back online)
- One account to operate on all apps in this suite
- Web UI / desktop UI / mobile UI
- Minimal interface which my grandma can use, no feature-bloat
- No anti-features such as advertisements, tracking, etc...
- Self-hosting
- Federation
After Simple Notes, I plan to keep developing other simple apps, some ideas on my list:
- Simple Notes - Replacement for Google Keep
- Simple Split - Replacement for SplitWise
- Simple Chat - Replacement for WhatsApp/Slack/Meet/Teams
- Simple Docs - Replacement for Google Docs
- Simple Draw - Collaborative drawing app
- Simple Calendar - Replacement for Google Calendar
Initially I started writing my own protocol (mirror), operating quite differently from Lemmy's, but then I realized that someone else already has developed a protocol for this purpose: Matrix. It is (optionally) E2EE, it's FOSS, and it's federated. So yeah, it sounds like the perfect choice to me. Also, if I pick Matrix, Simple Chat will just be a reskin of Element, so development cost is almost zero.
So, a questions for the developers on the Lemmy Selfhosted community: do you think piggybacking the Matrix protocol would be a good choice? Do you know any alternative that might be more suited for this purpose?
And a question for all Lemmy Selfhosted users: is there a simple app that you would like me to add to the list?
Bonus question: do you know of any Lemmy community where I could repost?
Thank you very much for the time you spent reading my post!
--
Link to source code on my server and GitHub mirror.
Except for federation, you described Notesnook, although it's a bit hard to self host because the server parts are in alpha with few documentation. I wanted to try it but it looked too complex (hard to backup and hard to maintain) with all those server components, mongodb in a replica set and S3
For self hosting, why e2ee? It makes backups much more complicated than having plain text/images on the server. Consider making it optional
-
What I'm currently missing is a simple app for keeping contacts synced between my android phone and Linux desktop.
Excited to see what you do!
Radicale is an amazing light and efficient CardDAV/CalDAV server. Pair with Dav5x on android and you are fully setup.
-
Ah, that's a shame, I quite liked the idea of using the "Simple" prefix. Well, naming software is hard! I'll just keep it as a temporary name for now. Thanks!