For all my career I feared managing data.
When I think about making an app, I default to thinking I don't want to manage any data.
A few months ago I was building a little concept project management app and at some point I was thinking "this could be a real app".
I spent a few days trying to see if I could find a way to make a project management app without having to manage user's data.
I could not find a way. Not as a web app.
With a desktop app? Sure. Mobile app? Sure.
But on the web we have this unusual burden. As developers, we can't just write the software. We also need to manage all the data that users will process through our software.
Because the web does not have a storage, a data layer.
It's a shame.
I don't want to manage user's data.
There's lots of liability when you manage data. First, it's all centralized in one location, so you need to scale that as your users grow, and their usage of the app grows.
Then you have security and privacy concerns. What happens if someone hacks my server and wipes all the data, steals the data? You have to worry about proper backup and restoring procedures, auditing, etc.
Multiply that for all the web apps you use.
Browsers kind of provided a solution for temporary data, with local storage and IndexedDB, but it's not really usable.
I've seen some projects on the Web that try to do this, but what would really work would be a data layer managed by browsers. Every app could connect to it. And then you have 3rd party services that hook up to that.
You know how "Sign up with Apple" works? I just click that button, and the whole signup process is done for me automatically. It works wonders.
Imagine for example if Apple provides a way to access iCloud from any app.
I could use Trello, Basecamp, anything, and the data those apps use would be my own data. I don't have to send it to 3rd party server. It would live in my trusted cloud data provider.
The browser would be a bridge between the app and the storage, so it could manage all the permissions and APIs.
I mentioned Apple but it could be Google, DigitalOcean, anything. It could even be entirely my own "host it yourself" server.
Of course this could only apply for a subset of apps.
Facebook could not be built in this way. It needs its own centralized storage because data is their core business. Without data, Facebook is nothing.
Same for Google, Gmail, any app that requires collaboration and a multi-user experience.
But for those apps that are single-user, which is probably 90% of the apps that solopreneurs and indie hackers build, it could simplify a lot.
I am writing those notes on Bear, a notes app, on the iPad.
It syncs to the iPhone and the Mac via iCloud.
But there's no browser version because... you can't sync through a website. In that case, the website would need to store my notes on their servers.
Now Bear does not care what I write. They just ship updates to the software, but the data is not something they necessarily care about.
They could, if they want. But they don't have to.
So.. about that little concept project management app I mentioned before, a few days ago I thought "well I could make it as an app".
I have to confess that thought already popped up in my mind because I started it as an Electron Desktop app, but I stopped working on it because I believed that limiting to desktop could be.. too limiting?
But this time was different, I was considering using Swift and making it, with just a single codebase, an iOS, iPadOS and Mac app.
In this way the "dream" is already there. Apple provides the tools to store data, you just worry about shipping a great app.
But yes then there's whole other set of problems. The first of which is that it's a walled garden.
We could make the web ..ehm, they could make the web more app-like. But for sure Apple does not care. Actually they might care about the opposite, as this would be a competitor to their own App Store business. Maybe the same is for Google?
Not sure. I just thought it'd be cool because I'd use some sort of distributed database and data storage for user files instead of having to worry about them.
Never gonna happen.