8 पॉइंट द्वारा GN⁺ 2024-11-29 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • IPFS, SQLite और GitHub पर आधारित एक पूरी तरह static विकेंद्रीकृत लाइब्रेरी सिस्टम
  • Netlify और GitHub Pages पर अपने-आप अपडेट होने वाले instance host किए जा सकते हैं

विकेंद्रीकृत लाइब्रेरी

  • TeaTime वेब application डेटाबेस और प्राप्त की जाने वाली फ़ाइलों से पूरी तरह अलग है।
  • उपयोग किया जाने वाला डेटाबेस teatime-database topic के साथ टैग किया गया GitHub repository है, जिसे GitHub Pages पर प्रकाशित किया गया है।
  • हर repository में एक config.json फ़ाइल शामिल होती है, जो SQLite डेटाबेस की ओर संकेत करती है।
  • उपयोगकर्ता search करने से पहले उपयोग किए जाने वाले डेटाबेस का चयन करता है, और TeaTime sql.js-httpvfs का उपयोग करके SQLite डेटाबेस को query करता है।
  • SQLite डेटाबेस की हर row लाइब्रेरी की एक item होती है, और file hash column का उपयोग IPFS से item प्राप्त करने के लिए किया जाता है।
  • वेब application एक static site है और डेटाबेस static files से बना है, इसलिए इसे आसानी से fork, replicate और deploy किया जा सकता है।
  • frontend instance teatime-instance topic के साथ टैग किया गया GitHub repository है।
  • चूंकि फ़ाइलें IPFS से serve की जाती हैं, यह विकेंद्रीकृत architecture TeaTime की resilience बढ़ाता है।

सुविधाएँ

  • शीर्षक, लेखक, वर्ष या format के आधार पर search किया जा सकता है
  • reading history बनाए रखना और फ़ाइल दोबारा खोलने पर उसी page पर वापस जाना
  • फ़ाइलों को local में download करना
  • तेज़ loading के लिए फ़ाइलों को IndexedDB में cache करना
  • render करने के लिए फ़ाइलों को TeaTime में drop करना
  • dark mode और full screen mode
  • कोई cookies नहीं, कोई login नहीं
  • पूरी तरह विकेंद्रीकृत

frontend development

  • TeaTime एक Nuxt.js application है।
  • इसे local में आसानी से चलाया जा सकता है: repository को clone करें और ये steps करें
    1. dependencies install करें: npm install
    2. server चलाएँ: npm run dev
    3. http://localhost:3000 पर जाएँ
  • अतिरिक्त जानकारी के लिए Nuxt documentation देखें

डेटाबेस बनाना

  • JSON-आधारित डेटाबेस repository को fork करके और JSON फ़ाइलों को अपनी ज़रूरत के अनुसार समायोजित करके डेटाबेस बनाया जा सकता है।
  • GitHub Actions SQLite फ़ाइल बनाता है और उसे GitHub Pages पर upload करता है।
  • TeaTime के साथ काम करने वाला SQLite डेटाबेस manually बनाने के लिए डेटाबेस repository के उदाहरणों का पालन करें।
  • हर SQLite डेटाबेस में नीचे दिए गए schema वाली एक table शामिल होती है। column names को 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)  
    );  
    
  • अगर SQLite फ़ाइल बहुत बड़ी हो, तो उसे split किया जा सकता है। डेटाबेस optimization की जानकारी देखनी चाहिए। FTS के उपयोग की सिफारिश की जाती है।
  • repository को GitHub Pages पर publish करें और repository को teatime-database topic असाइन करें

योगदान

  • अगर आप coding नहीं भी कर सकते, तब भी इस repository और अपनी पसंदीदा डेटाबेस repository को fork करके योगदान दे सकते हैं।
  • repository को fork करते समय, सीधे जुड़े बिना manually fork करना बेहतर है (git clone && git remote add your-origin ... && git push your-origin main)।
  • उपयोगी डेटाबेस repository पर star जोड़ना भी एक अच्छा तरीका है। इससे TeaTime user interface में डेटाबेस की क्रम-व्यवस्था तय होती है, ताकि दूसरे उपयोगकर्ता आसानी से सबसे अच्छे डेटाबेस खोज सकें।

1 टिप्पणियां

 
GN⁺ 2024-11-29
Hacker News टिप्पणियाँ
  • एक IPFS contributor ने सुझाव दिया कि IPFS में कई gateways से डाउनलोड को हैंडल करने के तरीके को बेहतर बनाया जा सकता है

    • @helia/verified-fetch का उपयोग करने पर Fetch-जैसे API के जरिए CIDs स्वीकार किए जा सकते हैं और content routing तथा P2P lookup को हैंडल किया जा सकता है
    • अगर gateway से सीधे कनेक्ट किया जा सकता है, तो gateway को भी पास किया जा सकता है
  • Pear P2P framework, GitHub से बाहर निकलकर एक वास्तविक distributed system में जाने में मदद कर सकता है

    • अगर index को GitHub पर ही होना है, तो IPFS में files स्टोर करने का मतलब क्या है, इस पर सवाल उठाया गया
  • Helia का उपयोग करके users को network के node के रूप में योगदान देने देने पर विचार किया जा रहा है

    • Helia के बारे में खोजते हुए OrbitDB की याद आई
  • कुछ resources तक पहुँचते समय CORS policy के कारण block होने की समस्या आ रही है

    • request mode को no-cors पर सेट करके CORS को disable स्थिति में रखकर resource लाया जा सकता है
  • ब्राउज़र में ही सब कुछ होता है, और कोई user, cookie या tracking नहीं है

    • LocalStorage और IndexedDB का उपयोग करके आखिरी पढ़ी गई जगह और file के भीतर की स्थिति को सेव किया जाता है
    • इस फीचर को बहुत पसंद किया गया और धन्यवाद दिया गया
  • TeaTime में इस्तेमाल होने वाला database, GitHub Pages पर प्रकाशित GitHub repository है

    • इससे सुरक्षा समस्या हो सकती है, क्योंकि कोई दुर्भावनापूर्ण user इस tag का उपयोग कर सकता है
  • database में क्या है, यह पता नहीं होने से यह भी नहीं पता चलता कि क्या खोजें

    • browse फीचर का सुझाव दिया गया
  • पूछा गया कि क्या कोई example instance उपलब्ध है

  • यह जानना चाहा गया कि क्या Pocket bookmarks को integrate किया जा सकता है

    • उम्मीद है कि पढ़ने की सारी चीज़ों को offline cache किया जा सके, link rot को रोका जा सके, और उन पर query की जा सके