January 7

Backend Auction Challenge

О конкурсе

Мы запускаем конкурс для backend-разработчиков с призовым фондом $30,000.

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


Почему такой формат

В реальной работе редко бывает идеальное ТЗ. Чаще приходится:

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

Именно это мы и хотим проверить.


Задача

Вам нужно изучить, как работают Telegram Gift Auctions, и реализовать аналогичную механику аукциона цифровых товаров.

Мы намеренно не даём подробного технического задания. Часть конкурса — самостоятельно понять, как устроен продукт.


Что такое Telegram Gift Auctions

Telegram проводит аукционы на лимитированные цифровые подарки. Это не классический аукцион с одним дедлайном, а многораундовая система, где:

  • аукцион состоит из нескольких раундов,
  • в каждом раунде часть участников получает товар,
  • остальные продолжают участие в следующих раундах,
  • есть механизмы против «снайперских» ставок в последнюю секунду.

Ваша задача — разобраться в деталях этой механики и воспроизвести её.


Что нужно сделать

1. Анализ продукта

Изучите, как работают Telegram-аукционы. Вам нужно понять:

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

Зафиксируйте своё понимание в README или отдельном spec-документе. Там, где поведение не очевидно, явно укажите свои допущения.

2. Реализация backend

Реализуйте серверную логику аукциона:

  • создание аукциона с параметрами,
  • управление раундами (старт, завершение, переход),
  • размещение и повышение ставок,
  • ранжирование участников,
  • определение победителей,
  • корректная работа с балансами и возвратами.

Особое внимание:

  • конкурентность (одновременные запросы),
  • финансовая корректность (деньги не теряются и не дублируются),
  • устойчивость к edge-cases.

3. Минимальный UI

Сделайте простой интерфейс-сайт, достаточный для демонстрации работы:

  • создание аукциона (без картинок),
  • участие в аукционе (ставки),
  • ставки от ботов, чтобы видеть живой аукцион,
  • просмотр состояния и результатов,
  • просмотр баланса.

Дизайн не оценивается. Нам важно увидеть, что логика работает.

4. Проверка под нагрузкой

Реализуйте способ проверить систему под конкурентной нагрузкой:

  • боты или скрипты, которые делают ставки,
  • одновременные запросы,
  • ставки в конце раунда (проверка anti-sniping).

Покажите, что система ведёт себя корректно.


Технический стек

  • Node.js
  • TypeScript
  • MongoDB

Если вы хотите использовать другие инструменты для вспомогательных задач (Redis, очереди и т.д.) — это допустимо, но основной стек должен быть таким.


Что мы оцениваем

Мы смотрим не на объём кода, а на качество мышления:

• Понимание продукта — насколько глубоко вы разобрались в механике
• Принятые решения — какие допущения сделали и почему
• Внимание к деталям — учтены ли нюансы и пограничные случаи
• Финансовая корректность — деньги не теряются, не дублируются, балансы сходятся
• Конкурентность — система работает при одновременных запросах
• Код — читаемость, структура, отсутствие явных проблем

Разрешено использовать ИИ и любые инструменты. Нам важен результат и ваш ход мыслей.


Формат сдачи

  1. GitHub-репозиторий с кодом
  2. README с описанием:
    • вашего понимания механики аукционов,
    • архитектурных решений,
    • инструкции по запуску.
  3. Docker-compose или другой простой способ запустить проект локально
  4. Демо — видеозапись и работающий веб-сайт

Условия

  • Призовой фонд: $30,000
  • Старт: 7 января 2026, 23:00 (Dubai, UTC+4)
  • Дедлайн: 23 января 2026, 23:00 (Dubai, UTC+4)
  • Количество призовых мест: зависит от качества решений

Как участвовать

  1. Отправьте команду /contests в @CryptoBot или перейдите по ссылке t.me/send?start=contests
  2. Изучите задание
  3. Разберитесь в механике Telegram-аукционов
  4. Реализуйте решение
  5. Отправьте работу до дедлайна через бота

Главное

Мы ищем не «правильную реализацию по ТЗ», а backend-разработчиков, которые умеют думать как продуктовые инженеры.

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

Удачи! 🚀