System

How it's built

Version 1 of this portfolio is a static site (SSG) on CloudFront/S3, with a small serverless API for contact and admin — scale-to-zero by default.

Browser → CDN for pages; API Gateway → Lambda for contact leads.

Stack

Static generation keeps pages cheap; only contact/admin needs compute.

LayerTechnologyWhy
CDN / hostingCloudFront · S3Global cache, TLS, low cost at low traffic
WebNext.js SSG · next-intlSSG + i18n; no Node server 24/7
ContentMarkdown in-repo (build-time)Markdown compiled at CI build time
HTTP APIAPI Gateway HTTP APIManaged front door, throttling, JWT
Contact / adminLambda · Node/TypeScriptLeads, SES mail, availability, admin JWT
DataDynamoDB (on-demand)On-demand table for leads — pay per request
EmailAmazon SESTransactional notifications to the site owner

V0 → V1 mapping

Same product content; cheaper runtime shape. Infra lives in the ega-v1-infra-tf repository.

V0 (Compose / EC2)V1 (serverless)
EC2 + Traefik + Compose (V0)CloudFront + S3 (this site)
content-service (Go)Markdown at build (no runtime content API)
api-gateway + contact-serviceAPI Gateway + Lambda
Postgres + RedisDynamoDB + API GW throttling
MailpitSES