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