HeadlinesBriefing favicon HeadlinesBriefing.com

Capsule: Web-Apps in einer SQLite-Datei

Hacker News •
×

Hey HN, ich hatte immer das Problem, dass das Erstellen von HTML-Seiten einfach ist, aber das Speichern von Daten erforderte, sie irgendwo zu hosten, und das Teilen war nicht einfach. In den letzten Monaten habe ich eine App namens Capsule gebaut (das ist auch der Dateierweiterungsname), geschrieben in Rust mit Tauri 2.0, die es erlaubt, eine HTML-App und ihre Daten in eine einzelne SQLite-Datei zu packen. Die HTML-Datei und alle zugehörigen Assets werden direkt in die Datenbank eingebettet.

Benutzerdaten können entweder als localStorage-Schlüssel/Wert-Speicher oder über eine MongoDB-inspirierte Collections-API als Dokumente, gespeichert in einer Tabelle in der Datei, gesichert werden. Man kann auch andere Assets wie PDF-Dateien oder Bilder direkt in der Datenbank speichern, um verschiedene Dokumente zusammenzuhalten. Alle Daten lassen sich bei Bedarf einfach als CSV oder JSON exportieren.

Datenschutz und Sicherheit hatten hohe Priorität, daher können Dokumente standardmäßig nichts tun. Sie haben keinen direkten Zugriff auf das Dateisystem und benötigen Erlaubnis für Internetzugriff. Das Berechtigungsmodell ist noch etwas, an dem ich arbeite, um es zu verbessern.

Capsule-Dokumente können auch lokale oder Remote-KI-Modelle für dokumentenspezifische KI-Funktionen nutzen. Ein Nachteil dieses Ansatzes ist, dass mehrere Personen, die daran arbeiten, verschiedene Kopien erstellen. Um das Zusammenführen verschiedener Kopien derselben Datei zu ermöglichen, hat jeder Dateneintrag eine eindeutige UUID und einen Zeitstempel.

Ich plane, die Dateiformat-Spezifikation für Version 1.0 der App zu öffnen, damit andere Apps Capsule-Dateien lesen oder schreiben können. Man kann es in der Web-Vorschau unter https://withcapsule.app/preview mit vorgefertigten Templates ausprobieren oder jeden beliebigen KI-Anbieter nutzen, um eine benutzerdefinierte, für Capsule optimierte App zu erstellen. Ich arbeite noch am Dateiformat, aber es gibt Migrationen für jede neue Version, sodass Daten bei der Nutzung neuerer App-Versionen in Zukunft nie verloren gehen sollten.