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.

  • sugar_in_your_tea@sh.itjust.works
    link
    fedilink
    English
    arrow-up
    3
    ·
    edit-2
    6 days 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.

    • bruce965@lemmy.mlOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      4 days 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?

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

        What do you mean by “separately be able to clear completed tasks”?

        I just mean keep the list of completed tasks until I manually push clear, just like Google Keep does (cross them out), and only clear the completed tasks when I push a button.

        Basically, I sometimes mark tasks done on accident, and sometimes I’ll carry the extra tasks on to the next trip.

        Basically it’s the same things as text notes, just with a bit more formatting options.

        It has a lot more formatting options:

        • positionable images, w/ text flow options
        • drawings
        • tables and charts
        • print settings, like margins, header/footer, etc

        You could get something pretty useful by just making a collaborative Markdown editor, but then it’s not really a Docs replacement, but more of an Etherpad replacement.

        That’s fine, I guess I’m more concerned about scope creep ultimately killing the project.

        there must always be a protocol behind it

        Sure. I guess my point is that Matrix is targeting text, audio, and video chat with hundreds if not thousands of simultaneous users in one room, all with E2EE enabled.

        A Google Keep replacement doesn’t even need to be real time collaborative, and it certainly doesn’t need to support hundreds of simultaneous users on a given document. It’s like using a chainsaw to trim a bush, it’s way overkill, and there’s a decent chance of changes to the protocol breaking stuff for you since you don’t need most of the features.

        The backend for this just needs to notify other clients of a change, real time isn’t necessary or even particularly helpful.

        And you’d still need an application server to handle the storage and retrieval of the data, no? So all Matrix is buying you is synchronization, which is just a simple pub/sub.

        What’s the difference between chat and data?

        You don’t really need a list of changes for a shared TODO app. The data is going to be small and going back in time isn’t that useful.

        Maybe it makes sense for something with revision history, like a DIY git. But TODO lists are ephemeral, and I really don’t care about them after I’m done with my shopping trip.

        the user X is currently typing

        Seems like overkill to me.

        Maybe it makes sense for something more fancy like an Etherpad or Confluence replacement, but not for a shopping list.

        Build it however you like and prove me wrong, I’ll check it out if it solves my problem.

    • aksdb@lemmy.world
      link
      fedilink
      English
      arrow-up
      3
      ·
      6 days 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
        2
        ·
        6 days 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).