PRISMATICA

Платформа премии «Человек труда»: 7 дней до запуска, 871 участник и 50 000+ голосов

ЧЕЛОВЕК ТРУДА 33 × PRISMATICAPRISMATICA

До открытия приёма заявок — 7 дней. Сайта нет. Даты утверждены официальным положением и перенести их нельзя. Голосование планируют проводить реакциями во ВКонтакте — без защиты от накрутки и проверяемого результата. За семь дней мы запустили первый релиз платформы, а затем по ходу премии превратили её в полноценную систему: заявки, модерация, каталог участников, двухэтапное голосование, антифрод и админка для оргкомитета. К третьему дню муниципального голосования система обработала уже более 50 000 голосов.

Госсектор и НКООнлайн-голосованиеМодерация заявокVK OAuthАнтифродNext.js152-ФЗ
Первый экран сайта премии «Человек труда» с кнопкой голосования и текущим этапом

Коротко

Клиент
Владимирский фонд поддержки регионального сотрудничества и развития — заказчик цифровой платформы регионального этапа Национальной премии «Человек труда»
Задача
За 7 дней запустить первый рабочий релиз платформы премии: приём заявок по шести номинациям, модерацию и публичные страницы. Дальше — без остановки проекта развить систему до каталога участников и открытого голосования жителей области в два этапа: муниципального и регионального
Что сделали
Спроектировали архитектуру, разработали дизайн по брендбуку премии, систему подачи и модерации заявок, каталог участников, двухэтапное голосование с VK-авторизацией и антифродом. Развернули платформу на российской инфраструктуре и сопровождали её во время проведения премии
Результат
871 участник в каталоге. Более 50 000 голосов к третьему дню муниципального этапа. 7 дней от старта проекта до первого production-релиза

Не сайт, а система проведения премии

К нам пришли с положением о премии и календарём, утверждённым официальным документом: приём заявок, муниципальное голосование, региональный этап и церемония были расписаны по датам. Это был не сайт премии в привычном смысле. Нужно было построить рабочую систему: принять сотни заявок и документов, дать оргкомитету инструменты модерации, опубликовать участников, провести два этапа голосования, защитить результаты от накрутки и автоматически переключать механику сайта по календарю премии.

  • Заявки: шесть номинаций, анкета кандидата, документы и подтверждения достижений
  • Модерация: единая очередь, редактирование, одобрение и отклонение без участия разработчиков
  • Каталог: поиск и фильтрация сотен опубликованных участников
  • Голосование: муниципальный и региональный этапы с разными правилами
  • Антифрод: VK OAuth, ограничения на уровне базы данных, rate limiting, журнал голосований и инструменты аннулирования
  • 152-ФЗ: российская инфраструктура, политика обработки персональных данных и журнал действий
  • Календарь: автоматическое переключение этапов без пересборки сайта и ручного вмешательства
Календарь этапов премии на сайте: шесть этапов, текущий отмечен меткой «Идёт сейчас»

От решений до эксплуатации

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

  1. 01

    Сначала решения, потом код — 9–13 июля

    Первые четыре дня ушли не на код, а на решения, цена ошибки в которых была слишком высокой. Зафиксировали архитектуру, инфраструктуру, правила голосования и границы первого релиза. Спорные решения оформляли в ADR, чтобы не возвращаться к ним посреди разработки. Один из главных вопросов — как ограничить голосование по муниципалитетам. Один муниципалитет на человека лучше защищает от манипуляций, но плохо соответствует реальному поведению людей: жить можно в одном городе, работать в другом, а быть связанным с третьим. В итоге ограничили выбор пятью муниципалитетами — компромисс между защитой от накрутки и реальным пользовательским сценарием. Позже это правило было закреплено в акте.

  2. 02

    Первый релиз за 7 дней — к 16 июля

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

    • форма заявки по требованиям федерального положения
    • загрузка файлов и подтверждений достижений
    • очередь модерации: одобрение, отклонение, удаление
    • публичные страницы премии и положение
  3. 03

    От приёма заявок — к системе голосования — 20 июля – 4 августа

    После запуска первого релиза начали собирать второй контур платформы: публичный каталог участников и механику голосования. Появились поиск и фильтры, авторизация через ВКонтакте, разные правила для двух этапов, живые рейтинги и антифрод. На муниципальном этапе пользователь может голосовать максимум в пяти муниципалитетах и выбрать по одному кандидату в каждой из шести номинаций, голос можно изменить или отменить. На региональном этапе — шесть голосов, по одному за кандидата в каждой номинации. Защита результата реализована не только в интерфейсе: уникальность голоса контролируется составным ключом в базе данных, дополнительно работают лимиты голосов и rate limit по IP. Каждый голос попадает в журнал с техническими данными, необходимыми для проверки результата. К старту голосования платформа стала не просто интерфейсом для выбора кандидатов, а системой, в которой результат можно проверить и при необходимости скорректировать при выявленной накрутке.

    • муниципальный этап: до 5 муниципалитетов × 6 номинаций, голос можно изменить или отменить
    • региональный этап: 6 голосов, по одному за кандидата в каждой номинации
    • уникальность голоса — составной ключ в базе, а не проверка на клиенте
    • лимит голосов и rate limit по IP, журнал с техническими данными
    • из админки: аннулирование голоса, блокировка, журнал и выгрузка данных для анализа
  4. 04

    Календарь изменился после запуска — 6–19 августа

    6 августа оргкомитет официально изменил сроки уже работающей премии: приём заявок продлили до 16 августа, а муниципальное голосование перенесли на 17–23 августа. Такой сценарий предусмотрели ещё при проектировании: расписание этапов вынесли в отдельную конфигурацию, от которой зависели доступность функций, тексты, призывы к действию и обратные отсчёты. Поэтому не пришлось вручную переписывать страницы и искать условия по всему проекту — весь календарь платформы перенастроили за один день. Параллельно, когда участников стало больше нескольких сотен, каталог перевели на пагинацию. Для оргкомитета добавили экспорт реестра заявок в XLSX, экспорт списка голосующих, подсветку повторных заявок в одной номинации, дополнительные инструменты проверки голосов и зеркало новостей из группы ВКонтакте.

    • 16 августа — приём заявок завершён, в каталоге 871 одобренный участник
    • 17 августа — началось муниципальное голосование

