- docs/: shiroa book with three example categories (thermo, security, homelab); pages declare access via '#let access-groups = (...)' - cmd/parser: scans docs/ and generates acl.json (public by default, skips book.typ/template.typ/partials) - internal/acl: loads acl.json, normalizes URLs to page keys so a page's renderer data (*.multi.sir.in) inherits its protection; fail closed on malformed input - internal/oidc: authorization-code flow client, verified ID tokens, groups claim from Authentik - internal/middleware: in-memory sessions, login/logout/callback handlers, CSRF states, access gate + security headers - cmd/server + embed.go: single binary embedding dist/ and acl.json; /searchindex.json blocked; graceful shutdown - Justfile (build/run/parse/check/clean/preview-docs), Gitea Actions workflow (shiroa v0.4.0-rc2), rootless Dockerfile, README - legacy docs moved to legacy_docs/; .idea untracked
23 lines
613 B
Typst
23 lines
613 B
Typst
#import "@preview/shiroa:0.4.0": *
|
|
#show: book
|
|
|
|
#book-meta(
|
|
title: "Yggdrasil",
|
|
authors: ("Klagarge",),
|
|
summary: [
|
|
#prefix-chapter("index.typ")[Home]
|
|
|
|
= Thermodynamics
|
|
- #chapter("thermo/heat-pumps.typ", section: "1")[Heat pumps]
|
|
- #chapter("thermo/fluids.typ", section: "2")[Fluid mechanics]
|
|
|
|
= Security
|
|
- #chapter("security/opsec.typ", section: "3")[Opsec basics]
|
|
- #chapter("security/ssh.typ", section: "4")[SSH hardening]
|
|
|
|
= Homelab
|
|
- #chapter("homelab/self-hosting.typ", section: "5")[Self-hosting]
|
|
- #chapter("homelab/backup.typ", section: "6")[Backups]
|
|
],
|
|
)
|