Frontend Engineering
Next.js development for products that need to ship fast and rank well.
I build product and marketing sites in Next.js where performance and SEO come from the architecture itself — server rendering, static generation and metadata decided upfront, not patched in after launch.
What I build
- Marketing and product sites built for Core Web Vitals and search visibility from day one
- App Router migrations and upgrades from legacy Pages Router or non-Next.js codebases
- Server-rendered dashboards and authenticated application shells
- Design systems implemented directly in Next.js and Tailwind
- API routes and server actions integrated into the same codebase as the app
Who it's for
- Startups launching a new product or marketing site
- Teams migrating off WordPress, Webflow or a legacy framework
- Companies where SEO and load performance are business requirements, not nice-to-haves
How I approach it
Architecture first
Rendering strategy (static, server-rendered or hybrid) is chosen per route based on what the page actually needs, before any UI is built.
Performance as a budget
Bundle size, image handling and font loading are treated as constraints from the start, not cleaned up in a later pass.
SEO built in
Metadata, structured data, sitemaps and semantic markup are part of the initial build, matching how this site itself is built.
Handover-ready code
Typed, conventionally structured code that another engineer — or your future team — can pick up without a walkthrough.
Frequently asked
- Can you work from an existing design?
- Yes. Most engagements start from a Figma design, an existing brand system or a rough reference site rather than a blank page.
- Can you migrate my Pages Router app to App Router?
- Yes — this is a common engagement. Scope depends on how much of the app depends on Pages Router-specific data fetching.
- Do you handle SEO as part of the build?
- Yes. Metadata, sitemaps, structured data and Core Web Vitals are part of a Next.js build by default, not a separate add-on.
Related work
Financial Terminal →