Sean-Michael.dev
active
Python
FastAPI
HTMX
Jinja2
AWS
Terraform
Docker
GitHub Actions
This website. A "Website as Code" project where infrastructure, application, and CI/CD are all version-controlled together with GitOps push-based deployment.
Stack
- FastAPI for routing and server-side rendering
- HTMX for dynamic interactions with zero client-side JavaScript
- Jinja2 templates with Markdown content via frontmatter
- Docker containerization with Nginx reverse proxy
Infrastructure
All AWS infrastructure is managed with Terraform: - EC2 instance (Ubuntu 24.04) running Docker Compose - Elastic IP with Squarespace DNS - S3 bucket for blog and project content (kept out of git) - IAM roles with least-privilege access - Security groups restricting SSH to my machine
CI/CD
Three GitHub Actions workflows chain automatically on push to main: 1. Test and Lint — Ruff + pytest, blocks downstream on failure 2. Build and Push — Docker image to Docker Hub with commit SHA tags 3. Deploy to EC2 — AWS SSM-based deployment, no SSH keys needed