Architecture
This portfolio is intentionally straightforward: a Next.js frontend deployed with AWS Amplify, backed by a Spring Boot API running in ECS and exposed behind an ALB.
Frontend (Next.js) — AWS Amplify
Amplify builds and deploys the App Router frontend from GitLab. The custom domain `caseycapozzi.com` points to Amplify for fast global delivery.
Backend (Spring Boot) — ECS
The API runs as a containerized service in ECS. It exposes health/status endpoints and serves OpenAPI docs for exploration and debugging.
Traffic Routing — ALB
`api.caseycapozzi.com` routes to an Application Load Balancer. The ALB forwards requests to the ECS target group and performs health checks to keep traffic on healthy tasks.
DNS + Domain — Route 53
Route 53 manages DNS for `caseycapozzi.com` and `api.caseycapozzi.com`. This keeps the domain configuration centralized while allowing independent frontend/backend deployments.
CI/CD
Frontend deploys via Amplify’s GitLab integration. Backend deploys via container build/push and ECS service updates.
How the pieces interact
Frontend pages call a same-origin proxy route (`/api/status`) to avoid browser CORS issues. That proxy reaches the API via `api.caseycapozzi.com` in production, or `localhost:8080` in local dev.