TeaTime – Ein dezentrales Bibliothekssystem auf Basis von SQLite, IPFS und GitHub
(github.com/bjesus)- Ein vollständig statisches dezentrales Bibliothekssystem auf Basis von IPFS, SQLite und GitHub
- Hosting von Instanzen möglich, die auf Netlify und GitHub Pages automatisch aktualisiert werden
Dezentrale Bibliothek
- Die TeaTime-Webanwendung ist vollständig von der Datenbank und den abgerufenen Dateien entkoppelt.
- Die verwendete Datenbank ist ein mit dem Thema
teatime-databaseversehenes GitHub-Repository, das auf GitHub Pages veröffentlicht wird. - Jedes Repository enthält eine Datei
config.json, die auf eine SQLite-Datenbank verweist. - Bevor Benutzer eine Suche ausführen, wählen sie die zu verwendende Datenbank aus, und TeaTime fragt die SQLite-Datenbank mit
sql.js-httpvfsab. - Jede Zeile der SQLite-Datenbank ist ein Eintrag der Bibliothek, und die Spalte mit dem Datei-Hash wird verwendet, um den Eintrag von IPFS abzurufen.
- Da die Webanwendung eine statische Website ist und die Datenbank aus statischen Dateien besteht, lässt sie sich leicht forken, spiegeln und bereitstellen.
- Frontend-Instanzen sind GitHub-Repositories, die mit dem Thema
teatime-instanceversehen sind. - Da Dateien über IPFS bereitgestellt werden, erhöht diese dezentrale Architektur die Resilienz von TeaTime.
Funktionen
- Suche nach Titel, Autor, Jahr oder Format
- Lesefortschritt speichern und beim erneuten Öffnen einer Datei zur Seite zurückkehren
- Dateien lokal herunterladen
- Dateien in IndexedDB cachen für schnelles Laden
- Dateien in TeaTime ziehen und zur Darstellung ablegen
- Dark Mode und Vollbildmodus
- Keine Cookies, kein Login
- Vollständig dezentral
Frontend-Entwicklung
- TeaTime ist eine Nuxt.js-Anwendung.
- Lässt sich lokal einfach ausführen: Repository klonen und die folgenden Schritte ausführen
- Abhängigkeiten installieren:
npm install - Server starten:
npm run dev - Zu
http://localhost:3000wechseln
- Abhängigkeiten installieren:
- Weitere Informationen finden sich in der Nuxt-Dokumentation.
Datenbank erstellen
- Eine Datenbank kann erstellt werden, indem das JSON-basierte Datenbank-Repository geforkt und die JSON-Dateien nach Bedarf angepasst werden.
- GitHub Actions erzeugt die SQLite-Datei und lädt sie auf GitHub Pages hoch.
- Wenn eine SQLite-Datenbank, die mit TeaTime funktioniert, manuell erstellt werden soll, dem Beispiel im Datenbank-Repository folgen.
- Jede SQLite-Datenbank enthält eine Tabelle mit dem untenstehenden Schema. Die Spaltennamen können in der Datei
config.jsonangepasst werden.CREATE TABLE "books" ( "id" INTEGER, "title" TEXT, "author" TEXT, "year" INTEGER, "lang" TEXT, "size" INTEGER, "ext" TEXT, "ipfs_cid" TEXT, PRIMARY KEY("id" AUTOINCREMENT) ); - Wenn die SQLite-Datei zu groß ist, kann sie aufgeteilt werden. Informationen zur Datenbankoptimierung sollten beachtet werden. Die Verwendung von FTS wird empfohlen.
- Das Repository auf GitHub Pages veröffentlichen und dem Repository das Thema
teatime-databasezuweisen
Beitrag leisten
- Auch ohne Programmierkenntnisse kann man beitragen, indem man dieses Repository und sein bevorzugtes Datenbank-Repository forkt.
- Beim Forken eines Repositories ist es besser, manuell zu forken, damit es nicht direkt verknüpft ist (
git clone&&git remote add your-origin ...&&git push your-origin main). - Es ist auch eine gute Möglichkeit, nützlichen Datenbank-Repositories einen Stern zu geben. Das bestimmt die Reihenfolge der Datenbanken in der TeaTime-Benutzeroberfläche und hilft anderen Nutzern, die besten Datenbanken leichter zu finden.
1 Kommentare
Hacker-News-Kommentare
Ein IPFS-Mitwirkender schlägt vor, wie sich die Verarbeitung von Downloads aus mehreren Gateways in IPFS verbessern ließe
@helia/verified-fetchkönnen CIDs über eine Fetch-ähnliche API akzeptiert sowie Content Routing und P2P-Suche verarbeitet werdenDas Pear-P2P-Framework könnte dabei helfen, sich von GitHub zu lösen und zu einem wirklich verteilten System zu werden
Es wird erwogen, Helia zu verwenden, damit Nutzer als Knoten des Netzwerks beitragen können
Beim Zugriff auf bestimmte Ressourcen tritt ein Problem auf, bei dem aufgrund der CORS-Richtlinie blockiert wird
'no-cors'können Ressourcen bei deaktivierter CORS-Durchsetzung abgerufen werdenAlles läuft im Browser, ohne Nutzerkonten, Cookies oder Tracking
Die in TeaTime verwendete Datenbank ist ein auf GitHub Pages veröffentlichtes GitHub-Repository
Da nicht bekannt ist, was sich in der Datenbank befindet, ist auch nicht klar, wonach gesucht werden soll
Es gibt die Frage, ob eine Beispielinstanz verfügbar ist
Es wird gefragt, ob sich Pocket-Bookmarks integrieren lassen