Editorial source for Arkiviva's native blog.
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-27 02:55:18 +01:00
assets feat: establish native blog content 2026-07-26 22:14:00 +01:00
posts feat: establish native blog content 2026-07-26 22:14:00 +01:00
scripts release: support empty automatic publication 2026-07-27 02:55:18 +01:00
tests release: support empty automatic publication 2026-07-27 02:55:18 +01:00
.gitignore feat: publish blog posts from front matter 2026-07-27 00:04:11 +01:00
AGENTS.md release: support empty automatic publication 2026-07-27 02:55:18 +01:00
README.md release: support empty automatic publication 2026-07-27 02:55:18 +01:00

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

  1. Add a lowercase, hyphenated Markdown filename beneath posts/. The filename becomes the public slug.
  2. Put the post metadata in YAML front matter.
  3. Add its raster hero image beneath assets/.
  4. Run ./scripts/validate.
  5. 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.