0%

AutoSteamGifts — Automated Steam Gift Delivery

Rianvy
This post is also available in 🇷🇺 Русский
AutoSteamGifts — Automated Steam Gift Delivery
Completed

Project successfully completed and running

Tools Used

TypeScript
React
Vite
Chakra UI
Node.js
Express
Prisma
SQLite
PostgreSQL
Redis
BullMQ
Docker

AutoSteamGifts is a self-hosted platform that automates the entire Steam Gift sales flow: from a Digiseller/Plati payment webhook to selecting a sender account in the correct region, adding the buyer as a friend, purchasing the game, and delivering the gift.

📌 About the project

The goal was to turn a manual Steam Gift fulfillment routine into a controlled and observable workflow. A seller connects a pool of sender accounts, creates products, and configures the shop. The system then processes new payments, moves every order through an explicit state machine, and shows the buyer live delivery progress.

The project was originally built for sale — a turnkey self-hosted solution for launching your own Steam Gift shop. It will be available for purchase soon.

The product combines three connected parts:

  • a public storefront with a game catalog and product pages;
  • a protected administration panel for shop and operations management;
  • a delivery backend with queues, Steam and Digiseller integrations, logs, and notifications.

✨ What was implemented

Automated delivery

  • Digiseller/Plati webhook handling with invoice deduplication.
  • Buyer profile resolution from a profile link, vanity URL, or SteamID.
  • Sender selection by region, status, balance, cooldown, and availability.
  • A complete “friend request → acceptance wait → purchase → gift delivery” workflow.
  • Exponential-backoff retries and a dedicated manual reconciliation flow for ambiguous payments.
  • A public order page with profile confirmation and live delivery progress.

Public storefront

  • A home page with a hero section, discounts, best sellers, new arrivals, and curated collections.
  • Search, sorting, and filters for price, region, genres, features, publishers, and developers.
  • Rich game pages with artwork, galleries, trailers, descriptions, localization, system requirements, reviews, and related products.
  • Automatic Steam Store prices, discounts, artwork, and metadata.
  • Curated collections, registration-free favorites, editable legal pages, and Russian/English content support.

Administration panel

  • JWT authentication and a configurable secret path instead of a predictable /admin URL.
  • A dashboard for orders, conversion, sender health, catalog status, and Digiseller sales.
  • Management screens for Steam accounts, products, collections, pages, orders, logs, and settings.
  • Detailed order history, step-by-step logs, and guarded manual operator actions.
  • A unified Chakra UI design system, responsive navigation, and light/dark themes.

Reliability and operations

  • Independent Steam and Digiseller mock/real providers for safe testing.
  • BullMQ + Redis delivery workers, with an inline mode that runs without Redis.
  • AES-256-GCM encryption for sender-account secrets.
  • A transactional outbox for Telegram notifications, retries, and duplicate suppression.
  • Rate limiting, CORS, Helmet, structured logging, graceful shutdown, and Docker Compose.
  • A browser-based installer that validates the environment, writes configuration, runs migrations, and creates the first administrator.

⚙️ Architecture

A payment webhook creates an order and schedules a delivery job. The worker selects an eligible sender for the buyer’s region and performs the Steam steps through a provider abstraction. Every state transition is persisted, exposed in the admin panel, and can generate a reliably delivered notification.

This separation keeps external services isolated, makes every scenario reproducible in mock mode, and allows SQLite/PostgreSQL or BullMQ/inline to be swapped without changing the core business workflow.

🖼️ Project interface

The screenshots were captured on an isolated demo environment containing 38 games, 5 collections, 17 test orders, and 3 mock sender accounts. All real Steam and Digiseller operations were disabled while the assets were prepared.

Every comparison uses the same application state and viewport. Light and dark variants can be switched directly inside each block, while the key screens also support a draggable comparison slider.

Public storefront

Complete storefront home page

Complete storefront home page - Dark
Complete storefront home page - Light
☀️ Light
🌙 Dark

Hero, quick search, discounts, best sellers, genres, new arrivals, curated collections, localization, and footer.

Complete 38-game catalog

Complete 38-game catalog - Light
Complete 38-game catalog - Dark

Search, sorting, and filters for price, collections, genres, features, region, publisher, and developer.

Game product page

Game product page - Light
Game product page - Dark

Gallery, Steam metadata, genres, favorites, and checkout using ELDEN RING.

Product reviews

Product reviews - Light
Product reviews - Dark

A dedicated product-page state with rating and customer feedback.

Collections catalog

Collections catalog - Light
Collections catalog - Dark

Promoted collections and themed storefront shelves built from the demo catalog.

Collection page

Collection page - Light
Collection page - Dark

Generated cover collage, description, and the complete editor-curated selection.