Интерфейс следует за этапами премии

Платформа сама понимает, какой этап идёт сейчас. Шапка, призывы к действию, обратный отсчёт и доступность голосования автоматически меняются при переходе между фазами. Оргкомитету не нужно обращаться к разработчикам, чтобы «включить голосование» или заменить тексты перед следующим этапом. Показатели на главной странице считаются непосредственно из базы данных в реальном времени — без ручной сверки таблиц.

Блок живых показателей премии: 6 номинаций, 23 муниципалитета, более 50 000 голосов, 880 заявок
Показатели на главной считаются из базы в реальном времени — оргкомитету не нужно ничего сводить вручную.
Экран голосования с вкладками муниципалитетов и числом кандидатов в каждом
Голосование: пользователь видит муниципалитеты, количество представленных кандидатов и последовательно голосует в каждой номинации.
Каталог участников премии с поиском, фильтрами по номинации и муниципалитету
Каталог: 871 участник не превращается в бесконечную ленту — поиск, фильтры по номинации и муниципалитету, сортировка и пагинация.

Результаты на 19 августа 2026 года

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

Участников в каталоге

Было: Сайта не было

Стало: 871

На момент закрытия приёма 16 августа в публичном каталоге опубликован 871 участник. Источник: реестр одобренных заявок в админке и счётчик каталога

Голосов отдано

Было: Реакции в паблике ВКонтакте

Стало: Более 50 000

К 19 августа — третьему дню семидневного муниципального этапа — в системе зарегистрировано более 50 000 действующих голосов. Аннулированные голоса в показатель не входят

Рост числа заявок

Было: 291 на 05.08

Стало: 871 на 16.08

На 5 августа было одобрено 291 заявление; после официального продления приёма к 16 августа количество опубликованных участников выросло до 871

Срок до первого релиза

Было:

Стало: 7 дней

Старт работ — 9 июля; первый релиз принят заказчиком и запущен в production — 16 июля. От старта до работающей системы приёма заявок — 7 дней

Охват

Было:

Стало: 6 номинаций, 23 муниципалитета

На 19 августа в премии представлены участники из 23 муниципалитетов Владимирской области по шести номинациям

Простой сервиса за время голосования

Было:

Стало: Около 2 минут

Разбор логов nginx за 18.08: все ответы 502 пришлись на два окна пересборки; вне этих окон ошибок 5xx нет

Проверяемость результата

Было: Ручной подсчёт реакций

Стало: Журнал голосований, аннулирование накрутки, выгрузка в XLSX

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

Итоговое число голосов муниципального этапа, результаты регионального голосования и отзыв заказчика добавим после завершения премии и подписания итогового акта в сентябре 2026 года.

Чем мы пользовались

NNext.js
TSTypeScript
PGPostgreSQL
PRPrisma
RERedis
VKVK OAuth
TATailwind CSS
NGNginx
DKDocker

От положения о премии — к работающей цифровой системе

За семь дней проект прошёл путь от положения и календаря до первого работающего production-релиза. Дальше система росла вместе с премией: 871 участник, два этапа голосования, более 50 000 голосов, антифрод, журнал действий и собственные инструменты оргкомитета. Но главное изменение — не перенос голосования из ВКонтакте на отдельный сайт. Процесс, который мог зависеть от таблиц, переписки и ручного подсчёта реакций, стал управляемой цифровой системой с проверяемым результатом.

Похожая задача — голосование, конкурс, приём заявок с модерацией?

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

Календарь этапов премии с отметкой текущего этапа