

Sanity CMS in Practice
A hands-on course for developers who want to build production-grade content infrastructure.
This course by Conor Davidson teaches you how to build real content systems with Sanity CMS and Next.js. You'll learn how to model content that scales, build intuitive editing experiences for content teams, and integrate it all into a frontend. By the end, you'll have the foundation to build content systems for marketing sites, editorial platforms, portfolios, and digital archives—and you'll know how to make them a pleasure for editors to use.
We'll cover foundational Sanity concepts, but the focus is on production-ready implementation: the patterns and decisions that matter when you're building for real clients and users. Whether you're new to Sanity or have used it before and want to sharpen your approach, this course will give you a clearer picture of how to build robust, fault-tolerant applications.
Together, we'll build a content site with Pages, Articles, and a tagging system. Each content type teaches specific concepts: Articles cover rich text and imagery, Pages cover block content, composable layouts and SEO/metadata, Tags cover references/relationships.
This course is suited for those with previous experience in web development. You should be comfortable with JavaScript, TypeScript, React, and web app basics.
Feb 17th, Module 1: Data Modeling + Sanity Studio
Sanity project setup and Studio overview
Schema design: Pages, Articles, Tags
Block content: building dynamic, composable pages
Image handling: asset pipeline, hotspots, crops, metadata
References and relationships: building a shared tagging system
Portable text: configuring rich content for articles
Customizing Studio structure and previews
Deploying your Sanity Studio
By the end of this session, you'll have a deployed Sanity instance with your content models, ready to populate.
Feb 24th, Module 2: Next.js Integration + Deployment
GROQ fundamentals: how Sanity's query language works
Fetching content in Next.js
Building index pages: listing and filtering content
Dynamic routes using generateStaticParams
Rendering block content and portable text
Responsive images with next/image and loading placeholders
Deploying to Vercel with webhook-triggered rebuilds
By the end of this session, you'll have a fully deployed website pulling live content from your Sanity Studio.
March 1st, 10AM-4PM, Work Session (Optional)
Four hours of open work time. Bring your project, work alongside other attendees, ask questions, and get unstuck. Feedback and guidance will be available throughout the session.