Claude Opus 5andbdeshi df46cd517c write down that addresses are never localised
Localisation stops at the words around the content. No path segment is
translated: reserved segments stay `page` and `tags` in every language, page
numbers stay ASCII, and a variant is reached at the English key under its prefix.
The theme contract gains the matching rule — a URL, key or path segment must
never go through `t`, `num` or `day`.

This is already how the code behaves; every localisation function lives in
internal/render/chrome.go and the content package, which owns every URL, cannot
reach it. Recorded because nothing in the code says so out loud.

state.md now names the five frontmatter keys the parser actually lifts, so
content-model.md's table reads as the accepted format rather than a list of what
runs — `slug` in particular is unread today.
2026-07-30 08:41:09 +06:00
2026-07-30 02:22:28 +06:00
2026-07-30 00:34:18 +06:00
2026-07-30 01:35:50 +06:00
2026-07-30 01:35:50 +06:00
2026-07-30 01:38:17 +06:00

khosra

A flat-file personal publishing engine in Go. Point the binary at a directory of Markdown and it becomes an owned, networked home for fiction, webcomics, art, and essays, in English and Bengali. The site's content lives in its own repository, not this one (ADR-0011).

Build and run

Needs Go 1.26+ and git; nothing else.

make build                      # or: go build -o khosra ./cmd/khosra
make run SITE=/path/to/site     # or: ./khosra -site /path/to/site
make test
make verify                     # everything the project enforces — green before every commit

make help lists targets. make is a convenience wrapper; go build, go test and ./scripts/verify.sh work on their own and are what the gate uses.

A site root is a directory holding content/, and optionally static/ and templates/. It lives in its own repository, not this one — the binary is pointed at it.

If you are a human: start at HARNESS.md — what the scaffolding is, how to use it, and what to decide.

If you are an agent: start at CLAUDE.md — the constitution and the read order. It is loaded for you automatically; this file is not a prerequisite and nothing here is a rule.

S
Description
A personal publishing engine
Readme
1.1 MiB
Languages
Go 89%
Shell 7%
HTML 2.3%
CSS 1%
Makefile 0.4%
Other 0.3%