This website
In progresssince 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