A statically exported personal site and blog built with Next.js and deployed on AWS.
- Next.js - React framework using the App Router and static export.
- React - UI library for the site experience.
- Tailwind CSS - Utility-first CSS framework for styling.
- Headless UI - Accessible unstyled components for interactive UI.
- MDX - Content format for blog posts and long-form pages.
- remark and rehype - Markdown and HTML transforms for headings, code blocks, and metadata.
- Shiki - Syntax highlighting for rendered code samples.
- Satori and Sharp - OG image generation during the build.
- pnpm - Package manager for the app and infrastructure packages.
- TypeScript - Static typing across the app and CDK infrastructure.
- Zod - Runtime validation for client and build-time environment variables.
- Node.js - JavaScript runtime environment (v24.x).
- AWS CDK - Infrastructure as code for the hosting stack.
- Amazon S3 and Amazon CloudFront - Static hosting and CDN delivery.
- Amazon Route 53 and * AWS Certificate Manager* - DNS and TLS for the site domains.
- Cloudflare Web Analytics - Privacy-friendly traffic analytics and Core Web Vitals (LCP, INP, CLS, TTFB) via client-side beacon.
- Amazon CloudWatch RUM - Client-side real user monitoring (scaffolded but dormant; Cloudflare Web Analytics covers Web Vitals in the meantime).
- Sentry - Browser error tracking.
GitHub Actions for build, Lighthouse audits, and deployment to AWS.
| Workflow | Trigger | Purpose |
|---|---|---|
| CI | Push/PR to master, manual dispatch |
Build, Lighthouse, and gated deploy flow |
For the full pipeline, see the CI/CD documentation.
Static export deployed to AWS (S3 + CloudFront) via CDK.
| Environment | URL |
|---|---|
| Production | https://benjamin-chavez.com |
For infrastructure details and CDK commands, see the INFRASTRUCTURE.md.
For the first AWS deployment, use the initial deployment runbook and the
checked-in helper script at scripts/initial-aws-deploy.sh.
| Command | Description |
|---|---|
pnpm dev |
Start the Next.js development server |
pnpm run build |
Generate OG images and build the static export |
pnpm run start |
Run the production server locally |
pnpm run lint |
Run the Next.js lint command |
For infrastructure commands (CDK synth, diff, deploy), see the INFRASTRUCTURE.md.
Requires Node.js v24+ and pnpm.
pnpm install
cp .env.example .env.local
pnpm dev- Enable Cloudflare Web Analytics (primary telemetry): set
NEXT_PUBLIC_CF_ANALYTICS_TOKENas a GitHub Actions repository variable. Covers visitors, page views, referrers, and Core Web Vitals. - Enable browser-side Sentry for error tracking: set
NEXT_PUBLIC_SENTRY_DSNas a GitHub Actions repository variable. - CloudWatch RUM is scaffolded but deferred; Cloudflare Web Analytics now covers Web Vitals. Revisit only if AWS-native RUM becomes valuable (e.g., CloudWatch alarms on client errors, correlation with backend traces).
