Menu
Switch track

Back to Software Engineering projects

The home page gate, with the Game Design track open beside the Software and Maker tracks

This site

theoerickson.com, moved off Wix and rebuilt from scratch

Framework
Astro 7, TypeScript strict, Vite
Content
Markdown and YAML collections, checked by Zod schemas
Editing
Sveltia CMS, local only, plus a dev toolbar settings panel
Media
sharp: AVIF with WebP fallback, MP4 video tabs
Hosting
Firebase Hosting, preview channels, generated 301s
Domain
DNS moved from Wix to Firebase, HTTPS with HSTS

My portfolio used to live on Wix. This is the replacement: a site I own end to end, from the content files to the domain. It is split into three tracks, Game Design, Software Engineering and Makerspace and Teaching, and each one has its own skin: a cartridge rack for games, an IDE for software, and laser cut birch for maker.

It is a static site built with Astro and TypeScript on Vite. Every project, resume and overview is a plain Markdown or YAML file, and Zod schemas check them at build time, so a missing field fails the build instead of the page. Pages are generated per track from that one content model, and a project can sit in more than one track with its own summary in each.

Content is edited through Sveltia CMS, which runs only on my machine and writes straight into the repo’s files, with a draft flag that keeps unfinished entries out of the build. A dev toolbar panel tries fonts and layout settings live. The build turns images into AVIF with a WebP fallback and writes a 301 redirect for every old Wix URL from the content itself, and a small script draws the link preview card from the site settings.

It is hosted on Firebase Hosting, with preview channels for checking a build before it goes live. Moving off Wix meant extracting the old pages and images with a script, then moving the domain’s DNS to Firebase while keeping the registration at Wix: www serves the site, the bare domain redirects to it, and everything is HTTPS with HSTS.

I planned the site with Claude in chat and built it with Claude Code, using a shared notebook in the repo to hand specs and status between the two.

Media

Back to Software Engineering projects