Skip to content
P.
03in production2025 — now

Okiyumi Rent

Multi-tenant platform for automated Steam account rentals

Product engineering · automation

ORDERISSUEDACTIVEEXPIREDROTATEDREVOKETICK 5S · STATE MACHINE

The full rental lifecycle — from a FunPay order to password rotation — without a single manual step.

Context

A production platform that automates Steam account rentals through FunPay. Every order is a chain of operations that used to be done by a person.

Problem

Manual order handling: spot the order, pick a free account, issue credentials, track time, deal with Steam Guard, end the rental, revoke sessions, rotate the password, refund on cancel.

Solution

  • 01

    A rental state machine: a worker ticking every 5 seconds walks every rental and performs issuance, warnings, expiration, extensions and refunds.

  • 02

    Reliability in the details: transactional outbox, idempotency, account allocation via SELECT … SKIP LOCKED, encrypted secrets.

  • 03

    Custom Steam automation: fresh-login verification, session revocation, password rotation and Steam Guard handling.

Architecture

Web SPA

React 19 · Vite · TS

API

Fastify 5

PostgreSQL 16

Prisma · outbox

Worker

5-second tick · state machine

FunPay adapter · Telegram bot

orders · operations

Steam automation

Guard · sessions · passwords

FLOW

  1. 01FunPay order
    worker tick
    → Account issued
  2. 02Active rental
    → Expiry / extension
  3. 03Completion
    → Session revoke · new password

Numbers

449

FunPay orders per 30 days

5 c

worker tick

11

Steam accounts

≈123k ₽

gross in audited snapshot

audit snapshot, not lifetime

Stack

  • React 19
  • Vite
  • TypeScript
  • Fastify 5
  • Prisma
  • PostgreSQL 16
  • Python 3.12
  • FastAPI
  • FunPayAPI
  • grammY
  • Docker
  • nginx

Outcome

  • The full cycle runs without an operator: order, issuance, time control, completion, account security — the platform lives in production.
  • Multi-tenancy with data isolation and IDOR tests: the platform is built for more than one shop.