Skip to content

feat: replace Hugo with custom static site generator#6

Merged
chrismgonzalez merged 1 commit into
mainfrom
feat/static-site
Apr 19, 2026
Merged

feat: replace Hugo with custom static site generator#6
chrismgonzalez merged 1 commit into
mainfrom
feat/static-site

Conversation

@chrismgonzalez

Copy link
Copy Markdown
Owner

Summary

  • Replaces Hugo/PaperMod/Vercel with a minimal no-framework static site built in Python
  • Catppuccin Mocha theme with Playfair Display + JetBrains Mono typography, mobile-first CSS
  • AWS infrastructure via SAM: private S3 bucket + CloudFront with OAC, GitHub Actions OIDC deploy role
  • CI/CD via GitHub Actions: PR build checks + auto-deploy to S3/CloudFront on merge to main

What changed

Build system

  • build.py — converts markdown → flat HTML (posts/<slug>.html, about.html, cv.html)
  • uv + python-markdown for deps; no Node, no Hugo, no frameworks
  • Draft support on all pages via frontmatter draft: true

Pages

  • Writing index, About, CV (currently draft-gated), humorous terminal-style 404

Infrastructure

  • template.yaml — SAM/CloudFormation: S3 bucket (private), CloudFront distribution, GitHub Actions IAM role
  • iam/ — least-privilege deployer role + trust policy for SSO and GitHub OIDC
  • Makefilemake build, make deploy, make infra, make invalidate

CI

  • build.yml — runs make build on every PR
  • deploy.yml — runs make deploy on push to main via OIDC (no stored AWS keys)

Reviewer notes

  • Set AWS_DEPLOY_ROLE_ARN secret in GitHub repo settings before merging (value in SAM stack outputs)
  • ACM cert must be issued before sam deploy — see samconfig.toml for cert ARN placeholder
  • zettelkasten/ retained intentionally

🤖 Generated with Claude Code

Replaces the Hugo/PaperMod/Vercel setup with a minimal no-framework
static site built with Python + markdown, hosted on S3 + CloudFront.

- Build: Python script (build.py) converts markdown -> flat HTML files
  (posts/<slug>.html, about.html, cv.html) using python-markdown via uv
- Theme: Catppuccin Mocha with Playfair Display headings and JetBrains
  Mono body; mobile-first responsive CSS
- Pages: Writing index, About, CV (draft-gated), humorous terminal 404
- Infra: SAM template for S3 bucket (private + OAC), CloudFront
  distribution, GitHub Actions IAM role with OIDC trust
- Deploy: Makefile with build/deploy/infra/invalidate/serve targets;
  two-pass S3 sync with separate cache headers for HTML vs assets
- CI: GitHub Actions workflows for PR build checks and main branch deploy

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@chrismgonzalez chrismgonzalez merged commit c7926e4 into main Apr 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant