8 poin oleh GN⁺ 2024-11-29 | 1 komentar | Bagikan ke WhatsApp
  • Sistem perpustakaan terdistribusi statis sepenuhnya berbasis IPFS, SQLite, dan GitHub
  • Dapat meng-host instance yang diperbarui secara otomatis di Netlify dan GitHub Pages

Perpustakaan terdistribusi

  • Aplikasi web TeaTime sepenuhnya terpisah dari basis data dan file yang diambil.
  • Basis data yang digunakan adalah repositori GitHub dengan topik teatime-database yang dipublikasikan di GitHub Pages.
  • Setiap repositori menyertakan file config.json yang menunjuk ke basis data SQLite.
  • Sebelum melakukan pencarian, pengguna memilih basis data yang akan digunakan, lalu TeaTime menjalankan kueri ke basis data SQLite menggunakan sql.js-httpvfs.
  • Setiap baris dalam basis data SQLite adalah entri perpustakaan, dan kolom hash file digunakan untuk mengambil entri dari IPFS.
  • Karena aplikasi web ini adalah situs statis dan basis datanya terdiri dari file statis, sistem ini mudah di-fork, direplikasi, dan dideploy.
  • Instance frontend adalah repositori GitHub dengan topik teatime-instance.
  • Karena file disajikan dari IPFS, arsitektur terdistribusi ini meningkatkan ketahanan TeaTime.

Fitur

  • Dapat mencari berdasarkan judul, penulis, tahun, atau format
  • Menyimpan riwayat baca dan kembali ke halaman sebelumnya saat membuka ulang file
  • Mengunduh file secara lokal
  • Menyimpan cache file di IndexedDB untuk pemuatan cepat
  • Menjatuhkan file ke TeaTime untuk dirender
  • Mode gelap dan mode layar penuh
  • Tanpa cookie, tanpa login
  • Sepenuhnya terdistribusi

Pengembangan frontend

  • TeaTime adalah aplikasi Nuxt.js.
  • Mudah dijalankan secara lokal: clone repositori lalu ikuti langkah berikut
    1. Instal dependensi: npm install
    2. Jalankan server: npm run dev
    3. Buka http://localhost:3000
  • Lihat dokumentasi Nuxt untuk informasi tambahan

Membuat basis data

  • Anda dapat membuat basis data dengan mem-fork repositori basis data berbasis JSON dan menyesuaikan file JSON sesuai kebutuhan.
  • GitHub Actions membuat file SQLite dan mengunggahnya ke GitHub Pages.
  • Jika ingin membuat basis data SQLite secara manual agar dapat bekerja dengan TeaTime, ikuti contoh di repositori basis data.
  • Setiap basis data SQLite harus menyertakan tabel dengan skema berikut. Nama kolom dapat disesuaikan di file config.json.
    CREATE TABLE "books" (  
      "id" INTEGER,  
      "title" TEXT,  
      "author" TEXT,  
      "year" INTEGER,  
      "lang" TEXT,  
      "size" INTEGER,  
      "ext" TEXT,  
      "ipfs_cid" TEXT,  
      PRIMARY KEY("id" AUTOINCREMENT)  
    );  
    
  • Jika file SQLite terlalu besar, file tersebut dapat dibagi. Perlu merujuk pada informasi optimasi basis data. Penggunaan FTS direkomendasikan.
  • Publikasikan repositori ke GitHub Pages dan tetapkan topik teatime-database ke repositori

Kontribusi

  • Bahkan jika Anda tidak bisa coding, Anda tetap dapat berkontribusi dengan mem-fork repositori ini dan repositori basis data favorit Anda.
  • Saat mem-fork repositori, sebaiknya lakukan fork manual agar tidak terhubung secara langsung (git clone && git remote add your-origin ... && git push your-origin main).
  • Memberi bintang pada repositori basis data yang berguna juga merupakan cara yang baik. Ini menentukan urutan basis data di antarmuka pengguna TeaTime sehingga pengguna lain dapat lebih mudah menemukan basis data terbaik.

1 komentar

 
GN⁺ 2024-11-29
Komentar Hacker News
  • Seorang kontributor IPFS mengusulkan cara untuk meningkatkan penanganan unduhan dari beberapa gateway di IPFS

    • Dengan menggunakan @helia/verified-fetch, CID dapat diterima melalui API mirip Fetch sambil menangani content routing dan pencarian P2P
    • Jika bisa terhubung langsung ke gateway, gateway tersebut juga dapat diteruskan
  • Framework Pear P2P dapat membantu keluar dari GitHub dan beralih ke sistem yang benar-benar terdistribusi

    • Mempertanyakan apa gunanya menyimpan file di IPFS jika indeksnya tetap harus berada di GitHub
  • Sedang mempertimbangkan penggunaan Helia agar pengguna dapat berkontribusi sebagai node di jaringan

    • Saat mencari informasi tentang Helia, hal itu mengingatkan pada OrbitDB
  • Terjadi masalah pemblokiran karena kebijakan CORS saat mengakses sumber daya tertentu

    • Sumber daya dapat diambil dengan menetapkan mode permintaan ke no-cors untuk mengambilnya dengan CORS dinonaktifkan
  • Semua berjalan di browser, tanpa pengguna, cookie, maupun pelacakan

    • Menggunakan LocalStorage dan IndexedDB untuk menyimpan posisi terakhir dibaca dan posisi di dalam file
    • Sangat menyukai fitur ini dan menyampaikan terima kasih
  • Basis data yang digunakan di TeaTime adalah repositori GitHub yang dipublikasikan di GitHub Pages

    • Ini tampak dapat digunakan oleh pengguna jahat sehingga bisa menjadi masalah keamanan
  • Karena tidak tahu apa saja yang ada di dalam basis data, jadi tidak tahu apa yang harus dicari

    • Mengusulkan fitur penjelajahan
  • Ada pertanyaan apakah instance contoh tersedia

  • Bertanya-tanya apakah bookmark Pocket bisa diintegrasikan

    • Berharap semua hal yang ingin dibaca bisa di-cache secara offline, mencegah link rot, dan dapat di-query