Files
mabibli/README.md
T
mathieuandClaude Opus 5 b6c4dbaa08 Decoupe la documentation par audience, et corrige trois defauts
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>
2026-08-22 13:30:42 +02:00

87 lines
3.6 KiB
Markdown

# 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 `.txt` et `.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](docs/installer.md)** | Comment je l'héberge ? | qui installe, sur YunoHost ou ailleurs |
| **[docs/publier-une-version.md](docs/publier-une-version.md)** | Comment je sors une version ? | qui maintient le projet |
| **[docs/architecture.md](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](docs/architecture.md).
## Démarrer
```bash
dotnet build && dotnet test
```
```bash
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](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](docs/installer.md).
## Licence
**AGPL v3** — voir [LICENSE](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.