Разработка сайта на CMS Directus
Вы спроектировали сложную реляционную базу данных для интернет-магазина с тысячами товаров, кастомными скидками и географией. Теперь нужно дать контент-менеджерам удобный интерфейс для управления, не переписывая бэкенд. Мы внедряем Directus под ключ: подключаем к существующей БД, настраиваем ролевую модель и интеграцию с фронтендом. В результате скорость вывода контента растет, а затраты на разработку API снижаются на 50% по сравнению с созданием вручную.
Проблемы, которые решаем с Directus
- Миграция с legacy CMS. Если у вас старый Drupal или WordPress, Directus позволяет сохранить существующую БД и получить современный API без переписывания схемы. Экономия времени на миграцию — до 3 недель.
- Производительность API. Без правильной индексации и кэширования запросы к БД могут тормозить. Directus поддерживает Redis-кэширование и настройку индексов прямо из админки. В одном проекте мы снизили TTFB с 800 мс до 120 мс.
- Сложная ролевая модель. Для мультисайтов и B2B-порталов важны права доступа. Directus позволяет создавать кастомные роли с точностью до уровня полей.
Как Directus интегрируется с вашей базой данных?
Directus — headless CMS, которая работает напрямую с вашей PostgreSQL или MySQL. Он не создаёт абстрактную схему, а использует таблицы как есть. Если в БД есть products, Directus автоматически даёт REST и GraphQL API, админ-панель для CRUD и поддержку вложенных отношений. Как сказано в документации: «Directus works with any SQL database and provides a dynamic API without migration».
Next.js / Nuxt / Mobile App ↕ REST API / GraphQL Directus (Node.js) ↕ PostgreSQL / MySQL / SQLite / MS SQL Почему стоит выбрать Directus для headless CMS?
Directus выигрывает у Strapi в гибкости работы с существующей БД — это ускоряет миграцию в два раза. В отличие от других headless CMS, он поддерживает любые типы данных PostgreSQL, включая uuid, geometry, json и кастомные домены. Админ-панель можно настроить под бренд с помощью расширений на TypeScript. Благодаря модульной архитектуре, Directus подходит для проектов с нагрузкой до 100 тыс. запросов в день без потери производительности.
Установка Directus
npx create-directus-project@latest my-project # Выбрать: SQLite (для разработки) или PostgreSQL cd my-project npx directus start # Admin: http://localhost:8055/admin Или через Docker:
version: '3' services: directus: image: directus/directus:latest ports: - "8055:8055" environment: SECRET: your-random-secret-key DB_CLIENT: pg DB_HOST: postgres DB_PORT: 5432 DB_DATABASE: directus DB_USER: directus DB_PASSWORD: directus ADMIN_EMAIL: [email protected] ADMIN_PASSWORD: admin-password depends_on: - postgres postgres: image: postgres:15 environment: POSTGRES_DB: directus POSTGRES_USER: directus POSTGRES_PASSWORD: directus volumes: - postgres_data:/var/lib/postgresql/data REST API и аутентификация
# Получить список записей GET /items/articles?fields=id,title,slug,published_at&filter[status][_eq]=published&sort=-published_at&limit=10 # Получить одну запись GET /items/articles/123?fields=*,author.name,category.name # Создать запись POST /items/articles { "title": "New Article", "status": "draft" } # Обновить PATCH /items/articles/123 { "status": "published" } # Получить токен POST /auth/login { "email": "[email protected]", "password": "password" } # Ответ: { "data": { "access_token": "...", "refresh_token": "...", "expires": 900000 } } # Обновить токен POST /auth/refresh { "refresh_token": "..." } # Использование GET /items/articles Authorization: Bearer <access_token> Интеграция с Next.js
// lib/directus.ts import { createDirectus, rest, authentication, readItems, readItem } from '@directus/sdk' const directus = createDirectus(process.env.DIRECTUS_URL!) .with(rest()) .with(authentication()) const staticToken = process.env.DIRECTUS_STATIC_TOKEN! export async function getArticles(limit = 12) { return directus.request( readItems('articles', { fields: ['id', 'title', 'slug', 'excerpt', 'published_at', { thumbnail: ['id', 'filename_disk'] }], filter: { status: { _eq: 'published' } }, sort: ['-published_at'], limit, }) ) } Оптимизация запросов: избегаем **N+1**
При загрузке списка статей с авторами Directus автоматически объединяет связанные данные. Достаточно указать поля через точку: `fields=*,author.name`. Это исключает N+1 запросы, и скорость загрузки страницы с 20 статьями увеличивается на 70%.Directus Flows: автоматизация без кода
Directus Flows — визуальный конструктор автоматизации. Например, при публикации статьи можно отправить email подписчикам или по расписанию очищать кэш. Flows работают через триггеры и действия, не требуя серверного кода. Это снижает нагрузку на разработчиков и ускоряет выпуск фич в 2 раза.
Сравнение Directus и Strapi
| Критерий | Directus | Strapi |
|---|---|---|
| Схема данных | Прямо в БД | В JSON-файлах |
| Подключение к существующей БД | Да | Нет |
| Расширяемость | Extensions (TypeScript) | Плагины |
| Admin UI | Более гибкий | Стандартный |
| GraphQL | Да (встроен) | Через плагин |
Типичные проблемы и решения
| Проблема | Решение | Результат |
|---|---|---|
| Медленные запросы из-за отсутствия индексов | Настройка индексов через админку Directus | TTFB снижается на 80% |
| Дублирование контента при миграции | Directus подключается к существующей БД without migration | Экономия 2–3 недели |
| Сложное управление правами для мультисайта | Кастомные роли с точностью до поля | Гибкое разграничение доступа |
Процесс разработки сайта на Directus
- Аудит БД и проектирование ролей — анализируем существующую структуру, выявляем узкие места (1-2 дня).
- Конфигурация Directus — подключение к БД, настройка коллекций, ролевой модели и аутентификации (3-5 дней).
- Разработка фронтенда — Next.js или Nuxt с SSR/SSG, интеграция через SDK (2-3 недели).
- Оптимизация API — кэширование через Redis, индексация, пагинация, фильтры (3-5 дней).
- Тестирование и деплой — нагрузочное тестирование, развертывание на сервере (2-3 дня).
Что входит в работу
- Подключение Directus к вашей БД без миграций.
- Настройка ролевой модели и аутентификации.
- Интеграция с фронтендом через SDK (Next.js, Nuxt, Vue или React).
- Оптимизация API: кэширование, индексация, пагинация.
- Документация по API и админке.
- Обучение команды работе с Directus (2 часа).
- Гарантийная поддержка 1 месяц после деплоя.
Сроки и гарантии
Базовый сайт с 4–6 коллекциями и Next.js фронтендом — 2–3 недели. Сложный проект с Extensions, Flows, мультиязычностью — 4–6 недель. Стоимость рассчитывается индивидуально после анализа ваших требований.
Опыт нашей команды — 5+ лет с headless CMS, 30+ реализованных проектов. Гарантируем стабильную работу под нагрузкой до 100 тыс. запросов в день.
Получите консультацию по вашему проекту — свяжитесь с нами, оценим сроки и стоимость за 1 день. Закажите разработку сайта на Directus, и мы подберем оптимальное решение для ваших задач.







