8 Punkte von GN⁺ 2024-11-29 | 1 Kommentare | Auf WhatsApp teilen
  • 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-database versehenes 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-httpvfs ab.
  • 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-instance versehen 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
    1. Abhängigkeiten installieren: npm install
    2. Server starten: npm run dev
    3. Zu http://localhost:3000 wechseln
  • 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.json angepasst 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-database zuweisen

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

 
GN⁺ 2024-11-29
Hacker-News-Kommentare
  • Ein IPFS-Mitwirkender schlägt vor, wie sich die Verarbeitung von Downloads aus mehreren Gateways in IPFS verbessern ließe

    • Mit @helia/verified-fetch können CIDs über eine Fetch-ähnliche API akzeptiert sowie Content Routing und P2P-Suche verarbeitet werden
    • Falls eine direkte Verbindung zu einem Gateway möglich ist, kann das Gateway auch übergeben werden
  • Das Pear-P2P-Framework könnte dabei helfen, sich von GitHub zu lösen und zu einem wirklich verteilten System zu werden

    • Es wird infrage gestellt, welchen Sinn es hat, Dateien auf IPFS zu speichern, wenn der Index auf GitHub liegen muss
  • Es wird erwogen, Helia zu verwenden, damit Nutzer als Knoten des Netzwerks beitragen können

    • Bei der Suche nach Informationen zu Helia musste an OrbitDB gedacht werden
  • Beim Zugriff auf bestimmte Ressourcen tritt ein Problem auf, bei dem aufgrund der CORS-Richtlinie blockiert wird

    • Durch Setzen des Request-Modus auf 'no-cors' können Ressourcen bei deaktivierter CORS-Durchsetzung abgerufen werden
  • Alles läuft im Browser, ohne Nutzerkonten, Cookies oder Tracking

    • Mit LocalStorage und IndexedDB werden die zuletzt gelesene Stelle und die Position innerhalb der Datei gespeichert
    • Diese Funktion gefällt sehr und es wird Dank ausgesprochen
  • Die in TeaTime verwendete Datenbank ist ein auf GitHub Pages veröffentlichtes GitHub-Repository

    • Ein böswilliger Nutzer könnte dieses Tag offenbar verwenden, was ein Sicherheitsproblem darstellen könnte
  • Da nicht bekannt ist, was sich in der Datenbank befindet, ist auch nicht klar, wonach gesucht werden soll

    • Eine Browse-Funktion wird vorgeschlagen
  • Es gibt die Frage, ob eine Beispielinstanz verfügbar ist

  • Es wird gefragt, ob sich Pocket-Bookmarks integrieren lassen

    • Es besteht die Hoffnung, alles, was man lesen möchte, offline cachen, Link Rot verhindern und Abfragen darauf ausführen zu können