LIMONIER MathieuandCopilot cf5ada8bab Documenter la compilation et la publication dans le README
Ajoute les sections Compilation (dotnet build/test, publish
self-contained linux-x64) et Publication (script publier-release.sh
de mabibli_ynh, renvoi vers PUBLICATION.md pour la marche complète).
Corrige au passage la mention du scanner (ZXing.Net -> zbar), devenue
inexacte depuis la bascule documentée dans CLAUDE.md.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-08-20 15:04:05 +02:00
2026-08-18 15:06:09 +02:00

MaBibli

Application de gestion de bibliothèque personnelle, self-hosted sur YunoHost.

Demande initiale

Gérer une bibliothèque personnelle (livres physiques et numériques), avec :

  • Liste des livres physiques
  • Liste des livres ebooks
  • Gestion de prêts — prêter un livre à quelqu'un, marquer comme récupéré, historique des prêts
  • Récupération automatique des infos via ISBN (titre, auteur, éditeur, couverture) — scan caméra + saisie manuelle
  • Consultation hors-ligne de la bibliothèque existante (le lookup ISBN, lui, nécessite le réseau)
  • Statuts de lecture — à lire, en cours, lu, etc.

Contraintes techniques

  • Langage : C# / ASP.NET Core
  • Frontend : Blazor WebAssembly, en PWA (installable, utilisable hors-ligne pour la consultation de la bibliothèque déjà enregistrée)
  • Scan code-barres : zbar (WebAssembly, LGPL-2.1) — voir CLAUDE.md pour l'historique de la bascule depuis ZXing.Net
  • Accès : smartphone (GSM) et PC, via navigateur
  • Multi-utilisateur : géré via le SSO de YunoHost (en-têtes SSOwat, pas d'auth custom) — collection commune au foyer, avec traçabilité de qui a ajouté chaque livre
  • Base de données : SQLite
  • Hébergement : YunoHost, en installation native (sans Docker) — packaging façon _ynh, inspiré de radarr_ynh (déploiement .NET self-contained, pas de dépendance dotnet-runtime côté système)
  • Sources ISBN : cascade BnF (SRU) puis OpenLibrary — bases libres, sans clé API, pas de dépendance à Google Books. La BnF passe en premier pour la couverture du fonds francophone. Voir CLAUDE.md pour le détail
  • Ebooks : fiches d'inventaire uniquement, les fichiers ne sont pas hébergés par l'application

Compilation

Prérequis : le SDK .NET 10 (dotnet --version).

En développement

dotnet build
dotnet test

Pour lancer l'application en local (l'API sert aussi le client Blazor compilé) :

dotnet run --project MaBibli.Api

Publication self-contained (ce que le serveur reçoit réellement)

Le serveur YunoHost ne compile jamais : il télécharge une archive déjà publiée et la déploie telle quelle (voir « Publication » ci-dessous). Pour produire ce même artefact en local, à des fins de vérification :

dotnet publish MaBibli.Api --configuration Release --runtime linux-x64 --self-contained

MaBibli.Api référence MaBibli.Client : le client Blazor WebAssembly est compilé au passage et atterrit dans wwwroot/ du publish. Un seul projet à publier suffit donc pour les trois (MaBibli.Client, MaBibli.Shared, MaBibli.Api). --self-contained embarque le runtime .NET dans le dossier produit : aucun dotnet-runtime n'est requis côté serveur.

⚠️ Ne jamais compiler sur le serveur YunoHost lui-même : ce serait imposer le SDK complet à une machine qui n'en a pas besoin, pour une compilation lente. Voir CLAUDE.md, section « Chaîne de publication ».

Publication

MaBibli se publie et se déploie via un second dépôt, mabibli_ynh (le paquet YunoHost), qui contient le script réutilisable build/publier-release.sh :

cd ../mabibli_ynh
./build/publier-release.sh

Ce script compile ce dépôt (mabibli) en Release self-contained, vérifie le résultat (binaire présent, wwwroot/ embarqué, toutes les ressources d'index.html réellement sur disque, aucun placeholder d'empreinte non substitué), produit une archive .tar.gz reproductible, calcule son sha256, et met à jour version, amd64.url et amd64.sha256 dans mabibli_ynh/manifest.toml.

Reste ensuite, à la main : créer le tag et la release Git correspondants sur ce dépôt, y téléverser l'archive, puis committer et pousser manifest.toml dans mabibli_ynh (YunoHost lit le manifeste depuis Gitea, jamais une copie locale).

La marche à suivre complète et éprouvée — première mise en production, montée de version, retour arrière, désinstallation — est dans mabibli_ynh/PUBLICATION.md. Ne pas la reproduire ici : ce sont des gestes propres au paquet YunoHost, pas au code de ce dépôt.

Statut

Voir CLAUDE.md pour le contexte complet et l'historique des décisions à destination de Claude Code.

S
Description
No description provided
Readme AGPL-3.0
6 MiB
2026-08-23 17:36:06 +02:00
Languages
C# 67.8%
HTML 25.8%
CSS 4%
JavaScript 2.2%
Dockerfile 0.2%