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