Personal portfolio built on AWS — React SPA on CloudFront + S3, fully serverless backend via API Gateway and Lambda, DynamoDB for persistence, SES for email. All infrastructure managed with Terraform.
Live: portfolio.alessandro-bezerra.me
Frontend: React 19 + TypeScript, Vite, Tailwind CSS v4, Framer Motion, EN/PT i18n
Backend (Lambda / Node.js 20): visitor counter, contact form, content CMS, resume upload, video showcase, infra status
AWS: S3, CloudFront (dual-origin: S3 + API GW), API Gateway HTTP API, Lambda, DynamoDB, SES, SSM, Route 53, ACM
frontend/ # React SPA
backend/ # Lambda functions (one per route)
infra/ # Terraform (all resources)
cd frontend
npm install
npm run dev # http://localhost:5173Without VITE_API_BASE_URL set, all API calls return safe fallbacks.
Push to production branch → GitHub Actions builds + syncs to S3 + invalidates CloudFront.
Alessandro Bezerra — Backend & Cloud Engineer