Personal site for Andrew Leach at https://leachcreative.com.
Static Next.js 16 (App Router, React 19) + Tailwind 4 + shadcn/ui + Framer Motion + Lenis, exported to out/ and deployed to GitHub Pages via GitHub Actions.
npm install
npm run devnpm run ci # typecheck + lint + format:check + test + buildStatic output lands in out/.
The repo ships with a synthetic placeholder portrait. Before publishing:
- Replace
public/images/portrait.jpgwith the real 1600×1600 B&W photo. - Drop
public/resume.pdf(served at/resume.pdf). - Run
node scripts/optimize-images.mjsto regenerateportrait.webpandmanifest.json.
The prebuild npm script runs the optimization automatically on every build.
Push to main triggers .github/workflows/deploy.yml, which builds and deploys to GitHub Pages.
- Create the GitHub repo (public). Push
mainwithgit push -u origin main. - In repo Settings → Pages, set Source: GitHub Actions.
- Configure DNS at your registrar for
leachcreative.com:- A
@→185.199.108.153 - A
@→185.199.108.154 - A
@→185.199.108.155 - A
@→185.199.108.156 - CNAME
www→<github-username>.github.io
- A
- In Settings → Pages, set the custom domain to
leachcreative.comand, once the DNS check passes, enforce HTTPS.
- Design spec:
docs/superpowers/specs/2026-04-16-leach-resume-site-design.md - Implementation plan:
docs/superpowers/plans/2026-04-16-leach-resume-site.md