AutoSteamGifts — self-hosted платформа, которая автоматизирует весь путь продажи Steam Gift: от webhook об оплате на Digiseller/Plati до выбора аккаунта нужного региона, отправки заявки в друзья, покупки игры и доставки подарка покупателю.
📌 О проекте
Задача проекта — превратить ручную выдачу Steam-подарков в управляемый и наблюдаемый процесс. Продавец подключает пул аккаунтов, создаёт товары и настраивает магазин, а система самостоятельно обрабатывает новые оплаты, ведёт заказ по конечному автомату статусов и показывает покупателю актуальный прогресс доставки.
Проект изначально создавался на продажу — как готовое self-hosted решение «под ключ» для запуска собственного магазина Steam-подарков. Скоро он появится в продаже.
Продукт включает три связанные части:
- публичную витрину с каталогом игр и страницами товаров;
- защищённую админ-панель для управления магазином и операциями;
- backend доставки с очередями, интеграциями Steam и Digiseller, журналированием и уведомлениями.
✨ Что было реализовано
Автоматическая доставка
- Приём и дедупликация webhook от Digiseller/Plati.
- Определение Steam-профиля покупателя по ссылке, vanity URL или SteamID.
- Подбор свободного аккаунта-отправителя по региону, статусу, балансу и cooldown.
- Сценарий «заявка в друзья → ожидание принятия → покупка → отправка подарка».
- Ретраи с экспоненциальной задержкой и отдельный сценарий ручной сверки неоднозначной оплаты.
- Публичная страница заказа с подтверждением профиля и живым прогрессом доставки.
Публичная витрина
- Главная с hero-блоком, скидками, лидерами продаж, новинками и тематическими подборками.
- Каталог с поиском, сортировками и фильтрами по цене, региону, жанрам, особенностям, издателям и разработчикам.
- Полноценная страница игры: арт, галерея, трейлеры, описание, локализация, системные требования, отзывы и похожие товары.
- Автоматическое получение цен, скидок, обложек и метаданных из Steam Store.
- Коллекции, избранное без регистрации, редактируемые юридические страницы и поддержка русского/английского контента.
Админ-панель
- JWT-авторизация и отдельный секретный путь вместо предсказуемого
/admin. - Дашборд со статистикой заказов, конверсией, состоянием аккаунтов, каталогом и продажами Digiseller.
- Управление Steam-аккаунтами, товарами, коллекциями, страницами, заказами, логами и настройками.
- Детальная история заказа, пошаговые логи и безопасные ручные действия оператора.
- Единая дизайн-система на Chakra UI, адаптивная навигация, светлая и тёмная темы.
Надёжность и эксплуатация
- Независимые
mock/real-провайдеры Steam и Digiseller для безопасного тестирования. - BullMQ + Redis для фоновой доставки или inline-режим без Redis.
- Шифрование секретов аккаунтов через AES-256-GCM.
- Transactional outbox для Telegram-уведомлений, повторные попытки и защита от дублей.
- Rate limiting, CORS, Helmet, структурированные логи, graceful shutdown и Docker Compose.
- Веб-установщик, который проверяет окружение, создаёт конфигурацию, применяет миграции и заводит администратора.
⚙️ Архитектура
Платёжный webhook создаёт заказ и ставит задачу доставки в очередь. Worker подбирает аккаунт нужного региона и выполняет шаги Steam через абстракцию провайдера. Все переходы статуса сохраняются в БД, отображаются в админке и при необходимости порождают надёжно доставляемое уведомление.
Такое разделение позволило изолировать внешние сервисы, безопасно воспроизводить сценарии в mock-режиме и переключать SQLite/PostgreSQL или BullMQ/inline без изменения бизнес-логики.
🖼️ Интерфейс проекта
Скриншоты сделаны на изолированном демонстрационном стенде: 38 игр, 5 подборок, 17 тестовых заказов и 3 mock-аккаунта отправителей. Реальные операции Steam и Digiseller при подготовке материалов были отключены.
Каждая демонстрация синхронизирована по состоянию и размеру. Светлую и тёмную версии можно переключать прямо внутри блока, а на ключевых экранах — сравнивать ползунком.
Публичная витрина
Главная страница магазина целиком
Hero-блок, быстрый поиск, скидки, лидеры продаж, жанры, новинки, подборки, русская локализация и футер.
Полный каталог из 38 игр
Поиск, сортировка и фильтры по цене, подборкам, жанрам, особенностям, региону, издателю и разработчику.
Карточка игры
Галерея, Steam-метаданные, жанры, избранное и блок покупки на примере ELDEN RING.
Отзывы о товаре
Отдельное состояние карточки с рейтингом и отзывами покупателей.
Каталог подборок
Промо-подборки и тематические витринные полки, сформированные из тестового каталога.
Страница подборки
Обложка-коллаж, описание и полный состав редакционной подборки.
Избранное без регистрации
Сохранённые товары и подборки остаются доступны покупателю локально.
Статус покупки
Публичный экран доставленного подарка с понятным следующим действием для покупателя.
Контент и служебные состояния витрины
Пользовательское соглашение
Редактируемая из админ-панели юридическая страница с навигацией по разделам.
Политика конфиденциальности
Вторая управляемая контентная страница витрины.
Страница 404
Аккуратное состояние для неизвестного адреса с возвратом в магазин.
Админ-панель
Вход администратора
Изолированный экран авторизации на настраиваемом секретном пути.
Операционный дашборд
Заказы, конверсия, продажи, требующие внимания статусы, пул аккаунтов и состояние каталога.
Список заказов
Поиск, фильтры по всем статусам и 17 заказов с разнообразными тестовыми сценариями.
Детальная карточка заказа
Оплата, покупатель, назначенный отправитель, хронология доставки, пошаговый лог и безопасные действия оператора.
Пул Steam-аккаунтов
Регионы, балансы, лимиты, cooldown, статистика отправок и диагностика mock-аккаунтов.
Добавление аккаунта
Учётные данные, Steam Guard, прокси и отдельное подтверждение реальных покупок.
Управление каталогом
Товары, регионы, цены, синхронизация со Steam и статус размещения в Digiseller.
Полный редактор товара
Steam-ссылка, регионы, размещение, галерея, описания на двух языках и автоматически загруженные метаданные.
Массовое создание товаров
Импорт списка игр по ссылке или AppID с ценой и последующей синхронизацией.
Управление подборками
Порядок, видимость и промо-статус витринных коллекций.
Редактор подборки
Название, описание, промо-настройки и ручная сортировка игр внутри коллекции.
Редактор страниц
Управление юридическими текстами и служебным контентом без изменения кода.
Настройки платформы
Брендинг, доставка, интеграции, уведомления, безопасность и режимы внешних провайдеров.
Защищённое состояние инсталлятора
После завершения установки повторный запуск блокируется из соображений безопасности.
🔧 Технологии
- Frontend: React 18, TypeScript, Vite, Chakra UI v3, React Markdown, HLS.js.
- Backend: Node.js, TypeScript, Express, Prisma.
- Данные и очереди: SQLite/PostgreSQL, Redis, BullMQ.
- Интеграции: Steam, Digiseller/Plati, Telegram.
- Инфраструктура: Docker, Docker Compose, Nginx.
🌐 Результат
Получилась единая система для запуска собственного магазина Steam Gift: покупатель получает удобную витрину и прозрачный статус заказа, а продавец — автоматизированную доставку, контроль пула аккаунтов, операционные инструменты и полную наблюдаемость каждого заказа. Проект готовится к продаже и скоро будет доступен для приобретения.
