← All writing

Technical note · 2026-09-14

Keeping a static website and printable résumé on one content source

A focused content-consistency problem: use Astro collections to share project facts across the homepage, archive, detail pages and A4 résumé without duplicating text.

  • Astro
  • Content modeling
  • Static sites
  • Print CSS

This article uses the current résumé site to examine how the homepage, project archive and print view share project facts. The print page uses a fixed featured selection.

One history, several drifting copies

A site may present the same experience in a homepage summary, project archive, case study and printed résumé. Duplicating text allows roles, dates and stacks to diverge.

The problem is shared facts, not merely repeated HTML.

Separate facts from presentation choices

The site keeps profile and employment data in TypeScript files and projects/articles in Markdown collections. Titles, periods, roles, summaries and stacks are facts; featured selection is a presentation choice.

Astro content collections provide loading and schema validation. Schemas catch missing or malformed fields, not whether a résumé claim is true.

Project Markdown
   ├─ Homepage: featured summaries
   ├─ Archive: published projects
   ├─ Detail: complete body
   └─ Print: featured summaries and stacks

The homepage and print page use the same featured-selection helper. They can still render different layouts: interactive links on screen, compact text on paper.

Static content can have small interactions

The site generates readable HTML at build time. The print button calls window.print() through a small script, so “static content without a client framework runtime” is more accurate than “absolutely zero JavaScript.”

Translations remain separately edited texts. Shared facts within one language do not synchronize another language automatically. Review both versions when facts change and only link translations that actually exist.

Reuse content, not every layout decision

Screen pages can use more spacing and navigation. Printed pages need controlled breaks and page count. Hide controls, choose A4 dimensions and keep individual entries together; do not make an entire long section unbreakable.

Expanding the technical stack once pushed a single education line onto a third page. Adjusting spacing, grouping the education block and regenerating the PDF revealed and resolved that issue. Screen CSS alone could not verify pagination.

Verify every representation

Use schema/build checks, static internal-link checks, browser navigation and actual PDF inspection. A changed project should appear consistently in summaries, archives, detail pages and print output.

When adding another view, distinguish new facts from new filtering or layout choices. A single editing source for each fact reduces the cost of keeping growing numbers of views consistent.