Spencer Morris
← Project index
ENGINEERING NOTES / 26 2 MIN READ

Per Aspera

A publishing system that combines file-based essays with bespoke interactive articles through one content registry.

Screenshot of the published Per Aspera homepage and its interactive article field.View full size ↗
Screenshot of the published Per Aspera homepage and its interactive article field.
01 / THE PROBLEM

What needed solving.

Long-form essays, fiction, project notes, and interactive research pages need consistent discovery without forcing every article into the same template.

02 / SYSTEM OUTLINE
  1. 01MDX + bespoke articles
  2. 02Shared content registry
  3. 03Pages + feed + sitemap

Simplified from the implementation and project notes.

03 / TECHNICAL DECISIONS

How it fits together.

MDX files carry frontmatter and renderers. A shared registry combines them with bespoke article routes, supplying indexes, feeds, and sitemap entries from one metadata source.

Build-time processing calculates reading time. Drafts remain visible locally but are omitted from production listings; canonical metadata handles cross-posts and keeps duplicate entries out of the sitemap.

TanStack routing supports the site shell and standalone research experiences. Interactive articles can own their presentation while retaining the shared publication metadata.

04 / WORKING METHOD

Building and checking it.

An ordinary essay is added as an MDX file. A more elaborate research piece gets a dedicated route and one registry entry. Both become discoverable through the same publishing path.

This keeps content authoring separate from page plumbing while leaving room for simulations, diagrams, and other custom explanations.

05 / STATUS & LIMITS

This is a file-based personal publishing workflow rather than a multi-author CMS. The article-specific visual tools have their own assumptions and should be read alongside the text.

Source notes

Based on repository code and project records reviewed on October 30, 2026. Historical checks are described as recorded, not rerun for this article. Screenshots, renders, and mockups are labeled individually.

  • aspera-protocol/README.md
  • aspera-protocol/src/data/content.ts
  • aspera-protocol/package.json
← All projectsNEXT PROJECTStaff AI →