Le README faisait 691 lignes, dont 295 de procedure de mise en production — que personne ne lit avant d'avoir decide d'installer le projet. Or c'est le premier document lu. Il tombe a 86 lignes et devient un aiguillage. Un document, un lecteur, une question : README.md c'est quoi ? un visiteur docs/installer.md comment je l'heberge ? qui installe docs/publier-une-version.md comment je sors une v. ? qui maintient docs/architecture.md pourquoi le code ainsi ? qui contribue Trois defauts sortis de la comparaison entre le README et le tour du projet, dont deux introduits ce matin : ⚠ Le README se contredisait sur example.org. Son « Journal du paquet » documentait comme une panne reglee (« l'installation s'arretait net ») le placeholder que le nettoyage vient de retablir. Ce n'est pas une regression — publier.sh refuse desormais de publier avec, ce qui etait precisement le garde-fou manquant en aout — mais qui lisait le journal concluait l'inverse. Le journal est supprime : c'est de l'historique, il vit dans les commits et dans CLAUDE.md. ⚠ La fusion des migrations n'etait nulle part. La section « Monter de version » decrivait pas a pas une procedure qui echouerait depuis toute version anterieure a la 0.5.0, et son « Si la mise a jour echoue » ne mentionnait pas cette cause. L'avertissement est desormais en tete du README, d'installer.md et de la section concernee. ⚠ Les trois portees — commune, personnelle, trace — decident de tout dans ce projet et etaient absentes de son point d'entree. Elles ouvrent architecture.md. Verifie : aucune ancre morte, aucun lien mort, et les 41 lignes non reprises sont soit condensees dans le nouveau README, soit du journal supprime a dessein. Trois d'entre elles sont revenues (build/dist ignore, l'inspiration radarr_ynh, le renvoi aux commentaires de systemd.service). 626 tests au vert. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
MaBibli
Gestion de bibliothèque personnelle, auto-hébergée, pensée pour un foyer. Catalogue, prêts, scan de code-barres, consultation hors-ligne.
- Catalogue des livres physiques et des ebooks — fiches uniquement, aucun fichier n'est hébergé. Revues et séries ont leurs propres fiches.
- Prêts — à qui, depuis quand, et l'historique complet.
- Scan ISBN au code-barres depuis le téléphone, ou saisie manuelle, avec pré-remplissage du titre, de l'auteur, de l'éditeur et de la couverture.
- Statuts de lecture personnels — chacun sa progression, sur une collection commune.
- Liste d'envies personnelle, exportable en
.txtet.csv. - Consultation hors-ligne — PWA installable ; la bibliothèque reste consultable et cherchable sans réseau.
Les métadonnées viennent de la BnF puis d'OpenLibrary, deux sources libres et sans clé d'API. Aucune dépendance à Google Books.
Documentation
| Document | Répond à | Pour qui |
|---|---|---|
| docs/installer.md | Comment je l'héberge ? | qui installe, sur YunoHost ou ailleurs |
| docs/publier-une-version.md | Comment je sors une version ? | qui maintient le projet |
| docs/architecture.md | Pourquoi le code est ainsi ? | qui veut comprendre ou contribuer |
mabibli_ynh/doc/ADMIN.md |
Où sont les données, qui a accès ? | l'administrateur, après installation |
CLAUDE.md porte le contexte complet et l'historique des décisions, avec leurs mesures —
y compris les raisonnements qui se sont révélés faux, gardés exprès pour ne pas les
reconduire. IDEES.md recueille les pistes non actées.
En bref
Trois projets .NET, un seul processus en production : le client Blazor WebAssembly est compilé en fichiers statiques que l'API sert elle-même.
MaBibli.Client ─┐
MaBibli.Shared ─┼──► dotnet publish MaBibli.Api ──► un service systemd
MaBibli.Api ─┘ (self-contained) sur 127.0.0.1
| Backend | C# / ASP.NET Core, .NET 10 |
| Frontend | Blazor WebAssembly, en PWA |
| Base | SQLite + EF Core |
| Scan | zbar compilé en WebAssembly (LGPL-2.1) |
| Authentification | SSO YunoHost, via les en-têtes SSOwat — pas d'auth propre |
| Hébergement | YunoHost, installation native (sans Docker) |
Trois contraintes ne se négocient pas : x86_64, HTTPS (sans quoi le scan caméra ne s'ouvre jamais) et un domaine entier, pas un sous-chemin. Le pourquoi est dans docs/architecture.md.
Démarrer
dotnet build && dotnet test
dotnet run --project MaBibli.Api
L'API sert aussi le client compilé : une seule commande suffit.
⚠️ Avant de publier ce projet quelque part
Les URL de dépôt sont un placeholder volontaire, https://forge.example.org/mabibli.
Une seule ligne les commande toutes — depot_code, en tête de
mabibli_ynh/build/publier.sh — et publier.sh refuse de publier tant qu'elle n'est
pas changée. Le détail est dans
docs/publier-une-version.md.
⚠️ Depuis la 0.5.0, aucune base antérieure n'est migrable
Les migrations ont été fondues en une seule. Sur un serveur déjà installé, il faut
remove --purge puis réinstaller, avec perte du catalogue — voir
docs/installer.md.
Licence
AGPL v3 — voir LICENSE. L'AGPL attend que les utilisateurs d'un service en réseau puissent en obtenir la source : le lien vers le dépôt affiché dans la page « À propos » de l'application n'est pas un ornement.