Let’s assume we want to develop a web app called Blog. With Blog people are able to write and publish blog posts in a visual editor. We want to make this app available to everyone, not just software people who know how to use Git, SQL databases, and deploy to a web server. In other words:
How can we enable Susan to download Blog and start writing posts at iamsusan.com?
It doesn’t really matter what technology we’ll use. It could be PHP, or some Node.js-based setup. Ideally, something that runs on any Linux machine. What’s important though is that we don’t rely on any external services. I mean zero. No AWS S3, no service for sending emails, no external database. Instead, imagine your app could be represented as a simple .zip file with certain conventions, containing the source code and the data (SQLite file).
Now imagine you could send that .zip file to Susan. She could go to a service provider that supports the format, register a domain and simply upload the web app, which instantly becomes available at iamsusan.com. 🎉 At any time she can download the current state of the app as a .zip file and run it locally, or move it to another domain.
The service provider must not have access to Susan’s data. They just provide an interface to the hardware the portable web app runs on. Only Susan has access to the data through the web interface the app provides. So she’ll create/edit/delete blog posts there. Since she really owns the webspace (like she would own a root server), she can also go to app settings and enter her SMTP credentials. This way, emails to subscribers can be sent as the person themselves. Which makes it more personal, and emails will less likely end up in the spam folder.
Talk is cheap, so let’s turn this idea into reality. Together with Tom Atkins, I’m working on an little app called PostOwl (released as open source).
The app is built with Svelte and uses an SQLite database for storage. We can already deploy it with a few steps via Fly.io. A cool next step would be to provide an interface that lets you:
Create a domain
Upload a .zip file containing the PostOwl app and data
Login into your PostOwl with your secret password
What do you think about self-contained web apps? If the internet goes black, will the server in your basement still serve your website? :)
Michael, your similar (to me) idea of Self-hosting a scientific journal (eLife Lens, Texture, Substance) has remained an unrealised dream for me. Partly because of my lack of programming skills and use of Github, partly because of the incompleteness of this wonderful project. The idea was great, the project of initiators and implementers is almost complete ... Reading now Neubauer, F., Bredl, P., Xu, M. et al. MetaConfigurator: A User-Friendly Tool for Editing Structured Data Files. Datenbank Spektrum 24, 161–169 (2024). https://doi.org/10.1007/s13222-024-00472-7 - New perspectives on working with structured documents, new possibilities, but not finished and again requires skills I lack ...
On Ken, we're trying to figure out how the world works — through written conversations with depth and substance.