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
- Real-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
- Simple Contacts - Replacement for Google Contacts (suggested by @Churbleyimyam@lemm.ee)
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.
–
EDIT: I might have been a bit unclear on my objective. My intention is not to just build a replacement for Google Keep, that’s just the first step of the idea I had. My objective is to build a template from which it should be possible to build all sorts of apps to collaboratively work on documents of various types. Simple Notes (Google Keep) would be for text documents, Simple Split (SplitWise) for expenses (because a list of expenses is a document after all), Simple Chat (WhatsApp) for chats (oh yes, I would say that a list of messages is also just a document), Simple Docs (Google Docs) for… well… text documents, Simple Draw for canvas documents, and finally Simple Calendar (Google Calendar) for a calendar (which, why not, is also document!).
So yeah, I don’t want to just find/build an alternative for Google Keep, I want to find/build a tool to build all sort of simple collaborative apps on top of.
What I am looking for is not the recommendation of an app to simply replace Google Keep, I am looking for a template or even just a protocol on top of which it’s possible to build collaborative document-editing apps.
I’ve started looking for a open source alternative to Keep recently as well, following are few features I’m looking for in random order, maybe you could look into implementing some of these. Once I get some free time I can try to contribute to the code as well.
P.S I think notes collaboration might be a anti feature, it takes away from the simplicity of it and I don’t think most people take notes to share with others, I think for most people notes are personal, so I don’t know how many would want this feature.
Honestly, shared notes is my #1 most used feature. I have many shared notes with my family (e.g. shopping list, movies to watch, etc.)
Regarding multi platform targeting, have you considered something like React Native or Flutter, one code base that can run on any platform might be useful at least for the MVP stage.
Also the reason I mentioned exporting is that I’ve had to deal with a bunch of notes apps in the past where the company behind it shuts down or gets sold and then you either have to figure out how to export all those notes or risk losing them and that’s why I mostly use Obsidian on the desktop now cause even if the company behind it disappears all my notes are in my control and are in markdown format which means they can be imported into any other notes app easily.
And the 3rd party integrations API would help in getting more value out of your notes, right now I feel all my data is siloed across several apps, the articles I read and their highlights are in Pocket, my Kindle has my book highlights, my long term notes are in Obsidian, my short term notes are in Keep, my Todos are in TickTick. I am looking into a way to consolidate all the different sources of data to get synced into one platform so I have it all centralized, I saw recently that TickTick added a integration with Notion. I’m hoping to find a quick notes app that can be made to easily sync with Obsidian. Right now I tag Keep notes that I want to copy to Obsidian and then manually copy them on weekends.
I have! I use Flutter in a professional setting and I do not hate it, but I am madly in love with React (not Native) for my personal projects. I tried React Native in the past and I found it a bit finicky, but it was just a “brief encounter”, so I might change my mind about it in the future. For now I would go with Electron to save time, but I do not exclude the idea to build a desktop + mobile interface in Flutter in the future. React (not Native) can also run on any platform, that should be more than enough for the MVP.
I absolutely do not want to go with Flutter for the web though, as I feel like it’s the exact opposite of what I would dream the web to be. I feel like Google built Flutter to give Android developers a tool to make apps with the excuse “oh yeah, it works on browsers too” and call it a day. Flutter basically bypasses most of the things that browsers do and in my personal opinion it re-implements everything more poorly than how a traditional web app would. Come on, they even built their own layout engine and even a rendering engine, was that really necessary? Browser extensions don’t integrate well with Flutter apps, and the debugging experience is subpar. I really like Flutter for Android and desktop apps, and I might even say it’s easier/simpler than Android Studio (Kotlin), but personally I feel like it’s just a big dirty hack in the web context.
Okay, I just realized that my reply sounds a lot like a rant. My apologies. Please consider this as my current view on these tools, it might change in the future. It’s not a criticism.
That’s an important concern. Well, the source code is AGPL 3.0, so there is no risk of it disappearing. Also, this would be my hobby project and I absolutely do not expect it to ever become anything commercial. I do not even plan to accept donations or anything like that. Basically it’s something that I need, and since it doesn’t exist I am considering building it myself.
There is a big probability that I might stop working on it either because I find it “good enough” for my needs or because I won’t be able to work on it anymore, but I would say I’ll try to keep it as simple as possible, so it should be relatively easy to maintain. Also, relying on Element (Matrix) maintain the server code would mean I just need to maintain the client, which should cut the work down by 50%. I strongly hope Matrix will never shut down or get sold.
In any case, okay! Let there be the possibility to export data in a common format! (Preferably Markdown)
Matrix supports a way to integrate with third-party data sources, but I haven’t read too much into it as it was not in my goals. Perhaps a Synapse (Matrix) plug-in might allow to integrate notes with third-party sources without having to make any changes to the client code. I might investigate this possibility in a later stage.
Yeah my past experiences with React Native was finicky as well, but that was a few years ago, haven’t tried anything in Flutter yet, but I see your point. I thought Matrix was just a distributed chat protocol, I’ll look into it more regarding synapse
Whoa, that’s a long list of ideas… let me see…
That’s the main reason why I decided to build this suite of apps in the first place. I want to be able to work collaboratively on things with my girlfriend, and we must be able to do it in real-time. I realize that this will eat away a big chunk of the total time I will dedicate to this project, but it is also the main reason why I am not satisfied with the options currently available.