A few years ago (~2017) I built an app that uses a hybrid backend. As a user you can choose if you want to use a WebDAV server of your own or simply the builtin AWS backend. That way, people who care about their data can use their own server (e.g. a Nextcloud) as a backend and everyone else doesn't have to bother.
Sadly the code quality is prototypical at best and while I still use the app multiple times per week, I never released it and have quite a few leanings which I want to implement (like rewriting the sync logic in a separate library, changing the server side data model to improve performance, completely reorganize the user interface and add more features to the app), but aren't coming to due to other priorities.
However, what I also learnt is that it is possible to build something like it, even if your use-case includes advanced topics like offline collaboration. My hope is that one day we will have a library that make these things for developers as easy as firebase and every app will have it out of the box.
Sadly the code quality is prototypical at best and while I still use the app multiple times per week, I never released it and have quite a few leanings which I want to implement (like rewriting the sync logic in a separate library, changing the server side data model to improve performance, completely reorganize the user interface and add more features to the app), but aren't coming to due to other priorities.
However, what I also learnt is that it is possible to build something like it, even if your use-case includes advanced topics like offline collaboration. My hope is that one day we will have a library that make these things for developers as easy as firebase and every app will have it out of the box.