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.

    • bruce965@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      I didn’t know this term! I knew about DAGs which are probably a way to implement CRDTs. I just read the definition on Wikipedia, it says that “[CRDTs feature] an algorithm (itself part of the data type) automatically resolv[ing] any inconsistencies that might occur [in case of conflicts]”, that sounds interesting. I was thinking to try to resolve conflicts automatically whenever possible by adapting Git merge strategies, and when impossible: either just concatenate both versions and let the users fix it manually, or giving users the option to choose line-by-line which version they want.

      With this keyword I might be able to find more literature on the topic. Thank you for suggesting it!

  • Squizzy@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    Disclaimer, I am idiot with no time.

    I know Joplin exists but I havent got around to setting it up.

    Would you look a developing a shared notes app, Wanderlist used to be great before microsoft for Shopping lists.

  • sugar_in_your_tea@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 month ago

    Simple Notes - Replacement for Google Keep

    Yes please!

    My use case is a shopping list for my SO and I. I want to be able to add stuff throughout the day, and cross them off once I grab them from the shelf, and separately be able to clear completed tasks.

    Do that and I’ll try selling my SO on it.

    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.

    • aksdb@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      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.

      • sugar_in_your_tea@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 month ago

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

    • bruce965@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      1 month ago

      use case is a shopping list for my SO and I. I want to be able to add stuff throughout the day, and cross them off once I grab them from the shelf, and separately be able to clear completed tasks

      Sorry for the late reply. Oh yes, that’s what I like about Google Keep, the collaborative aspect. What do you mean by separately be able to clear completed tasks”? Do you mean being able to do it from multiple devices which are synchronized in real-time?

      [Simple Chat] Why not just use one of the other Matrix clients?

      Yes, you have a point… let’s keep Simple Chat for later then. I had this idea of making an app for each of my needs and let them all connect to a single server with a single unified user. Good quality Matrix clients already exists, I guess there is no need to build a custom client for the chat if I end up adopting Matrix as the protocol.

      [Simple Docs] This seems overly ambitious.

      Let’s say that’s a longer term goal for the future. I might be underestimating the complexity of Google Docs, but if you think about it I would say it’s not much more than a rich-text editor. Basically it’s the same things as text notes, just with a bit more formatting options. I couldn’t say the same thing about Google Sheets and Google Present.

      No. Matrix is designed for chat, not data, and self-hosting it requires a fair amount of resources.

      Why do you think so? I have tried it and it seems to be as simple as any other server thanks to Docker. I have a script to launch it here (mirror). It seems to use 160MB of memory and about 1% of my CPU when idle. I haven’t done any serious tests though, maybe it wouldn’t scale as well as I think.

      I’d personally just DIY it since it’s really not a ton of logic

      Well… there must always be a protocol behind it, it can be as simple/specific or as complex/generic as you want, but there must always be an agreement of the format of data exchanged between client and server.

      By adopting the Matrix protocol, there wouldn’t be any need to write a custom server, because Matrix servers already exist.

      Matrix is designed for chat, not data

      What’s the difference between chat and data? A chat is a list of messages. A collaboratively-editable document is a list of changes. As far as I understand, Matrix uses “events” to describe things happening. When a user sends a message, the server emits and event like “add user X’s message Y to your list of received messages”. It shouldn’t be too different than emitting an event “replace text at position X with Y” every time a document changes. They even have ephemeral events for temporary state, such as “the user X is currently typing”. That should be similar to “the user X placed their cursor at position Y”.

      Do you think I might be oversimplifying or thinking it wrong?

  • Bluefruit@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    IMO, the more self hostable options we have for services, the better. This sounds like a good idea to me.

    Good luck with your project and thank you for taking the time to contribute to the free and open source community.

  • warmaster@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 month ago

    There’s already an international open source and federated standard for Journals, Tasks and Notes. It’s called iCalendar-standard (RFC-5545) . See the VToDo component, relevant for your Google Keep alternative.

    Also check out JTX Board

    Pros:

    • FOSS
    • Federated
    • List, Grid, Kanban views
    • Reminders
    • Alarms
    • Location
    • More

    Cons:

    • Markdown only, no WYSIWYG.

    Syncing:

    • WebDav server (many FOSS and selfhostable servers available). For mobile client there’s DavX.
    • WebDav Encrypted sync server Etesync which is FOSS and selfhostable.

    These standards and protocols are compatible with almost every software remotely related, including Thunderbird, KDE’s Kontact, and many more. And the feature set matches or even exceeds Google Keep’s capabilities.

    My humble opinion is that you don’t need to reinvent the wheel, just build on top of what is already widely used, tested, documented, FOSS, privacy respecting, standards compliant, audited.

  • andrew0@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    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 :D

    • bruce965@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      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!

  • Lovable Sidekick@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 month ago

    I think any app for text input should have word prediction. It’s mostly for phone users but I’ve found it so handy since getting a phone where it’s well implemented (Pixel 8) I’ve quickly come to think of it as an essential component that should be available to any app.

  • Churbleyimyam@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    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!

    • Suzune@ani.social
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      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.

    • Shimitar@downonthestreet.eu
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      Radicale is an amazing light and efficient CardDAV/CalDAV server. Pair with Dav5x on android and you are fully setup.

  • Chee_Koala@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 month ago

    Hey Hey! What a fantastic idea, I sure hope you can manage!

    I was immediately wondering why you wouldn’t hop on projects already out there. For example: I recently ditched google Keep // Trello for Joplin, which i think already ticks alot of your boxes, even Async collab should work (but not realtime, and you’d have to manually resolve conflicts). Maybe adding better collab in Joplin is a more efficient way to spend your time? LibreOffice also has Async collab, since I think about 6 months, so while it might be young, it will grow, and might also benefit from another person putting their time towards it.

    Whatever you choose to do, I’ll be super interested to see the results.

    • bruce965@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      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!

      • Chee_Koala@lemmy.world
        link
        fedilink
        English
        arrow-up
        0
        ·
        1 month ago

        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!

  • enemenemu@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    1 month ago

    Could you maybe work with someone together, or get inspiration from something like the docs project from the european union https://docs.numerique.gouv.fr/ ?

    Moreover, I’m an “advanced user” and I want to write with markdown and/or typst. A wysiwyg typst editor would be amazing

    Edit: did I mix google keep and docs? Probably. Sorry 😅

    Edit2: are you looking into vjournals? https://connect.mozilla.org/t5/ideas/support-vjournal-in-thunderbird/idi-p/46295

    • bruce965@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      edit-2
      1 month ago

      Oh yeah, I looked into and tried some of the European collaborative docs softwares, in particular I like this Numerique’s clean Material UI interface and I’m definitely going to take inspiration from it (although I haven’t installed and tried it, I just checked screenshots). Although, if you are recommending it as an alternative to my idea, Numerique doesn’t seem to be federated, nor to be privacy-centric (well… it is if you self-host, but my idea is to let people collaborate through different servers, like Lemmy, I don’t want users to need to trust the owner of the servers they join). And I really need an alternative to Google Keep more than Google Docs. I’ll be honest, Google Keep is really well made in my opinion, I would say we don’t yet have a good self-hostable alternative.

      did I mix google keep and docs

      Yeah, Google Keep is more like for text snippets, links, checklists, scribbles, and images. Google Docs is a full-fledged RTF editor. I was planning to implement the two things separately. I considered implementing Markdown in the Google Keep replacement, but I am still undecided whether it might count as feature-bloat.

      vjournals

      Oooh, that’s nice. I know about VCard and VCal, but I didn’t know about VJournal. Thanks for the hint, this might be very useful!

  • Xariq@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    I’ve specifically been looking for a self-hostable keep alternative for a while now. This sounds amazing, will be following the project!

  • mr_jaaay@lemmy.ml
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    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…

    • bruce965@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      Joplin is not really real-time collaborative, nor federated. Or rather, it wasn’t last time I used it a few years ago, unless things have changed now. As a developer, I like Joplin though, that would be a great suggestion.

  • Dangerhart@lemm.ee
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    I would love a replacement for keep. I’m currently running nextcloud and the UI differences or lack of android widgets are keeping my wife from switching. Most of of your list already has great replacements that exist but for some reason a keep competitor that is current just doesn’t exist

    Carnet is a nextcloud app that comes pretty close and but it needs a TON of TLC on the server side. I keep telling myself I’ll work on it but life gets in the way. If you have time and know node/php I would suggest looking there instead of making yet another note app. Nextcloud can handle sharing and has some encryption stuff as other plugins etc. Otherwise keep posting here, I would love to follow your progress.

    • MrMcGasion@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      The Nextcloud Notes app for Android does have a couple of widgets (note list and an individual note), is there widget that is missing?

      • Dangerhart@lemm.ee
        link
        fedilink
        English
        arrow-up
        0
        ·
        edit-2
        1 month ago

        For that one it’s not the widgets but the notes behavior. She wants check lists that self organize as they get checked. In the app itself she wants the post-it note like layout

        Edit: multi layout that shows the contents instead of just title would be nice too

        • MrMcGasion@lemmy.world
          link
          fedilink
          English
          arrow-up
          0
          ·
          1 month ago

          Yeah, check lists in Notes could really use some improvement for sure. Honestly, just now looking through the Github for the Android Nextcloud Notes app it looks like there’s a good deal of technical debt that has been stacking up over time from trying to bring more modern features to what started as a minimal text-only notes app.

          There is a way to enable “grid view” in the app settings for the more post-it view that shows the first part of the contents, but doesn’t seem to show on notes with markdown formatting, so anything with a list doesn’t show a preview.

  • K-Money@lemmy.kmoneyserver.com
    link
    fedilink
    English
    arrow-up
    0
    ·
    1 month ago

    There are several decent note apps that strive to replace Google Keep, but they all seem to fall short on the one feature that keeps me on Keep: Reminders. Being able to jot a note and have it pop up later today, on the weekend, or on an arbitrary recurring schedule is the primary use-case for me. Joplin’s come the closest but the reminders were unreliable, and an unreliable reminder is a useless reminder.

    There’s also something to be said for the number of clicks/menus/presses it takes to create a note. If it’s meant to be just a quick note when something pops into your head then it’s nice if it doesn’t take more than a click or two to get it down.

    One last thing. A feature that I think would greatly enhance adoption would be an option to import existing Keep notes from a Google Takeout into your Simple Notes.

    • bruce965@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      0
      ·
      1 month ago

      I have to admit that I didn’t really think about reminders. That would perhaps make more sense for Simple Calendar, perhaps in the future I might consider linking notes and reminders. Or maybe it would make sense to implement it directly in Simple Notes? I don’t know, I’ll keep that in mind for later, thanks!

      the number of clicks/menus/presses it takes to create a note

      I strongly agree on that. It must be at most as many clicks as on Google Keep, i.e. two clicks (plus a few to open the app).

      import existing Keep notes from a Google Takeout into your Simple Notes

      I didn’t think about that. That shouldn’t be too hard. After the MVP (minimum viable product) will be ready, imports from various common formats should be implemented, and I guess Google Takeout for Google Keep should be supported too.

      Thanks for the suggestions!