Headless сайти на Sanity: TypeScript-схеми, GROQ, real-time CMS

Часто під час розробки складного веб-проєкту — інтернет-магазину з тисячами товарів або багатомовного порталу — ми стикаємося з обмеженнями традиційних CMS. WordPress або Бітрікс вимагають плагінів для нестандартних полів, а на складних запитах починаються гальма. Це виливається в тижні кастомної ро

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Headless сайти на Sanity: TypeScript-схеми, GROQ, real-time CMS
Середній
~1-2 тижні

Наші компетенції:

Часті запитання

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1467
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1317
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1014
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1276
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1019
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1019

Часто під час розробки складного веб-проєкту — інтернет-магазину з тисячами товарів або багатомовного порталу — ми стикаємося з обмеженнями традиційних CMS. WordPress або Бітрікс вимагають плагінів для нестандартних полів, а на складних запитах починаються гальма. Це виливається в тижні кастомної розробки та болі з продуктивністю. Наша команда використовує Sanity — headless CMS, написану на TypeScript, де контентна схема описується в коді, а запити виконуються через власну мову GROQ. Такий підхід дає гнучкість enterprise-рішень зі швидкістю завантаження SPA. Час завантаження сторінок скорочується на 40% порівняно з монолітними CMS, а кількість запитів до API зменшується в 2–3 рази за рахунок проекційних GROQ-запитів.

Ми розробляємо на Sanity з моменту його виходу і реалізували 10+ проєктів — від лендінгів до маркетплейсів. Кожен проєкт проходить код-рев'ю та навантажувальне тестування. Гарантуємо якість: контент-моделі залишаються розширюваними навіть після запуску.

Які проблеми ми вирішуємо з Sanity?

Складність моделювання контенту. У Sanity ми описуємо типи документів на TypeScript: для кожного поля задаємо тип, валідацію та зв'язки. Наприклад, для статті — заголовок, slug, автор (референс), зображення, категорії (масив референсів) і тіло у форматі Portable Text. Схема версіонується в Git, легко підтримується і не вимагає міграцій.

Продуктивність запитів. GROQ (Graph-Relational Object Queries) дозволяє вибирати тільки потрібні поля та зв'язки, уникаючи N+1 запитів. Складний запит з фільтрацією, сортуванням та пагінацією виконується за мілісекунди. Порівняно з REST API конкурентів, GROQ в 2–3 рази швидший для глибоких вибірок.

Колаборація в реальному часі. Sanity Studio — це React-редактор, який синхронізує зміни миттєво. Два редактори можуть одночасно редагувати один документ без конфліктів. Це прискорює контент-виробництво на 30% і знижує кількість правок.

Як ми налаштовуємо Sanity для вашого проєкту?

Процес починається з аналітики: ми вивчаємо вашу контентну структуру, вимоги до верстки та сценарії використання. Потім проектуємо схему даних — визначаємо типи документів, поля, валідацію та зв'язки. Конфігуруємо Studio: налаштовуємо структуру меню, кастомні плагіни (наприклад, для SEO або медіа-менеджера). Інтегруємо з обраним фронтендом — найчастіше з Next.js App Router, використовуючи next-sanity для CDN-зображень та ISR.

Приклад мінімальної схеми документа:

// schemas/post.ts import { defineType, defineField } from 'sanity' export const postType = defineType({ name: 'post', title: 'Стаття', type: 'document', fields: [ defineField({ name: 'title', title: 'Заголовок', type: 'string', validation: rule => rule.required().min(5).max(100), }), defineField({ name: 'slug', title: 'URL Slug', type: 'slug', options: { source: 'title', maxLength: 96 }, validation: rule => rule.required(), }), defineField({ name: 'author', type: 'reference', to: [{ type: 'author' }], }), defineField({ name: 'mainImage', type: 'image', options: { hotspot: true }, fields: [ defineField({ name: 'alt', type: 'string', title: 'Alt text' }), ], }), defineField({ name: 'categories', type: 'array', of: [{ type: 'reference', to: [{ type: 'category' }] }], }), defineField({ name: 'publishedAt', type: 'datetime', }), defineField({ name: 'body', type: 'blockContent', }), defineField({ name: 'excerpt', type: 'text', rows: 4, }), ], preview: { select: { title: 'title', author: 'author.name', media: 'mainImage' }, prepare: ({ title, author, media }) => ({ title, subtitle: author ? `by ${author}` : '', media, }), }, }) 

