Bincio Wiki
Caricamento…
bincio_wiki è questo wiki — la memoria collettiva del gruppo Bincio e la documentazione tecnica della suite (questa sezione). È costruito su Astro 6 con un sidecar FastAPI per le modifiche in-browser.
Repository: git.bincio.org/bincio/bincio_wiki · Produzione: wiki.bincio.org
Principi di design
- Git-native — ogni modifica salvata è un commit git con attribution (
handle: edited nome-pagina). La storia del wiki è la storia git. - Nessun CMS — i contenuti sono file Markdown in
pages/eblog/. Nessun database per i contenuti. - Autenticazione condivisa — stessa istanza bincio auth (JWT) degli altri servizi.
- Enforcement client-side — nginx serve l’HTML pubblicamente; JavaScript redirige gli utenti non autenticati. Tradeoff accettato: il contenuto è memoria di gruppo, non dati sensibili.
Struttura del repository
bincio_wiki/
pages/ — contenuti wiki (*.md, modificati dalla community)
_docs/ — documentazione del wiki stesso
_sviluppo/ — documentazione tecnica (questa sezione, solo activity users)
blog/ — storie e racconti
config/
sections.json — sezioni e sottosezioni del wiki
i.bonsai.md — albero semantico wikibonsai
site/ — Astro 6 (git submodule → astro-bloomz)
edit/ — FastAPI edit sidecar (porta 4042 prod, 8001 dev)
scripts/ — dev.sh, sync-vps.sh
Due repository git
Il progetto usa due repo separati su VPS:
| Repo | Contenuto |
|---|---|
bincio_wiki (container) | Contenuti (pages/, blog/), sidecar, config |
astro-bloomz (submodule in site/) | Engine Astro per il rendering |
Questa separazione tiene la storia dei contenuti fuori dal submodule del motore.
Flusso di editing
- Utente apre una pagina e clicca “Modifica”
- Il componente Svelte
PageEditorcarica il Markdown viaGET /pages/{slug} - Salvataggio:
POST /pages/{slug}→ il sidecar scrive il file, fagit commit, poiPOST /rebuildavviaastro build - nginx serve il nuovo HTML statico alla richiesta successiva
Il sidecar gestisce anche merge a tre vie: se due utenti modificano la stessa pagina contemporaneamente, git merge-file tenta la fusione automatica; solo se ci sono conflitti sulla stessa riga restituisce 409.
Sezione Sviluppo
Le pagine _sviluppo/ (questa sezione) sono visibili solo agli utenti con activity_access = true. Il gate è client-side: la pagina rimane nascosta (data-auth-pending) finché /api/me non conferma l’accesso; altrimenti redirect a /.
Auth
Il wiki valida il cookie bincio_session emesso da bincio_auth:
- RS256 (OIDC) — se
BINCIO_AUTH_ISSUERè configurato, scarica JWKS e verifica localmente - HS256 (shared secret) — se
BINCIO_AUTH_JWT_SECRETè configurato - DB session (legacy) — fallback per sessioni vecchie
Stack
| Layer | Tecnologia |
|---|---|
| Frontend | Astro 6 (output statico), Svelte, Tailwind CSS |
| Estensioni Markdown | remark-wikirefs, remark-caml (wikibonsai) |
| Edit sidecar | Python, FastAPI, uvicorn |
| Auth | JWT via bincio auth (PyJWT) |
| VCS | Git (due bare repo su VPS) |
| Deploy | nginx + systemd + hook post-receive |