Files
mabibli/README.md
T
mathieuandClaude Opus 5 d454e41c36 Restaure les vraies URL, et documente la production d'une copie publique
Pendant du commit du paquet. Les passages qui PARLAIENT du placeholder
annoncaient desormais la vraie URL comme etant un placeholder : ils sont
reecrits pour dire ce qui est.

docs/publier-une-version.md porte maintenant la marche a suivre pour produire
une copie publique — depot neuf sans historique, URL neutralisees, identite a
revoir — avec le rm -rf .git AVANT le git init : un git clone ne conviendrait
pas, l'historique portant les URL reelles dans chaque ancien commit.

CLAUDE.md consigne l'erreur et la regle qui en sort : on anonymise une copie,
jamais l'original.

626 tests au vert.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-22 14:22:50 +02:00

89 lines
3.7 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.
## 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.