TeaTime - SQLite, IPFS ve GitHub ile çalışan merkeziyetsiz kütüphane sistemi
(github.com/bjesus)- IPFS, SQLite ve GitHub tabanlı tamamen statik bir dağıtık kütüphane sistemi
- Netlify ve GitHub Pages üzerinde otomatik güncellenen instance barındırma desteği
Dağıtık kütüphane
- TeaTime web uygulaması, veritabanı ve getirilen dosyalardan tamamen ayrıdır.
- Kullanılan veritabanı, GitHub Pages'te yayımlanmış ve
teatime-databasekonusu ile etiketlenmiş bir GitHub deposudur. - Her depo, SQLite veritabanını işaret eden bir
config.jsondosyası içerir. - Kullanıcı arama yapmadan önce kullanacağı veritabanını seçer ve TeaTime, SQLite veritabanını sorgulamak için
sql.js-httpvfskullanır. - SQLite veritabanındaki her satır, kütüphanedeki bir öğedir; dosya hash sütunu ise öğeyi IPFS'den getirmek için kullanılır.
- Web uygulaması statik bir site olduğundan ve veritabanı da statik dosyalardan oluştuğundan kolayca fork edilebilir, kopyalanabilir ve dağıtılabilir.
- Frontend instance'ları,
teatime-instancekonusu ile etiketlenmiş GitHub depolarıdır. - Dosyalar IPFS üzerinden sunulduğu için bu dağıtık mimari TeaTime'ın dayanıklılığını artırır.
Özellikler
- Başlık, yazar, yıl veya format ile arama
- Okuma geçmişini koruma ve dosya yeniden açıldığında kalınan sayfaya dönme
- Dosyaları yerel olarak indirme
- Hızlı yükleme için dosyaları IndexedDB içinde önbelleğe alma
- Dosyaları TeaTime'a sürükleyip bırakarak görüntüleme
- Karanlık mod ve tam ekran modu
- Çerez yok, giriş yok
- Tamamen dağıtık
Frontend geliştirme
- TeaTime bir Nuxt.js uygulamasıdır.
- Yerelde kolayca çalıştırılabilir: depoyu klonlayın ve şu adımları izleyin
- Bağımlılıkları yükleyin:
npm install - Sunucuyu çalıştırın:
npm run dev http://localhost:3000adresine gidin
- Bağımlılıkları yükleyin:
- Daha fazla bilgi için Nuxt dokümantasyonuna bakabilirsiniz.
Veritabanı oluşturma
- JSON tabanlı veritabanı deposunu fork edip JSON dosyalarını ihtiyaca göre düzenleyerek veritabanı oluşturabilirsiniz.
- GitHub Actions, SQLite dosyasını oluşturur ve GitHub Pages'e yükler.
- TeaTime ile çalışabilecek bir SQLite veritabanını manuel olarak oluşturmak için veritabanı deposundaki örneği izleyin.
- Her SQLite veritabanı, aşağıdaki şemaya sahip bir tablo içerir. Sütun adları
config.jsondosyasında ayarlanabilir.CREATE TABLE "books" ( "id" INTEGER, "title" TEXT, "author" TEXT, "year" INTEGER, "lang" TEXT, "size" INTEGER, "ext" TEXT, "ipfs_cid" TEXT, PRIMARY KEY("id" AUTOINCREMENT) ); - SQLite dosyası çok büyükse bölünebilir. Veritabanı optimizasyon bilgilerine bakılması gerekir. FTS kullanımı önerilir.
- Depoyu GitHub Pages'te yayımlayın ve depoya
teatime-databasekonusunu atayın.
Katkı
- Kod yazamıyor olsanız bile bu depoyu ve sevdiğiniz veritabanı depolarını fork ederek katkıda bulunabilirsiniz.
- Depoyu fork ederken doğrudan bağlantılı olmaması için manuel fork yapmak daha iyidir (
git clone&&git remote add your-origin ...&&git push your-origin main). - Faydalı veritabanı depolarına yıldız vermek de iyi bir yöntemdir. Bu, TeaTime kullanıcı arayüzünde veritabanlarının sırasını belirler ve diğer kullanıcıların en iyi veritabanlarını daha kolay bulmasını sağlar.
1 yorum
Hacker News yorumu
Bir IPFS katkıcısı, IPFS'te birden fazla gateway üzerinden indirmelerin işlenme şeklini iyileştirebilecek bir yöntem öneriyor
@helia/verified-fetchkullanıldığında, Fetch benzeri bir API üzerinden CID'leri kabul edebilir ve içerik yönlendirme ile P2P aramayı işleyebilirPear P2P framework'ü, GitHub'dan çıkıp gerçekten dağıtık bir sisteme geçmeye yardımcı olabilir
Kullanıcıların ağın bir düğümü olarak katkıda bulunabilmesi için Helia kullanılması değerlendiriliyor
Belirli kaynaklara erişirken CORS politikası nedeniyle engellenme sorunu yaşanıyor
no-corsolarak ayarlanarak, CORS devre dışıyken kaynak getirilebilirHer şey tarayıcıda çalışıyor; kullanıcı, çerez veya takip yok
TeaTime'da kullanılan veritabanı, GitHub Pages'te yayımlanmış bir GitHub deposu
Veritabanında ne olduğu bilinmediği için ne aranacağı da bilinmiyor
Örnek bir instance'ın kullanılıp kullanılamayacağı soruluyor
Pocket yer imleriyle entegrasyonun mümkün olup olmadığı merak ediliyor