TeaTime - Sistem perpustakaan terdistribusi yang ditenagai SQLite, IPFS, dan GitHub
(github.com/bjesus)- 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-databaseyang dipublikasikan di GitHub Pages. - Setiap repositori menyertakan file
config.jsonyang 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
- Instal dependensi:
npm install - Jalankan server:
npm run dev - Buka
http://localhost:3000
- Instal dependensi:
- 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-databaseke 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
Komentar Hacker News
Seorang kontributor IPFS mengusulkan cara untuk meningkatkan penanganan unduhan dari beberapa gateway di IPFS
Framework Pear P2P dapat membantu keluar dari GitHub dan beralih ke sistem yang benar-benar terdistribusi
Sedang mempertimbangkan penggunaan Helia agar pengguna dapat berkontribusi sebagai node di jaringan
Terjadi masalah pemblokiran karena kebijakan CORS saat mengakses sumber daya tertentu
no-corsuntuk mengambilnya dengan CORS dinonaktifkanSemua berjalan di browser, tanpa pengguna, cookie, maupun pelacakan
Basis data yang digunakan di TeaTime adalah repositori GitHub yang dipublikasikan di GitHub Pages
Karena tidak tahu apa saja yang ada di dalam basis data, jadi tidak tahu apa yang harus dicari
Ada pertanyaan apakah instance contoh tersedia
Bertanya-tanya apakah bookmark Pocket bisa diintegrasikan