Skip to content

Overview

This is the maintenance manual for calebpollreis.com, a static personal portfolio built with Astro and a few React islands. It exists so that adding a build log, a project, or a new photo is a quick, repeatable edit instead of an archaeology session.

  • A statically generated Astro site (no server at runtime, just files in dist/).
  • Content lives in Markdown and MDX under src/content/, validated by typed schemas in src/content.config.ts.
  • The visual language is an engineering-HUD look: OLED-black base, a blue to cyan to indigo accent triad, self-hosted variable fonts, and motion driven by a single shared anime.js engine.
  • One React island (the photography lightbox). Everything else is Astro and plain HTML shipped with zero per-page JavaScript beyond the shared scripts.
  • Deployed by GitHub Actions to GitHub Pages, served from the custom domain calebpollreis.com.
  • Architecture: how pages, layouts, islands, tokens, motion, and the background-video keeper (footage.ts) fit together.
  • Content collections: every frontmatter field for FSAE posts, projects, and photography moments, with worked examples.
  • Adding content: step-by-step recipes for a new build log, project, photo, and video moment.
  • Media guidelines: where images and videos live, the webm plus mp4 pairing rule, and how to swap the resume, favicon, and OG image.
  • Local dev and deploy: the dev and build commands, the GitHub Actions pipeline, and the custom-domain setup.
  • No em dashes anywhere in site copy. Use commas, colons, or parentheses instead.
  • Root-absolute in-site links pass through withBase() (src/config/paths.ts) so they keep working if the site ever moves to a subpath.
  • Copy that appears in more than one place (name, role, tagline, socials, email) lives once in src/config/site.ts.