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>
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.mdpour 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.mdpour 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.