TeaTime - un système de bibliothèque décentralisé propulsé par SQLite, IPFS et GitHub
(github.com/bjesus)- Un système de bibliothèque distribué entièrement statique basé sur IPFS, SQLite et GitHub
- Possibilité d’héberger des instances mises à jour automatiquement sur Netlify et GitHub Pages
Bibliothèque distribuée
- L’application web TeaTime est complètement séparée de la base de données et des fichiers qu’elle récupère.
- La base de données utilisée est un dépôt GitHub publié sur GitHub Pages et étiqueté avec le sujet teatime-database.
- Chaque dépôt inclut un fichier
config.jsonqui pointe vers une base de données SQLite. - Avant d’effectuer une recherche, l’utilisateur choisit la base de données à utiliser, puis TeaTime interroge la base SQLite avec
sql.js-httpvfs. - Chaque ligne de la base de données SQLite correspond à un élément de la bibliothèque, et la colonne de hash du fichier est utilisée pour récupérer l’élément sur IPFS.
- Comme l’application web est un site statique et que la base de données est composée de fichiers statiques, il est facile de la forker, de la répliquer et de la déployer.
- L’instance frontend est un dépôt GitHub étiqueté avec le sujet teatime-instance.
- Les fichiers étant servis via IPFS, cette architecture distribuée améliore la résilience de TeaTime.
Fonctionnalités
- Recherche par titre, auteur, année ou format
- Conservation de l’historique de lecture et reprise à la page précédente lors de la réouverture d’un fichier
- Téléchargement local des fichiers
- Mise en cache des fichiers dans IndexedDB pour un chargement plus rapide
- Dépôt de fichiers dans TeaTime pour les rendre
- Mode sombre et mode plein écran
- Aucun cookie, aucune connexion
- Entièrement décentralisé
Développement frontend
- TeaTime est une application Nuxt.js.
- Exécution facile en local : clonez le dépôt puis suivez ces étapes
- Installer les dépendances :
npm install - Lancer le serveur :
npm run dev - Aller sur
http://localhost:3000
- Installer les dépendances :
- Consultez la documentation Nuxt pour plus d’informations
Création de la base de données
- Il est possible de créer une base de données en forkant un dépôt de base de données fondé sur JSON et en adaptant les fichiers JSON selon vos besoins.
- GitHub Actions génère le fichier SQLite et le téléverse sur GitHub Pages.
- Pour créer manuellement une base SQLite compatible avec TeaTime, suivez l’exemple du dépôt de base de données.
- Chaque base de données SQLite contient une table avec le schéma ci-dessous. Les noms de colonnes peuvent être ajustés dans le fichier
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) ); - Si le fichier SQLite est trop volumineux, il peut être fragmenté. Il est recommandé de consulter les informations d’optimisation de base de données. L’utilisation de FTS est conseillée.
- Publiez le dépôt sur GitHub Pages et assignez-lui le sujet
teatime-database
Contribution
- Même sans savoir coder, vous pouvez contribuer en forkant ce dépôt ainsi que vos dépôts de bases de données préférés.
- Lors du fork d’un dépôt, il est préférable de le faire manuellement pour éviter un lien direct (
git clone&&git remote add your-origin ...&&git push your-origin main). - Ajouter une étoile aux dépôts de base de données utiles est aussi une bonne manière de contribuer. Cela détermine l’ordre des bases de données dans l’interface de TeaTime, afin d’aider les autres utilisateurs à trouver plus facilement les meilleures bases.
1 commentaires
Avis Hacker News
Un contributeur d’IPFS propose des moyens d’améliorer la gestion des téléchargements depuis plusieurs passerelles sur IPFS
@helia/verified-fetch, il est possible d’accepter des CID via une API similaire à Fetch et de gérer le content routing ainsi que la recherche P2PLe framework P2P Pear pourrait aider à s’éloigner de GitHub pour évoluer vers un véritable système distribué
L’utilisation de Helia est envisagée afin de permettre aux utilisateurs de contribuer en tant que nœuds du réseau
Un problème survient lors de l’accès à certaines ressources, qui sont bloquées à cause de la politique CORS
no-cors, ce qui désactive CORSTout se fait dans le navigateur, sans utilisateurs, cookies ni suivi
La base de données utilisée par TeaTime est un dépôt GitHub publié sur GitHub Pages
Comme on ne sait pas ce que contient la base de données, on ne sait pas quoi rechercher
Une question est posée sur la disponibilité d’une instance de démonstration
Quelqu’un se demande s’il serait possible d’intégrer les marque-pages Pocket