Building a Portfolio with Astro and SST
Why Astro + SST?
When I decided to rebuild my portfolio, I wanted a stack that would give me the best of both worlds: blazing fast performance with the flexibility to add server-side features when needed.
Astro was the obvious choice for the frontend. Its island architecture means I ship zero JavaScript by default, only hydrating interactive components when necessary. The result? Sub-second page loads and perfect Lighthouse scores.
SST handles the infrastructure side. With a single sst.config.ts file, I can define my entire AWS deployment — CloudFront CDN, Lambda functions for SSR, S3 for static assets — all without touching a CloudFormation template.
The Stack
Here’s what powers this site:
- Astro 6 — Static-first framework with SSR capabilities
- SST v3 — Infrastructure-as-code for AWS
- CloudFront — Global CDN for low-latency delivery
- Lambda — Serverless functions for dynamic routes
- S3 — Static asset storage
Key Design Decisions
Dark Glassmorphism
I chose a dark glassmorphism aesthetic because it feels modern and premium. The key to making it work is subtlety — the glass effect should enhance content, not distract from it.
.glass {
background: rgba(255, 255, 255, 0.04);
backdrop-filter: blur(20px);
border: 1px solid rgba(255, 255, 255, 0.08);
}
Performance First
Every design decision was filtered through a performance lens. CSS animations instead of JavaScript, system font stacks as fallbacks, and lazy-loaded images keep the site snappy.
What’s Next
I’m planning to add a few more features:
- Blog search — Full-text search powered by a Lambda function
- View counter — Track page views with DynamoDB
- Newsletter — Email subscriptions via SES
Stay tuned for more posts about the build process!