# 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. ## Ce dépôt porte les URL du serveur de son auteur `https://git.akbar.nohost.me/mathieu/…` — c'est le dépôt **de travail**, et il doit rester opérationnel. Une seule ligne les commande toutes : `depot_code`, en tête de `mabibli_ynh/build/publier.sh`. Pour en tirer une **copie publique** destinée à des tiers, la marche à suivre — dépôt neuf sans historique, URL neutralisées — 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.