Сервис «У нас праздник» с нуля

«У нас праздник» — сервис о праздниках и важных датах. В нём энциклопедия и календарь связаны с тем, что пользователь может сделать дальше: создать открытку или приглашение, поиграть, сохранить дату и настроить напоминание.

Next.jsTypeScriptMongoDBYandex Cloud
Открыть сервис
части продукта
4
типов сущностей
5
игровых режимов
6
источник данных
1

Задача - Превратить знание о дате в полезный сценарий

Календарь отвечает на вопрос, что отмечают сегодня или в конкретный день. Для «У нас праздник» этого было недостаточно: сервис должен был не только дать справку, но и помочь человеку сразу перейти к делу.

От информации к действию

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

Контент, которому можно доверять

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

Один материал для разных задач

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

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

Результат - Четыре части одного сервиса

В результате появился unasprazdnik.ru — сервис, где редакционные материалы связаны с календарём и пользовательскими инструментами. Редактор ведёт материалы и связи между ними в системе управления контентом, а пользователь может читать энциклопедию, создавать открытки и приглашения, играть, сохранять даты и настраивать напоминания.

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

Энциклопедия и календарь
Энциклопедия и календарь

Энциклопедия и календарь

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

В материалах предусмотрены источники, факты, хронология, географические данные и ссылки на связанные темы.

Next.jsTypeScriptObject Storage
Открытки и приглашения
Открытки и приглашения

Открытки и приглашения

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

ReactCanvasPNG · GIF · MP4
Игры на материалах энциклопедии
Игры на материалах энциклопедии

Игры на материалах энциклопедии

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

6 режимовReactАвтогенерация вопросов
Личный кабинет и система управления контентом
Личный кабинет и система управления контентом

Личный кабинет и система управления контентом

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

TanStack QueryBetter AuthЮKassa

Архитектура - Один поток данных — четыре части системы

Редактор вносит информацию в одном месте. Дальше система готовит её для сайта, личного кабинета, автоматических задач и публикаций.
  • Система управления контентом и 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, поэтому для его показа не требуется отдельный запрос к серверу или системе аналитики.

Расскажите о вашем проекте

Связаться иначе

Вам может быть интересно

Поиск Закупок
Поиск Закупок

Поиск Закупок

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

Проект#стартапы под ключ#frontend
Добавляем JSON-LD разметку к блогу на Next.js
Добавляем JSON-LD разметку к блогу на Next.js

Добавляем JSON-LD разметку к блогу на Next.js

9 мин.

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

Пост#nextjs#seo
Хостинг в S3 от Яндекса
Хостинг в S3 от Яндекса

Хостинг в S3 от Яндекса

6 мин.

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

Пост#yandex
Настройка MAX-бота для работы в Yandex Cloud Functions
Настройка MAX-бота для работы в Yandex Cloud Functions

Настройка MAX-бота для работы в Yandex Cloud Functions

4 мин.

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

Пост#yandex#max
Новые требования по работе с персональными данными
Новые требования по работе с персональными данными

Новые требования по работе с персональными данными

9 мин.

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

Пост#законы
Разработка вебсайтов
Разработка вебсайтов

Разработка вебсайтов

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

Услуга#веб-разработка#сайты
Backend разработка
Backend разработка

Backend разработка

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

Услуга#backend#веб-разработка
Разработка личного кабинета пользователя
Разработка личного кабинета пользователя

Разработка личного кабинета пользователя

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

Услуга#веб-разработка#личный кабинет
Техническая SEO-оптимизация сайта
Техническая SEO-оптимизация сайта

Техническая SEO-оптимизация сайта

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

Услуга#seo#technical-seo