How I Built This Portfolio: structure, theme, and sanity

September 06, 2025 · in Meta, Portfolio
How I Built This Portfolio: structure, theme, and sanity

tl;dr… Jekyll + a light formal theme, dark project cards for contrast, and simple data-driven JS for a filterable projects grid.

Why a portfolio site (and not just LinkedIn)

  • I needed a formal, fast place that shows work and thought process.
  • Ownership: no plugin sprawl, no surprise updates.

Two sites: formal vs. personal

  • This site: formal, minimal, case-study friendly.
  • Personal site: experiments, notes-to-self, and more opinionated posts.

Choosing the color scheme

  • Base: white + greys for a professional tone.
  • Primary: purple (#6b4ad8) with icy blue accents for state/hover.
  • Contrast: near-black project cards to make work samples pop.

Pages & structure

  • Home → snapshot, competencies, selected work, latest posts.
  • Projects → tag filtering powered by a tiny JS file.
  • Certifications → FCC first; degree details collapsible.
  • Blog → featured on top, paginated list, categories/tags hubs.

Stack & decisions

  • Jekyll: Markdown + Git, zero DB, deploy anywhere.
  • Styling: _sass/_theme.scss with brand tokens (purple/ice).
  • JS: /assets/js/main.js populates cards + filter (with ?tag=…).
  • Accessibility: focus rings, readable muted text on white, keyboard filter controls.

What I’ll use the blog for

  • Short write-ups on support ops and documentation patterns.
  • Tiny front-end utilities and automation snippets.
  • Transparent notes on what I change here over time.

Grab the source

Want to recycle the scaffolding? The entire site (theme, blog, filters, and build) is open here:

👉 Repo: michaelmacdonagh.net on GitHub

Clone it, customize the theme tokens, and you’ve got a fast, formal portfolio in minutes. If you’re the “save it for later” type, star it up and stash it for now.