Конфігурація Studio включає кастомізацію структури та плагінів:

// sanity.config.ts import { defineConfig } from 'sanity' import { structureTool } from 'sanity/structure' import { visionTool } from '@sanity/vision' import { postType } from './schemas/post' import { authorType } from './schemas/author' import { categoryType } from './schemas/category' export default defineConfig({ name: 'default', title: 'My Site CMS', projectId: process.env.SANITY_STUDIO_PROJECT_ID!, dataset: 'production', plugins: [ structureTool({ structure: S => S.list() .title('Контент') .items([ S.documentTypeListItem('post').title('Статті'), S.documentTypeListItem('author').title('Автори'), S.divider(), S.documentTypeListItem('category').title('Категорії'), ]), }), visionTool(), ], schema: { types: [postType, authorType, categoryType] }, }) 

Чому Sanity виграє у конкурентів?

Sanity перевершує аналоги за рахунок архітектури: всі дані зберігаються в хмарному Content Lake, який автоматично масштабується та кешується на CDN. Зображення проходять через вбудований image CDN з підтримкою WebP та автоматичною оптимізацією. GROQ-запити дозволяють робити проекції на клієнті, зменшуючи навантаження на сервер. На відміну від Strapi, у Sanity немає вузького місця у вигляді одного REST-ендпоінта — кожне поле можна запитати вибірково.

Sanity documentation: GROQ provides a flexible way to query structured content with projections and filters.

Шар Технологія
CMS Sanity 3.x
Studio Embedded в Next.js або окремий деплой
Frontend Next.js App Router
Зображення Sanity Image CDN
Пошук GROQ / Algolia
Деплой Vercel (Next.js) + sanity.io (Studio)
Критерій Sanity Strapi Directus
Тип Cloud-only Self-hosted / Cloud Self-hosted / Cloud
Мова запитів GROQ (SQL-like) REST / GraphQL REST / GraphQL
Real-time колаборація З коробки Через плагіни Обмежена
Кастомізація редактора Повна (React) Обмежена Часткова

Що входить в роботу?

  • Проектування схеми даних — опис типів документів, полів, валідації та референсів.
  • Налаштування Studio — кастомна структура меню, плагіни (vision, dashboard), іконки.
  • Інтеграція з фронтендом — клієнт на @sanity/client, підтримка CDN, ISR, ревалідація.
  • Документація — опис схеми, приклади GROQ-запитів, керівництво для редакторів.
  • Навчання команди — проведемо сесію по роботі з Studio та GROQ.
  • Код на GitHub — з CI/CD для автоматичного деплою Studio та фронтенду.
Приклад типового чек-листа перед запуском
  • Перевірка схеми на відсутність циклічних залежностей
  • Валідація всіх документів через sanity documents validate
  • Налаштування прав доступу для редакторів
  • Тестування запитів на продакшен-датасеті
  • Моніторинг продуктивності через Sanity Metrics

Процес роботи

  1. Аналіз — вивчаємо контентну стратегію, визначаємо типи документів та зв'язки.
  2. Проектування — створюємо схему даних, конфігуруємо Studio.
  3. Розробка — пишемо код фронтенду, налаштовуємо запити та middleware.
  4. Тестування — перевіряємо продуктивність, правильність відображення, навантажувальне тестування.
  5. Деплой — викочуємо на продакшен, налаштовуємо моніторинг.

Терміни та вартість

Базовий проект з 3–5 типами документів та Next.js фронтендом — 2–3 тижні. Складний проект з кастомними плагінами Studio та Visual Editing — 4–6 тижнів. Вартість розраховується індивідуально після брифу. Оцінимо ваш проект безкоштовно — просто зв'яжіться з нами. Отримайте консультацію по Sanity та дізнайтеся, як headless-архітектура прискорить розробку.