Registration-free favorites

Registration-free favorites - Light
Registration-free favorites - Dark

Saved products and collections remain locally available to the buyer.

Purchase status

Purchase status - Light
Purchase status - Dark

Public delivered-gift screen with a clear next action for the buyer.

Storefront content and system states

Terms of service

Terms of service - Light
Terms of service - Dark

An admin-managed legal page with section navigation.

Privacy policy

Privacy policy - Light
Privacy policy - Dark

A second managed content page shown directly in the storefront.

404 page

404 page - Light
404 page - Dark

A clean unknown-route state with a clear path back to the store.

Administration panel

Administrator sign-in

Administrator sign-in - Light
Administrator sign-in - Dark

An isolated authentication screen served from a configurable secret path.

Operations dashboard

Operations dashboard - Dark
Operations dashboard - Light
☀️ Light
🌙 Dark

Orders, conversion, sales, attention states, sender pool, and catalog health in one view.

Order list

Order list - Light
Order list - Dark

Search, every delivery status, and 17 orders covering a wide range of demo scenarios.

Detailed order view

Detailed order view - Light
Detailed order view - Dark

Payment, buyer, assigned sender, delivery timeline, step-by-step log, and guarded operator actions.

Steam sender pool

Steam sender pool - Light
Steam sender pool - Dark

Regions, balances, limits, cooldowns, delivery counts, and mock-account diagnostics.

Add sender account

Add sender account - Light
Add sender account - Dark

Credentials, Steam Guard, proxy, and explicit real-purchase permission.

Catalog management

Catalog management - Light
Catalog management - Dark

Products, regions, prices, Steam synchronization, and Digiseller placement status.

Complete product editor

Complete product editor - Light
Complete product editor - Dark

Steam link, regions, placement, gallery, bilingual descriptions, and automatically fetched metadata.

Bulk product creation

Bulk product creation - Light
Bulk product creation - Dark

Import a game list by URL or AppID, optionally with price and follow-up synchronization.

Collection management

Collection management - Light
Collection management - Dark

Ordering, visibility, and promotional state for curated storefront collections.

Collection editor

Collection editor - Light
Collection editor - Dark

Title, description, promotion controls, and manual game ordering.

Page editor

Page editor - Light
Page editor - Dark

Manage legal copy and supporting content without touching application code.

Platform settings

Platform settings - Light
Platform settings - Dark

Branding, delivery, integrations, notifications, security, and external-provider modes.

Protected installer state

Protected installer state - Light
Protected installer state - Dark

Once setup is complete, the installer blocks repeat execution for safety.

🔧 Technology stack

  • Frontend: React 18, TypeScript, Vite, Chakra UI v3, React Markdown, HLS.js.
  • Backend: Node.js, TypeScript, Express, Prisma.
  • Data and queues: SQLite/PostgreSQL, Redis, BullMQ.
  • Integrations: Steam, Digiseller/Plati, Telegram.
  • Infrastructure: Docker, Docker Compose, Nginx.

🌐 Outcome

The result is a single system for running a Steam Gift shop: buyers get a polished storefront and a transparent order status, while sellers get automated delivery, sender-pool control, operational tools, and complete visibility into every order. The project is being prepared for sale and will be available for purchase soon.

© 2025 - 2026 0x69.ru

Powered by ❤️

Readme.md

whoami 👨‍💻

$ cat /etc/profile

Username: Rianvy
Real name: Maksim Alexandrov
Age: 28
Location: Tula, RU
Role: Senior Developer & UI/UX Designer 😎

About

This blog is my personal knowledge base, where I push notes about my tech stack, life experience, and everything that triggers my interest => 🚀

Contact

Open for collaboration 🤝 — ready to merge ideas and work on joint projects.

Stack

💻 Programming Languages

  • C#, PHP, JavaScript/TypeScript, Python

⚛️ Frontend

  • React / Next.js, Vue.js / Nuxt.js
  • Tailwind CSS / SCSS
  • Responsive layout (HTML, CSS, JS) 📱

🔧 Backend

  • Laravel, Node.js / Express / NestJS
  • REST APIs

🗄️ Databases

  • MySQL, PostgreSQL, MongoDB, Redis

🛠️ DevOps

  • Docker, Git, CI/CD, Linux 🐧

🎨 Design & Graphics

  • Figma — UI/UX design and prototyping
  • Photoshop — graphics and image editing
  • After Effects — motion design and animation 🎬
My Open Source Projects 🌟
Name VKify
Description A powerful browser extension for customizing VKontakte with ad blocking, themes, privacy mode, and custom CSS
Description A private local-first extension for cleaning Reddit posts, comments, saved items, and votes directly in the browser