R_ShipDays

car.shipdays.ru

Краудфандинг с игровыми механиками и обновлением в реальном времени

Сбор на Mini JCW в формате игры: машина на фото серая, и каждая деталь проявляется в цвете у всех, кто сейчас на странице, как только на неё скинулись. Оплата через Т-Кассу, обновления в реальном времени по SSE, ранги донатеров и гонка с дедлайном 31 декабря.

Статус
В продакшене, сбор идёт
Период
Июль — октябрь 2026
Формат
Собственный проект
Роль
Идея, разработка, деплой
car.shipdays.ru: Mini JCW, детали которого проявляются в цвете по мере сбора
деталей с отдельным прогрессом
12деталей с отдельным прогрессом
эндпоинтов API
5эндпоинтов API
строк Go
≈1 000строк Go
бинарь вместе с фронтендом
1бинарь вместе с фронтендом

Задача

Сделать сбор денег, за которым интересно следить и куда хочется вернуться: с видимым прогрессом, соревнованием и моментом «это я закрыл деталь».

Что сделано

  • 12 деталей автомобиля, у каждой свой прогресс и своя зона на фото
  • Оплата через Т-Кассу, статус меняет только подтверждённый вебхук
  • Обновление у всех открытых вкладок сразу после оплаты (Server-Sent Events)
  • Игровой слой: передачи по мере сбора, «призрак графика» до дедлайна, «добей деталь», «последний болт»
  • Ранги экипажа по сумме вложений и имена донатеров наклейками на кузове
  • Живая лента последних оплат с празднованием установки детали

Инженерные решения

  • Подпись вебхука Т-Кассы проверяется по SHA-256-токену
  • Идемпотентное подтверждение оплаты: строка блокируется FOR UPDATE, повтор игнорируется
  • «Последний болт» без гонок: условие completed_at IS NULL в той же транзакции
  • Игровые правила считаются на фронтенде из одного эндпоинта, поэтому меняются без миграций
  • Миграции и фронтенд вшиты в Go-бинарь: один образ, один origin
  • SSE-хаб с неблокирующей рассылкой и пингом каждые 25 секунд против обрыва прокси

Инфраструктура и DevOps

  • Пайплайн: go vet и тесты, образ в GHCR, деплой по SSH с защитой от параллельных запусков
  • Контейнер без root, healthcheck

Стек

  • Go
  • PostgreSQL
  • React
  • Vite
  • SSE
  • Т-Касса
  • Docker
  • GitHub Actions

Нужен похожий проект?

Короткий бриф в Telegram, ответ лично от меня в течение дня.