This is an [mdbook](https://rust-lang.github.io/mdBook/) project. Source content lives in `src/`, and `mdbook build` produces the static site in `book/`, which is what gets deployed.
### Directory structure
```
.
├── src/ # mdbook source (markdown content)
│ ├── SUMMARY.md # table of contents / navigation
│ ├── private/ # git submodule — see below
│ └── ...
├── book/ # build output (not tracked)
├── content/ # assets and media not tracked by git — see below
├── book.toml # mdbook configuration
└── .forgejo/workflows/ # CI/CD pipelines
```
### Private content (git submodule)
`src/private` is a separate private git repository included here as a submodule. This keeps personal content out of the public repo history while still building into the same site. The submodule is hosted at `https://forgejo.binning.net/www/private`.
When working locally, the submodule URL can be overridden to SSH in `.git/config`:
CI uses HTTPS with an OAuth token via a URL rewrite (`secrets.WWW_PRIVATE_TOKEN`), so `.gitmodules` should always contain the HTTPS URL.
To update the submodule to the latest commit:
```bash
git submodule update --remote src/private
git add src/private
git commit -m "Update private submodule"
```
### Assets
Images and media referenced by content in `src/private/` are not tracked by this repo. They live on the server at `/srv/www/binning.net/assets/` and are managed separately.
Markdown image links use absolute paths rooted at `/assets/`: