Разработка кастомных расширений Directus под ключ

При внедрении Directus в корпоративную инфраструктуру часто возникает необходимость интеграции с учётными системами: 1С, CRM, складскими базами. Стандартные REST и GraphQL API не всегда покрывают специфику бизнес-логики — нужны нестандартные обработчики событий, кастомные эндпоинты или сложная валид

Разработка и обслуживание любых видов сайтов:

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

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Услуги, которые мы предлагаем
Показано 1 из 1Все 2062 услуг
Разработка кастомных расширений Directus под ключ
Сложный
~3-5 дней

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1414
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    982
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1241
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    982
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    994

При внедрении Directus в корпоративную инфраструктуру часто возникает необходимость интеграции с учётными системами: 1С, CRM, складскими базами. Стандартные REST и GraphQL API не всегда покрывают специфику бизнес-логики — нужны нестандартные обработчики событий, кастомные эндпоинты или сложная валидация. Именно здесь помогают кастомные расширения Directus: они позволяют расширить функционал без модификации ядра. Типичный пример: при создании заказа нужно отправить данные в CRM, сгенерировать PDF-счёт и занести запись в лог. Hook-расширение справится с этим за несколько строк TypeScript, а Operation в Flows запустит цепочку действий.

Мы разрабатываем кастомные расширения Directus уже 5+ лет и реализовали 30+ решений для синхронизации с 1С, генерации PDF-отчётов, интеграции с Telegram-ботами. Все расширения пишутся на TypeScript с использованием официального SDK.

Кастомные расширения Directus: типы и примеры кода

Типы расширений

Тип расширения Назначение Пример использования
Hook Реагирует на события (создание, обновление) Синхронизация заказов с CRM
Endpoint Добавляет кастомные API-маршруты Генерация отчётов в CSV
Operation Шаг для Flows (автоматизация) Отправка SMS через провайдера
Interface Кастомное поле в админке Color picker
Display Отображение данных в списке Карточка с превью

Сравнение кастомных расширений и готовых плагинов

Параметр Кастомное расширение Готовый плагин
Адаптация Под любую бизнес-логику Ограничен настройками
Скорость разработки 2–5 дней Мгновенно
Совместимость с обновлениями Полная (через SDK) Зависит от автора
Избыточность Ненужного кода нет Часто избыточен

Как Hook-расширения синхронизируют данные в реальном времени?

Hook-расширения подписываются на события action (после изменения) или filter (до сохранения). В типичном кейсе — при создании заказа отправляем данные в CRM. Код обработчика выглядит так:

// extensions/hooks/lifecycle-events/index.ts import type { HookExtensionContext } from '@directus/types' export default ({ action, filter, schedule, init }: HookExtensionContext) => { action('items.create', async ({ collection, item, accountability }) => { if (collection === 'orders') { await fetch(process.env.CRM_WEBHOOK!, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ event: 'order_created', orderId: item.id, total: item.total }) }) } }) } 

Этот код можно дополнить обработкой ошибок и повторной отправкой при сбоях — мы включаем такие сценарии в разработку.

Что такое Endpoint-расширение и как его создать?

Endpoint-расширения позволяют добавить свои маршруты Express. Например, для построения отчёта по продажам с фильтрацией по датам:

// extensions/endpoints/reports/index.ts import type { EndpointExtensionContext } from '@directus/types' import { Router } from 'express' export default (router: Router, { services, getSchema }: EndpointExtensionContext) => { router.get('/sales', async (req, res) => { const schema = await getSchema() const { ItemsService } = services const ordersService = new ItemsService('orders', { schema, accountability: req.accountability }) const orders = await ordersService.readByQuery({ filter: { status: { _eq: 'completed' } }, fields: ['id', 'total', 'date_created'] }) const totalRevenue = orders.reduce((sum, o) => sum + (o.total || 0), 0) res.json({ totalOrders: orders.length, totalRevenue }) }) } 

Мы часто добавляем пагинацию, сортировку и кэширование. Наши эндпоинты проходят нагрузочное тестирование.

Как Operation-расширения автоматизируют бизнес-процессы?

Operation-расширения используются в Flows. Они состоят из двух файлов: серверная логика и UI для построителя Flows.

// extensions/operations/send-sms/index.ts (сервер) export default { id: 'send-sms', handler: async ({ phone, message }, context) => { const response = await fetch('https://api.sms-provider.com/send', { method: 'POST', headers: { Authorization: `Bearer ${process.env.SMS_API_KEY}` }, body: JSON.stringify({ to: phone, text: message }) }) if (!response.ok) throw new Error('SMS failed') return { sent: true } } } 
// extensions/operations/send-sms/app.ts (UI) export default { id: 'send-sms', name: 'Send SMS', icon: 'sms', description: 'Отправить SMS через провайдера', options: [ { field: 'phone', type: 'string', meta: { interface: 'input', required: true } }, { field: 'message', type: 'text', meta: { interface: 'input-multiline', required: true } } ] } 

Почему кастомные расширения лучше готовых плагинов?

Готовые плагины часто не соответствуют специфике бизнеса: они либо избыточны, либо не хватает функции. Кастомное расширение пишется точно под задачу. Например, Hook может не только отправить данные в CRM, но и проверить дубликаты, а Endpoint — сгенерировать сложный отчёт с фильтрацией. Вы получаете именно то, что нужно, без лишнего кода.

Наши проекты показывают, что кастомное решение сокращает время на интеграцию в среднем на 40% по сравнению с доработкой готовых плагинов. При этом вероятность сбоев при обновлении снижается на 60%. Для типовых сценариев у нас есть готовые шаблоны — свяжитесь с нами, чтобы получить их.

Этапы разработки расширения под ключ

  1. Анализ требований (1 день) — интервью с заказчиком, выявление точек интеграции и форматов данных.
  2. Прототип (1 день) — создание заготовки Hook и тестового эндпоинта, согласование API.
  3. Разработка (1–3 дня) — написание кода, модульные тесты, интеграция с внешними сервисами.
  4. Staging (1 день) — развёртывание в тестовом окружении, проверка с реальными данными.
  5. Документация (0.5 дня) — подробный README, инструкция по установке и конфигурации.
Пример структуры директорий
extensions/ ├── hooks/sync-to-crm/ │ ├── index.ts │ └── package.json ├── endpoints/reports/ │ ├── index.ts │ └── package.json 

Что входит в разработку кастомных расширений

  • Исходный код в вашем репозитории (TypeScript, с комментариями).
  • Документация по установке, настройке и использованию.
  • Тестирование в staging-окружении.
  • Гарантия исправления ошибок в течение месяца.
  • Консультации по интеграции и дальнейшей поддержке.

Сроки и ориентировочная стоимость

Разработка одного расширения (Hook или Endpoint) занимает от 2 до 4 дней. Комплексный набор из трёх расширений (Hook + Endpoint + Operation) — 3–5 дней. Стоимость рассчитывается индивидуально в зависимости от сложности. Свяжитесь с нами для точной оценки.

Закажите разработку кастомного расширения — получите готовое решение с документацией и гарантией.