← All projects

This website

In progress

since 2026

The portfolio you're reading — and a working demo of the AWS + Terraform + OIDC stack I'm sharpening on.

A statically generated portfolio on Astro, hosted on S3 + CloudFront, provisioned end-to-end with Terraform and deployed via a GitHub Actions OIDC pipeline. Architecture decisions are documented as ADRs in the repo.

Context

Building a senior-dev portfolio that proves what it claims. The site itself runs on the AWS stack I want to demonstrate fluency with, and every architectural decision is documented as a public ADR — so a reader can see not just what was built, but why.

What I built

  • Astro 6 static-site generator with TypeScript-strict and Tailwind v4.
  • S3 + CloudFront with a custom CloudFront Function for subdirectory-index rewriting.
  • Terraform-managed infrastructure; phased custom-domain cutover gated behind a feature flag (ADR-0008).
  • GitHub Actions deploys via OIDC — no long-lived AWS credentials anywhere.
  • Nine ADRs documenting every meaningful choice.

Outcome

Live and serving — every commit auto-deploys. The page you're reading went through the same pipeline.

Architecture

Astro builds static HTML, GitHub Actions uploads to S3, CloudFront caches at edge with a Function rewriting /projects/foo to /projects/foo/index.html. ACM cert and Route 53 zone are provisioned but gated behind a feature flag while the canonical domain still points elsewhere.

Stack

  • Astro
  • Terraform
  • AWS
  • GitHub Actions