CMS-backed content
Connected the public site to a structured editing workflow.
Combining a modern frontend with a structured CMS setup so content updates, event publishing and ongoing site maintenance stay organised.
A content-led website and CMS setup built to support events, editorial updates and a more maintainable publishing workflow.

CMS-backed content
Connected the public site to a structured editing workflow.
Dynamic events
Supported reusable detail pages from structured content.
Shared content model
Improved consistency across frontend and editorial setup.
Focus
Content-driven website and CMS
Role
Frontend engineering, CMS integration, content architecture
Period
Recent
Stack
Next.js, Sanity, TypeScript, Tailwind CSS
Showcase
The frontend needed to stay polished for visitors while giving editors a practical system for updating sections, events and long-form content.



Overview
This project combined a Next.js site with a Sanity studio so the public-facing experience and editorial workflow could evolve together. The goal was to support a content-led business site with reusable sections, dynamic event pages and a structure that would make ongoing updates more practical.
Key point
A content-driven website and CMS setup focused on reusable sections, dynamic event pages and easier day-to-day publishing.
Challenge
The central challenge was giving editors enough flexibility to manage varied content and event updates without allowing the frontend to drift into a collection of inconsistent layouts and one-off templates.
Key point
The frontend needed to stay polished for visitors while giving editors a practical system for updating sections, events and long-form content.
Role
What I directly shaped in the case study.
01
Integrated the frontend with a structured Sanity content model
02
Built reusable sections and navigation for the main site experience
03
Implemented dynamic event pages and Portable Text rendering
04
Worked across both the public site and the editorial CMS setup
Approach
Delivery principles that shaped the implementation and helped keep the work practical in production.
01
The content model was designed to support recurring site sections and event content from a single structured system rather than ad hoc page-specific fields.
02
Page sections, navigation and content presentation were built from reusable pieces so the site could scale without accumulating disconnected templates.
03
The site and studio were treated as one delivery system, making it easier to publish updates, manage events and keep the frontend maintainable over time.
UX decisions
Design-aware implementation choices rather than generic UI praise.
Layout rhythm and section sequencing were shaped to keep content readable while still giving the site enough visual character.
Dynamic event pages and supporting navigation made it easier to surface individual pieces of content without breaking the overall site structure.
The component set was kept focused enough that content editors could work flexibly without easily undermining hierarchy or layout consistency.
Interactive and reveal-based details were used selectively so the site felt polished without competing with the content itself.
Technical implementation
The project used Next.js App Router, React, TypeScript and next-sanity within a monorepo that separated the public site from the Sanity studio. Dynamic routes, Portable Text rendering, schema definitions and reusable sections helped keep both publishing and frontend delivery structured.
Stack in context
The technical layer was kept aligned with the delivery goal: make the interface maintainable, production-ready and easy to evolve.
Challenges and solutions
Real frontend work usually involves constraints. These challenge-solution pairs keep the case study grounded in that reality.
Challenge
Supporting content flexibility without frontend drift
Solution
Defined reusable sections and schema-driven content types so new content could be added within a clearer set of frontend constraints.
Challenge
Keeping the site and CMS maintainable as one system
Solution
Used a monorepo structure with a dedicated studio and a shared content model so changes could stay coordinated across both surfaces.
Outcome
A cleaner content workflow with reusable page patterns and a stronger frontend base for ongoing updates.
Key point
Cleaner content publishing workflow
Cleaner content publishing workflow
Reusable frontend sections and page patterns
Dynamic event pages connected to structured content
Stronger base for ongoing site updates