Etienne Sharkey
Menu

Career

  • Overview
  • RAC
  • Forth
  • BAE Systems

Projects

  • Portfolio Site
  • PhotoMapper
  • Meal Planner

Portfolio Site

The entire portfolio runs through a single Next.js file: [[...slug]]/page.tsx. There are no individual page files — this one catch-all route handles every URL on the site.

On each request, it queries Sanity by the current path and receives a page document containing an ordered array of component blocks. Each block has a _type and its fields. That array is passed straight into DynamicComponentRenderer, which maps every _type to its React component and renders the page. No per-page routing logic. No hardcoded layouts.

Adding a new page is a new CMS document. Adding a new component type is a new schema plus one switch case.

FrontendContentDataInfrastructureCMS data flow
[[...slug]] / page.tsx
DynamicComponentRenderer
Sanity Cloud API
Vercel
Sanity Studio
Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

Get in touch

Open to new opportunities and interesting projects. Feel free to reach out.

EmailGitHubLinkedIn
Download CV