Next.js 15 + Tailwind CSS 4 + Motion (framer-motion successor). Fully static output, verified production build.
cd portfolio
rm -rf node_modules # was installed on Linux; reinstall for your Mac
npm install
npm run dev # http://localhost:3000npx vercelOr push to GitHub and import at vercel.com. Then point your custom domain at it.
app/page.tsx— home: hero, selected work, how-I-work, contactapp/work/state-affairs/page.tsx— flagship case studyapp/work/augmedix/page.tsx— merged Augmedix platform storycomponents/— Nav (reading-progress bar on case studies), Hero (staggered word reveal), WorkCard (hover micro-interactions), Reveal (scroll reveals), CaseStudy (header/section/placeholder primitives)
Blue dashed boxes render wherever content only you can supply is missing:
specific decision stories, metric definitions, images. Replace ImageSlot
with real next/image once you export artifacts. Confirm client names
(Walmart, DoorDash, HCA) are cleared before publishing.
All dates/metrics match your resume (canonical facts). If the resume changes, change them here too.
Self-hosted via npm (no Google Fonts dependency): Inter Variable (body/UI)
- Fraunces Variable (serif display — case study titles, italic accents).
Imported in
app/layout.tsx, mapped inapp/globals.css@theme.
Every animation respects prefers-reduced-motion. Reveals fire once on
scroll-into-view; hero staggers per word; work cards shift title + arrow on
hover; case studies get a spring-smoothed reading-progress bar. Keep this
restraint — the benchmark (korolev.uk) wins through few, precise moves, not
many.