Техническое задание: Система онлайн-аукциона на Go

Основной функционал

Управление лотами

  • Создание лота с указанием названия, описания, стартовой цены и минимального шага ставки
  • Автоматическое завершение аукциона по истечении установленного времени
  • Автоматическое определение победителя по максимальной ставке

Работа со ставками

  • Возможность делать ставки только для зарегистрированных пользователей
  • Автоматическая валидация: новая ставка должна быть ≥ (текущая цена + минимальный шаг)
  • Полное логирование всех ставок с временными метками
  • Конкурентная безопасность при одновременных ставках

Технические требования

Стек технологий

  • Язык программирования: Go версии 1.20 или выше
  • Архитектура: чистая архитектура (handlers → service → repository) без излишней сложности
  • База данных: на выбор исполнителя (PostgreSQL, MySQL или SQLite) с обоснованием выбора
  • Миграции: использование удобной утилиты (goose, migrate или аналоги)

Интерфейс

  • REST API с форматом данных JSON
  • Фронтенд не требуется, только backend-часть
  • Документация API в формате OpenAPI/Swagger (будет преимуществом)

Дополнительные возможности (опционально)

  • Реализация WebSocket для обновлений в реальном времени
  • Административная панель для управления лотами
  • Написание unit-тестов для ключевых модулей

Требования к результату

  • Исходный код на GitHub или в архиве
  • Подробная инструкция по запуску (go run и/или Docker)
  • SQL-миграции для инициализации базы данных