Generated from https://harshitbeni.com/. Each live Framer page is a Next.js App Router route.
npm install
npm run dev # http://localhost:3000
npm run build && npm startEach page is a statically-prerendered Next.js route handler
(app/<route>/route.ts) serving the page HTML verbatim — including the HTML
comment markers Framer's runtime uses to hydrate instantly (which is why the
markup is a string constant rather than JSX: React cannot emit comment nodes,
and dropping them forces a slow client-side re-render). Framer's runtime
stays fully intact, so the site renders identically to the original —
full content, animations, interactivity.
On top of that it applies a few fixes: site images are re-encoded to WebP and
self-hosted under public/assets/img (fidelity-safe, and the biggest payload
win on image-led sites), fonts are self-hosted under public/assets/fonts
with font-display: swap forced, the above-the-fold hero image is marked
fetchpriority="high" for a faster LCP, canonical/og:url are repointed to the
deploy domain (root-relative, upgraded to absolute in the browser so they never
reference Framer's domain), and Framer's analytics beacon is removed. Pages are
static and CDN-cacheable, so TTFB stays low.
The previous hand-built homepage rebuild lives in archive/ (not the live /archive route). That folder is historical only.
The existing .vercel project link is unchanged. Do not change harshitbeni.com DNS unless you intend to cut over.
Deploy to Vercel/Netlify like any Next.js app.