Okiyumi Rent
Multi-tenant platform for automated Steam account rentals
Product engineering · automation
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 · TSAPI
Fastify 5PostgreSQL 16
Prisma · outboxWorker
5-second tick · state machineFunPay adapter · Telegram bot
orders · operationsSteam automation
Guard · sessions · passwordsFLOW
- 01FunPay orderworker tick→ Account issued
- 02Active rental→ Expiry / extension
- 03Completion→ Session revoke · new password
Numbers
FunPay orders per 30 days
worker tick
Steam accounts
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.