Задача
У маркетологов сети было несколько отелей и множество каналов: рассылки, соцсети, SEO-публикации, внешние площадки. Планы жили в разных таблицах, отчёты собирались вручную, фото для сайтов загружались без единого описания и метаданных. Нужен был единый инструмент, в котором команда планирует, генерирует и контролирует контент по каждому отелю отдельно.
Что сделано
- Единый календарь контента. Все каналы (email, SMS, Telegram, Instagram, VK, SEO) в одной сетке и в списке. Фильтры по каналам и статусам с выбором нескольких значений сразу. Маркетинговые активности показаны сквозными полосами по датам.
- Публичный календарь для подрядчиков. Режим только для чтения под отдельным паролем и выгрузка в Excel с автофильтром.
- AI-генерация контента. Тексты для каналов с учётом голоса бренда и стоп-слов каждого отеля, генерация изображений в фирменном стиле.
- Импорт из существующих систем. Синхронизация запланированных постов из сервиса отложенного постинга, загрузка отчётов по рассылкам, контент-планов и SEO-статей.
- Кабинет метаданных фото. Массовая загрузка снимков, AI-описание (title, alt, description, ключевые слова) по изображению, запись данных прямо в EXIF/IPTC/XMP файла. Адрес и GPS отеля применяются ко всем его фото. Готовый файл скачивается на ПК.
- Работа с несколькими отелями. Отдельные настройки, база знаний и тон коммуникации для каждого отеля с быстрым переключением.
Инженерные решения
- Развёртывание на VPS с очень ограниченным диском: сборка вынесена на машину разработчика, в образ попадает готовая standalone-сборка (50 МБ вместо 800 МБ), деплой одной командой с автоматической проверкой боевого стека.
- Двухуровневая защита: авторизация в приложении для сотрудников и отдельный Basic Auth на уровне nginx для публичных разделов.
- Миграции схемы БД применяются на боевой базе с бэкапом и проверкой целостности.
- Покрытие тестами ключевой логики (более 120 автотестов).
Результат
Команда планирует и публикует контент по всей сети в одном окне. Подготовка фото для сайтов сократилась с ручного заполнения метаданных до нескольких кликов. Отчётность и календарь доступны подрядчикам без доступа к внутренней системе.
Стек
Next.js (App Router) · React · TypeScript · Prisma · SQLite (libsql) · Tailwind CSS · NextAuth · ExifTool · LLM с компьютерным зрением через OpenRouter · Docker · nginx · Vitest
