Назад ко всем проектам

Многоразовая платформа для электронных голосований с индивидуальным весом голоса

Система управляет делегатами, повесткой, вопросами и результатами голосования. Организаторы запускают вопросы в реальном времени, участники голосуют по персональным ссылкам, а результаты автоматически формируются в протоколы XLSX и PDF.

Закрытая платформа

Доступ предоставляется организаторам и участникам мероприятий РГР.

Используется с июня 2026 года

Роль: продуктовое проектирование, UX/UI, frontend, backend, база данных, интеграции, production-деплой и поддержка

Стек

  • React 18
  • Vite
  • Tailwind CSS
  • Node.js
  • Express
  • PostgreSQL
  • Prisma
  • Socket.io
  • JWT
  • GreenSMS
  • ExcelJS
  • PDFKit
  • Timeweb Cloud
делегатов использовали платформу
300+делегатов использовали платформу
вопросов голосования проведено
50+вопросов голосования проведено
суммарная реализация платформы
4 днясуммарная реализация платформы
технических сбоев во время мероприятия
0технических сбоев во время мероприятия
Главная страница платформы: вход делегата по персональной ссылке и вход в панель администратора, модератора или регистратора

Контекст и проблема

Российской Гильдии Риэлторов требовалось провести более пятидесяти регламентированных голосований в рамках Национального совета и Съезда членов РГР.

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

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

Для кого создан продукт

  • организаторы съездов, советов и профессиональных конференций
  • ассоциации и объединения с представительским голосованием
  • регистраторы и секретариаты мероприятий
  • модераторы голосований
  • делегаты с индивидуальным весом голоса
  • архитектура многоразовая: платформа не привязана к одному мероприятию

Решение

Я разработал единый веб-продукт для полного цикла электронного голосования: от загрузки делегатов и формирования повестки до проведения вопросов в реальном времени и выгрузки итоговых протоколов.

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

Взвешенное голосование

Каждому делегату назначается индивидуальный вес от 1 до 150 голосов. Сервер проверяет, что распределённая сумма полностью соответствует его весу.

Три механики

Количественное голосование «за / против / воздержался», рейтинговый выбор нескольких вариантов и альтернативное голосование за один вариант.

Управление делегатами

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

Персональный доступ

Участники получают индивидуальные токены, ссылки, QR-коды и SMS. Деактивированный доступ перестаёт работать.

Повестка и роли

Администратор управляет мероприятиями, регистратор — делегатами, а модератор — повесткой, вопросами и ходом голосования.

Работа в реальном времени

Socket.io синхронизирует открытие и закрытие вопросов, таймеры и прогресс голосования на экранах модераторов и участников.

Таймеры и автозапуск

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

Протоколы и результаты

Платформа формирует сводные результаты и экспортирует данные в XLSX и PDF по формату заказчика.

Моя роль

Задача поступила от Российской Гильдии Риэлторов. Я самостоятельно перевёл требования заказчика и правила взвешенного голосования в работающую production-платформу. Платформа была реализована с помощью AI-assisted development в Claude Code: искусственный интеллект использовался как инструмент для ускорения проектирования, написания кода, проверки сценариев и итеративной доработки продукта, а требования, архитектурные решения и проверка результата оставались за мной.

  • разобрал регламент и формализовал правила трёх типов голосования
  • спроектировал пользовательские сценарии делегата, регистратора, модератора и администратора
  • разработал структуру интерфейсов и визуальную систему продукта
  • самостоятельно реализовал frontend на React
  • самостоятельно реализовал backend на Node.js и Express
  • спроектировал модели PostgreSQL и работу с данными через Prisma
  • реализовал серверную валидацию весов и защиту от повторного голосования
  • настроил обновления в реальном времени через Socket.io
  • разработал административный интерфейс для мероприятий, делегатов, повестки и результатов
  • создал терпимый импорт XLSX с автоопределением колонок, превью и ручным сопоставлением
  • реализовал персональные ссылки, QR-коды и SMS-рассылку
  • разработал экспорт результатов в XLSX и PDF
  • настроил JWT-аутентификацию и разграничение административных ролей
  • подготовил Docker-сборку, PostgreSQL и production-деплой в Timeweb Cloud
  • настроил домен и HTTPS
  • провёл тестирование ключевых сценариев
  • продолжаю поддерживать и развивать продукт

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

От требований до production

  1. Требования

    Регламент и пользовательские роли

    Разобрал механику взвешенного голосования, правила каждого типа вопроса и сценарии администратора, регистратора, модератора и делегата.

  2. Проектирование

    Архитектура полного цикла

    Спроектировал интерфейсы, базу данных, серверную валидацию, real-time обмен и процесс от импорта делегатов до формирования протокола.

  3. 4 дня

    Самостоятельная реализация

    С помощью AI-assisted development реализовал frontend, backend, базу данных, интеграции и административную часть платформы.

  4. Июнь 2026

    Боевое использование

    Организаторы самостоятельно провели через платформу более пятидесяти вопросов для более чем трёхсот делегатов. Мероприятие прошло без технических сбоев.

Технологии и подход

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

Frontend и пользовательские роли

React и Tailwind CSS используются для интерфейсов делегата, регистратора, модератора и администратора. Сценарии адаптированы под мобильные устройства и работу во время мероприятия.

Backend и данные

Node.js, Express, PostgreSQL и Prisma управляют мероприятиями, делегатами, вопросами, голосами, административными ролями и журналом действий.

Real-time и надёжность

Socket.io синхронизирует состояние голосований, таймеры и прогресс. Серверная валидация проверяет вес голоса и исключает повторную отправку результата.

Интеграции и инфраструктура

GreenSMS используется для персональных ссылок, ExcelJS и PDFKit — для протоколов, а Timeweb Cloud — для приложения, базы данных, домена и HTTPS.

Команда и распределение ролей

Российская Гильдия Риэлторов
Постановка задачи, требования к регламенту и протоколам, подготовка списка делегатов и повестки, самостоятельное управление платформой во время мероприятий.
Даниил Бердинских
Продуктовое проектирование, UX/UI, frontend, backend, база данных, интеграции, тестирование, production-деплой и дальнейшая поддержка.

Результат

Платформа была выведена в production и использована РГР для реальных регламентированных голосований.

  • более 300 делегатов использовали платформу
  • проведено более 50 вопросов голосования
  • мероприятие прошло без технических сбоев
  • все SMS с персональными ссылками были доставлены
  • во время мероприятия использовались основные функции платформы
  • организаторы самостоятельно управляли системой без присутствия разработчика
  • результаты и протоколы формировались средствами платформы
  • единый интерфейс сократил время на организацию и проведение голосований
  • после первого использования клиент продолжил применять продукт для следующих голосований
  • платформа остаётся в эксплуатации и поддерживается

Галерея

Админ-панель, раздел «Делегаты»: таблица участников с весом голоса и статусом персональной ссылки, поиск и фильтр по статусу, кнопки массовой выдачи ссылок и импорта списка; персональные данные на кадре скрыты
Админ-панель, раздел «Голосование»: список вопросов повестки с типом голосования, отметками о завершении и переходом к результатам, кнопка запуска голосования по таймеру; формулировки вопросов на кадре скрыты

Текущий статус

Платформа работает в production и повторно используется Российской Гильдией Риэлторов для следующих голосований.

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

Открыт к профессиональным коллаборациям

Можно обсудить выступление, публикацию, исследование, менторство или совместный цифровой проект.