Architecture

These two sites demonstrate different AWS deployment strategies — one using managed hosting (Amplify) and the other using full infrastructure-as-code (Terraform). Together they showcase the tradeoffs between simplicity and control.

Portfolio Site (jacob.steelsmith.org)

The portfolio and blog site uses AWS Amplify for a managed, low-maintenance deployment.

Stack

How It Works

  1. Content is authored as Markdown files in the posts/ directory
  2. Astro builds static HTML at build time with zero client-side JavaScript
  3. Amplify detects pushes to the repository and triggers a build
  4. Built assets are deployed to Amplify’s global CDN

Design Decisions

DecisionChoiceRationale
HostingAWS AmplifyMinimal ops overhead, built-in CI/CD, managed SSL
FrameworkAstroZero-JS output, fast builds, Markdown-native
ContentMarkdown filesNo CMS dependency, version-controlled, portable

Resume Site (resume.jacob.steelsmith.org)

The resume site uses Terraform to manage all infrastructure as code, demonstrating full control over AWS resources and a RAG-powered AI chatbot.

Stack

Static Site Layer

RAG Chatbot

CI/CD Pipeline

  1. Push to master triggers GitHub Actions
  2. OIDC authenticates to AWS (no stored credentials)
  3. Astro site builds with PUBLIC_CHAT_API_URL injected
  4. Static assets sync to S3
  5. Lambda function code is zipped and deployed
  6. Knowledge base content syncs to S3 and ingestion job starts
  7. CloudFront cache is invalidated

Infrastructure as Code

All resources are managed in a single Terraform root module:

Design Decisions

DecisionChoiceRationale
IaC toolTerraformSingle state file, unified workflow, declarative
HostingS3 + CloudFrontFull control, global CDN, cost-effective
AuthOIDC (no stored keys)Short-lived credentials, no secret rotation
Vector storeOpenSearch ServerlessManaged scaling, Bedrock-native integration
Rate limitingWAF + API GatewayPer-IP via WAF, global via usage plans
Model accessInference profileCross-region routing, future-proof

Comparison

AspectPortfolio (Amplify)Resume (Terraform)
DeploymentGit push → auto-buildGit push → GitHub Actions pipeline
InfrastructureFully managedFully codified
SSLAmplify-managedACM + aliased provider
CDNAmplify CDNCloudFront
Ops overheadMinimalModerate (state management, IAM)
FlexibilityLimitedFull control
AI featuresNoneRAG chatbot
CostAmplify free tierPay-per-use (S3, Lambda, Bedrock)

Both approaches are valid. Amplify is ideal for content sites where you want to focus on writing. Terraform is the right choice when you need fine-grained control, custom integrations, or want to demonstrate infrastructure expertise.