Bincio Wiki

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/ e blog/. 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:

RepoContenuto
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

  1. Utente apre una pagina e clicca “Modifica”
  2. Il componente Svelte PageEditor carica il Markdown via GET /pages/{slug}
  3. Salvataggio: POST /pages/{slug} → il sidecar scrive il file, fa git commit, poi POST /rebuild avvia astro build
  4. 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:

  1. RS256 (OIDC) — se BINCIO_AUTH_ISSUER è configurato, scarica JWKS e verifica localmente
  2. HS256 (shared secret) — se BINCIO_AUTH_JWT_SECRET è configurato
  3. DB session (legacy) — fallback per sessioni vecchie

Stack

LayerTecnologia
FrontendAstro 6 (output statico), Svelte, Tailwind CSS
Estensioni Markdownremark-wikirefs, remark-caml (wikibonsai)
Edit sidecarPython, FastAPI, uvicorn
AuthJWT via bincio auth (PyJWT)
VCSGit (due bare repo su VPS)
Deploynginx + systemd + hook post-receive
Links To This Page
Attributes