Join the discussion

Write your take first — we'll ask for email only when you're ready to publish.

  • Hacker News
  • This would be great if it evolved in a universal format/spec/feature supported by all major browsers. Only then you'd have to deal with cross web engine compatibilities. And if capsules need to do something non-trivial then you need to consider all the security aspects of having system, file or network level access. Just like any executable. Otherwise with custom app to run capsules it feels like something that can be vibe coded with electron/nw.js rather easily.

    But there is something compelling in the idea - there is need for an interactive smart document format that you can share around easily. Kind of like a next gen markdown derivative cross with jupyter notebook where you bundle data, live parametric visualizations, code, audio, video, asciicinema like playback, comments, metadata, file artifacts etc

  • I love this idea! One of the fallouts from widespread AI adoption that I've seen: They're very good at creating visual artifacts, but if you ever have to provide data in those artifacts, you don't really have a great way to share it without hard coding it.

    > One downside with this approach is that multiple people working on it will create different copies. To make it possible to merge different copies of the same file, each data entry has a unique UUID and timestamp.

    This was the first thing that popped up in my mind: Changes stemming from two sources and reconciling them. I see that you have a statement about how to handle data entry from different sources, but I don't see exactly how those are reconciled? For instance, if two users have a copy of the .capsule and make changes, then want to share their changes with the other, you have two individual .capsules with different data.

    How do you merge them?

  • You can get a cheap approximation of this with chromium browsers + Filesystem API and a PWA manifest for that native-ish feel. AI has reignited my interest in building based 100% on browser native features.

    https://developer.mozilla.org/en-US/docs/Web/API/File_System...

  • I've been working on this exact idea, with sqlar as the "format specification". Works in the browser, and desktop + Android using Tauri.

    https://github.com/JoshTheDerf/uapp

    Demo apps and games: https://thederf.com/uapp/demo/

  • My take: If your app needs to update and preserve state (using SQLite or any other DB), it is probably not something you want to pass around as a bundled file.

    Or at least, it's extremely limiting, compared with hosting it somewhere on the web, which is not that hard to do these days.

    Think of the workflow: Any time the state changes, you need to email a new Capsule file to whoever else is using the app. And one would think the state would change at least occasionally, because otherwise there's little reason to use a DB.

    Alternatively, you can just host it on the web, the DB state dynamically updates, and it's automatically available to anyone with app access. Isn't that a lot simpler?

  • I don't know, this seems like an idea that maybe works in a specific context being generalized past the point of the original idea making sense.

    If the user needs to download a specific application to run this these web apps, then why not just send them that initial application in the first place? Why jump through the hoops of using Capsule when the same hoops can be jumped through to get to the same endpoint?

    If this was a near-universally adopted application, then it'd make sense. But it's not, and the closest thing we have to that are browsers... which already do what you're describing?

    Bundling data with the application makes sense, but is also only appropriate in pretty narrow circumstances. If I'm willing to ship my data with the web app, then I'll just embed the data in the HTML file. If the expectation is that the user will modify this data, then I don't think I'd want to ship it like this.

  • For the curious, the note taking app Trilium has a "standalone" mode¹, built on top of OPFS² and sqlite OPFS persistence, such that your notes (~web pages here) are stored in sqlite locally, offline-available, optionally syncing with a remote, while being a pure local web app (after the app assets have been downloaded once). If you want to take your whole personal notes/wiki/pkms for offline access on a device you don't own/have install rights, that's the only way I know. I suspect that OP could have gone this route instead had he known about it?

    ¹: https://app.triliumnotes.org/

    ²: https://developer.mozilla.org/en-US/docs/Web/API/File_System...

    ³: https://sqlite.org/wasm/doc/trunk/persistence.md#opfs

    by ezst
  • > but trying to save data required hosting it somewhere

    With the File System Access API, webpages nowadays can read and write local files just like desktop applications:

    https://developer.chrome.com/docs/capabilities/web-apis/file...

    Try this text editor for example:

    https://googlechromelabs.github.io/text-editor/

    It works nicely on Desktop and Mobile.

    by mg

Explore Birbla archives

Capsule – Single-file web apps that save their data into SQLite · Birbla