Files
bincio-wiki/docs/index.md
T

2.0 KiB

BincioWiki — Developer Documentation

BincioWiki is a private, invite-only wiki for the Bincio group of friends. It is built around a small set of deliberate constraints:

  • Git-native content. Every page edit is a git commit with author attribution. The wiki's history is the edit history.
  • No CMS complexity. Content is plain Markdown files on disk. No database for content, no object storage, no CDN.
  • Shared identity. Authentication is shared with bincio_activity via a single SQLite database. One account, two apps, one session cookie.
  • Client-side auth enforcement. The HTML is publicly served by nginx; JavaScript redirects unauthenticated users to /login/. This is an intentional tradeoff — the content is community memories, not financial data, and the goal is keeping crawlers and casual visitors out, not resisting determined attackers.
  • Self-hosted on a cheap VPS. Everything runs on a single Hetzner Debian 12 VPS.

Repository structure

bincio_wiki/
  pages/          wiki content (*.md — edited by community)
  blog/           blog/stories content (*.md)
  config/         bincio-specific config (outside the submodule)
    sections.json wiki section + subsection definitions
    i.bonsai.md   wikibonsai semantic tree
  assets/         user-uploaded images (gitignored, rsync'd separately)
  site/           Astro 6 app (git submodule → brutsalvadi/astro-bloomz)
  edit/           FastAPI edit sidecar (Python, port 4042 prod / 8001 dev)
  docs/           this documentation
  scripts/        dev.sh, sync-vps.sh
  deploy/         VPS config files (nginx, systemd, post-receive hook)
  pyproject.toml  Python dependencies (managed by uv)

Two-repo model

The project uses two git repositories:

Repo Purpose
bincio_wiki (container) Content (pages/, blog/), sidecar, config, scripts
brutsalvadi/astro-bloomz (submodule at site/) Astro rendering engine

This separation keeps content history out of the engine submodule and allows the engine to be reused or forked independently.