- Python 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| assets | ||
| posts | ||
| scripts | ||
| tests | ||
| .gitignore | ||
| AGENTS.md | ||
| README.md | ||
Arkiviva blog
This repository is the editorial source for Arkiviva's native blog at
/blog. Forgejo renders published posts inside its normal page shell, keeping
the account menu, notifications, themes, navigation, and footer.
Structure
posts/ One Markdown source file per published post
assets/ Raster hero images referenced by front matter
scripts/blog_frontmatter.py Strict front-matter parser and build library
scripts/validate Local publication check
scripts/build Runtime publication builder
tests/ Publication-workflow tests
The feed is chronological, shows seven posts per page, and supports text search. Feed entries and complete posts use Forgejo's Markdown-reader structure.
Add a post
- Add a lowercase, hyphenated Markdown filename beneath
posts/. The filename becomes the public slug. - Put the post metadata in YAML front matter.
- Add its raster hero image beneath
assets/. - Run
./scripts/validate. - Review the writing, metadata, image rights, and attribution in a pull request.
---
title: A living archive, built together
date: 2026-07-26
author: arkivark
summary: A first look at how Arkiviva approaches durable source hosting.
categories:
- announcements
- engineering
tags:
- community
- open-source
hero_image: assets/a-living-archive.webp
hero_alt: The faceted Arkiviva mark
---
# A living archive, built together
Write the post body in normal Markdown.
author is the username of the Forgejo account credited for the article.
Forgejo resolves that account at render time and shows its current avatar,
username, and profile link. Git history continues to record everybody who
edited the file, but editing a post does not silently change its editorial
author.
Categories and tags use lowercase, hyphenated slugs. Tags are optional; every post needs at least one category.
Publication
The source repository does not contain a hand-maintained manifest.json.
Build a fresh deployable directory instead:
./scripts/validate
./scripts/build /path/to/new-blog-release
The builder validates every post, removes front matter from the Markdown body,
copies referenced images, and generates the runtime manifest.json. Publish
that generated directory as a read-only $FORGEJO_CUSTOM/blog checkout using
an atomic directory or symlink swap.
Production starts with a valid empty blog. After a reviewed, Arkivark-signed
commit reaches main, Arkiviva's infrastructure-owned publisher detects the
new revision, validates and builds it without executing repository code, and
atomically replaces the active read-only blog release. Forgejo itself does not
need to be rebuilt or restarted. An unsigned, invalid, or non-fast-forward
revision leaves the last accepted blog release unchanged.