WORK · PUBLIC DISCLOSURE

Building AR/146 as a Static Personal Index

Designing a quiet, static home for work, photographs, essays, notes, topics, and changing areas of attention.

Design and engineering

Layered cream paper cards connected by fine dark threads around a terracotta strip.

PROBLEM

What needed attention

A normal portfolio grid was too narrow for work, writing, photographs, short notes, and interests that change over time.

CONSTRAINTS

What narrowed the decision

  • Keep the public site fully static and useful without client-side rendering.
  • Keep editing tools and their React runtime out of public bundles.
  • Publish only reviewed content and reveal no private source material.
  • Make empty and partially filled collections feel intentional.

RESPONSIBILITIES

Where the contribution sat

  • Define the information architecture and relationships between content types.
  • Build the public Astro routes, layouts, indexes, feeds, and search data.
  • Establish the visual system, responsive behavior, and accessible interactions.
  • Document the publishing and privacy boundaries for future changes.

IMPORTANT DECISIONS

What was chosen and why

  • Organize the site as a living index instead of a chronological portfolio feed.
  • Render public pages to static HTML and reserve JavaScript for focused enhancements.
  • Store content in typed collections with stable slugs and explicit visibility.
  • Connect records through topics, related links, and curated trails.

Starting with the shape of the problem

I did not want this site to behave like a list of finished projects. A project grid is useful when every item has the same shape, but my interests do not fit one shape. A technical decision, a long essay, a short observation, and a sequence of images ask for different reading speeds.

The first design question was therefore not “What should the home page look like?” It was “What kinds of things should this place hold?” That question led to seven content types: work, essays, notes, photography, trails, topics, and dated Now updates.

Each type has its own purpose. Work records explain decisions and constraints. Essays develop an argument. Notes hold smaller observations. Photography uses sequence and captions. Topics reveal durable threads. Trails provide a deliberate order across formats. Now records keep the index connected to the present without turning the whole site into a feed.

Choosing a static public surface

The public site does not need an application server. Most of its work can happen during the build: reading content, resolving relationships, preparing images, and producing HTML. Astro fits that shape well.

This choice is more than a performance decision. A static output has a smaller operating surface. The site can be hosted as files, remains readable when scripts fail, and does not need visitor accounts or a database. It also creates a useful design constraint: an interaction must earn its JavaScript.

Search, filters, theme preference, command navigation, and photography focus mode use small client scripts. Reading and navigation do not depend on them.

Designing for relationships

The index becomes more useful when one record can lead to another for a clear reason. A shared topic can reveal a connection that was not obvious from format alone. An explicit related link can preserve an important path. A trail can turn several records into an ordered reading experience.

These relationships use stable pairs of content kind and slug. The build resolves them before publication. If a reference is broken, points to hidden material, or creates a circular trail, verification fails. The page never guesses around a broken relationship.

Keeping the visual system quiet

The design uses type, spacing, rules, and sequence before decoration. Editorial type carries the main reading hierarchy. Interface text stays plain and compact. Terracotta appears as a limited accent instead of a constant signal.

This restraint matters because the content changes form. A photograph should have room to lead. A short note should not look unfinished. A detailed work record should remain easy to scan. The shared system holds these differences together without forcing every page into the same card.

What this work produced

AR/146 now has a static route system, typed content, public discovery, RSS and JSON feeds, a sitemap, local search data, responsive layouts, print styles, and deliberate empty states. The administration route and its authentication worker remain separate from the public bundle.

The important outcome is not the number of routes. It is a structure that can grow without losing its publishing rules. New material can be added slowly, reviewed in context, and connected to what is already here.

OUTCOME & LESSONS

What changed or became clearer

  • The repository builds a static public site with routes for every supported content type.
  • Visitors can move through a curated home page, global index, feeds, topics, and trails.
  • The public experience remains separate from the administration code and isolated OAuth Worker.
  • Validation checks content, references, media, output, links, accessibility, and budgets before release.

TECHNICAL CONTEXT

Tools and technologies

  • Astro
  • TypeScript
  • Markdown
  • Decap CMS
  • Cloudflare
  • Playwright

PUBLIC SEARCH

Find a path

Start typing to search the public index.