Сервис «У нас праздник» с нуля
«У нас праздник» — сервис о праздниках и важных датах. В нём энциклопедия и календарь связаны с тем, что пользователь может сделать дальше: создать открытку или приглашение, поиграть, сохранить дату и настроить напоминание.
- части продукта
- 4
- типов сущностей
- 5
- игровых режимов
- 6
- источник данных
- 1
Задача - Превратить знание о дате в полезный сценарий
Календарь отвечает на вопрос, что отмечают сегодня или в конкретный день. Для «У нас праздник» этого было недостаточно: сервис должен был не только дать справку, но и помочь человеку сразу перейти к делу.
От информации к действию
Праздник, событие или человек становятся отправной точкой для следующего шага. Из материала можно перейти к открытке или приглашению, запустить игру либо сохранить важную дату, чтобы вернуться к ней позже.
Контент, которому можно доверять
У дат и исторических событий не всегда есть одна бесспорная версия. Поэтому в материалах нужно хранить источники, учитывать разные варианты дат и не выдавать предположения за установленные факты. При этом работа с контентом должна оставаться достаточно простой для небольшой редакции.
Один материал для разных задач
Одни и те же данные используются не только на страницах энциклопедии. Они попадают в календарь, становятся основой игровых вопросов и используются для автоматических публикаций. Это позволяет не вести несколько независимых копий одного и того же материала.
Ключевой принцип сервиса: не заставлять человека каждый раз начинать с чистого листа. Если системе уже известны праздник и дата, эту информацию можно сразу использовать для поздравления, открытки, игры или напоминания.
Результат - Четыре части одного сервиса
В результате появился unasprazdnik.ru — сервис, где редакционные материалы связаны с календарём и пользовательскими инструментами. Редактор ведёт материалы и связи между ними в системе управления контентом, а пользователь может читать энциклопедию, создавать открытки и приглашения, играть, сохранять даты и настраивать напоминания.
Все четыре части работают с общей системой данных, поэтому новый материал может одновременно появиться в календаре, дополнить энциклопедию и стать источником для других функций сервиса.

Энциклопедия и календарь
Пять типов сущностей собраны в общей системе. Праздники, события и связанные с ними материалы можно смотреть по датам и переходить между страницами по смысловым связям.
В материалах предусмотрены источники, факты, хронология, географические данные и ссылки на связанные темы.

Открытки и приглашения
В браузерном редакторе можно собрать открытку, приглашение или коллаж: выбрать фон, добавить текст и свои изображения, а затем сохранить готовый результат.

Игры на материалах энциклопедии
Шесть игровых режимов используют опубликованные материалы как источник вопросов. Когда в энциклопедии появляется новый материал, он может пополнить игры без отдельного ручного наполнения базы вопросов.

Личный кабинет и система управления контентом
В системе управления контентом редактор работает с материалами, источниками и связями между ними. В личном кабинете пользователь управляет профилем, сохраняет важные даты, настраивает напоминания и получает доступ к платным возможностям.
Архитектура - Один поток данных — четыре части системы
- Система управления контентом и MongoDB. Здесь хранятся материалы, связи между ними, редакционные данные и сведения о публикации.
- Сервис подготовки контента. Готовит данные для публичных страниц: собирает связанные материалы, изображения и ссылки в готовую структуру, которую сайт получает без дополнительной обработки.
- Сайт и файловое хранилище. Страницы энциклопедии собираются заранее с помощью Next.js и публикуются в Yandex Object Storage как готовые файлы. При обычном чтении сайта не нужно каждый раз обращаться к MongoDB.
- Серверные функции. Функции Yandex Cloud обслуживают задачи, которым нужен сервер: личный кабинет, вход в систему, оплату, автоматические операции и публикации.
Техническая реализация - Как материалы попадают из редакционной системы на сайт и в другие каналы
Публичный сайт, редакционная система и функции личного кабинета разделены между собой. Благодаря этому один и тот же материал можно по-разному подготовить для сайта, игр и публикаций, не создавая отдельную копию для каждого канала.
Подготовка материалов
Система управления контентом работает через отдельный интерфейс для административных операций. Для публичного сайта сервис подготовки контента собирает готовый набор данных pageContent: добавляет связанные материалы, изображения и ссылки, а затем передаёт странице всё необходимое для показа.
Опубликованные материалы используются и в автоматических задачах. На их основе формируются ежедневные публикации для Telegram и Max — отдельно готовить тот же контент для мессенджеров не нужно.
Работа с изображениями
Для одного материала можно задавать разные изображения в зависимости от задачи: основное изображение, обложку страницы и изображение Open Graph для превью в социальных сетях и мессенджерах. Поэтому один файл не приходится использовать во всех местах.
Для подготовки фонов открыток и увеличения изображений используется локальный инструмент Image Lab на базе ComfyUI. После обработки файлы публикуются в Yandex Object Storage.
Поисковая оптимизация и данные для автоматической обработки
Для публичных страниц формируются canonical-ссылки, структурированные данные JSON-LD, файл robots.txt и отдельные файлы sitemap для разных разделов сайта.
Дополнительно публикуются llms.txt и описание структуры данных. Они помогают поисковым системам и другим программам понять, как устроены материалы сайта.
Аналитика
Яндекс.Метрика помогает понять, как люди пользуются сервисом и из каких каналов приходят. Основное содержимое страницы при этом заранее включено в готовый HTML, поэтому для его показа не требуется отдельный запрос к серверу или системе аналитики.
Вам может быть интересно

Поиск Закупок
Полная разработка стартапа для поиска государственных закупок и отправки нотификаций в мессенджеры. От идеи до реализации.

Добавляем JSON-LD разметку к блогу на Next.js
Инструкция по добавлению JSON-LD разметки к блогу на Next.js...

Хостинг в S3 от Яндекса
Рассказываем как использовать Yandex Object Storage для хостинга статического сайта...

Настройка MAX-бота для работы в Yandex Cloud Functions
Инструкция по настройке и хостингу простейшего MAX-бота в Yandex Cloud Functions.

Новые требования по работе с персональными данными
Обзор новых требований к обработке персональных данных для владельцев сайтов и чат-ботов и чек-лист для самопроверки...

Разработка вебсайтов
Сайт под ваш бизнес: от структуры и дизайна до запуска и масштабирования. Быстро, продуманно и с фокусом на результат.

Backend разработка
Разрабатываю серверную часть, которая стабильно работает под нагрузкой и масштабируется вместе с продуктом.

Разработка личного кабинета пользователя
Личный кабинет под ваш продукт: управление пользователями, данными и процессами. От MVP до масштабируемой платформы.

Техническая SEO-оптимизация сайта
Нахожу и исправляю технические ограничения, которые мешают поисковикам обходить, индексировать и ранжировать важные страницы сайта.