8 puan yazan GN⁺ 2024-11-29 | 1 yorum | WhatsApp'ta paylaş
  • 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-database konusu ile etiketlenmiş bir GitHub deposudur.
  • Her depo, SQLite veritabanını işaret eden bir config.json dosyası içerir.
  • Kullanıcı arama yapmadan önce kullanacağı veritabanını seçer ve TeaTime, SQLite veritabanını sorgulamak için sql.js-httpvfs kullanı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-instance konusu 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
    1. Bağımlılıkları yükleyin: npm install
    2. Sunucuyu çalıştırın: npm run dev
    3. http://localhost:3000 adresine gidin
  • 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.json dosyası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-database konusunu 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

 
GN⁺ 2024-11-29
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-fetch kullanıldığında, Fetch benzeri bir API üzerinden CID'leri kabul edebilir ve içerik yönlendirme ile P2P aramayı işleyebilir
    • Gateway'e doğrudan bağlanabiliyorsa, gateway'i de iletebilir
  • Pear P2P framework'ü, GitHub'dan çıkıp gerçekten dağıtık bir sisteme geçmeye yardımcı olabilir

    • Eğer indeksin GitHub'da olması gerekiyorsa, dosyaları IPFS'te depolamanın ne anlamı olduğu sorgulanıyor
  • Kullanıcıların ağın bir düğümü olarak katkıda bulunabilmesi için Helia kullanılması değerlendiriliyor

    • Helia hakkında bilgi aranırken OrbitDB'yi hatırlattığı belirtiliyor
  • Belirli kaynaklara erişirken CORS politikası nedeniyle engellenme sorunu yaşanıyor

    • İsteğin modu no-cors olarak ayarlanarak, CORS devre dışıyken kaynak getirilebilir
  • Her şey tarayıcıda çalışıyor; kullanıcı, çerez veya takip yok

    • Son okunan konum ve dosya içindeki konum, LocalStorage ve IndexedDB kullanılarak saklanıyor
    • Bu özellik çok beğeniliyor ve teşekkür ediliyor
  • TeaTime'da kullanılan veritabanı, GitHub Pages'te yayımlanmış bir GitHub deposu

    • Kötü niyetli bir kullanıcının bu etiketi kullanabilmesi nedeniyle bunun bir güvenlik sorunu olabileceği belirtiliyor
  • Veritabanında ne olduğu bilinmediği için ne aranacağı da bilinmiyor

    • Bir keşfetme özelliği öneriliyor
  • Örnek bir instance'ın kullanılıp kullanılamayacağı soruluyor

  • Pocket yer imleriyle entegrasyonun mümkün olup olmadığı merak ediliyor

    • Okumak istenen her şeyin çevrimdışı önbelleğe alınabilmesi, link çürümesinin önlenmesi ve sorgulanabilmesi umuluyor