web·area
All work
Case studyNext.js 16Fastify 5MariaDBRU / EN

ModoCheats

A private game software store built from scratch: storefront, API and admin panel — three separate apps, each deployed on its own.

Client
ModoCheats
Type
Digital goods store
What we did
Design, storefront, API, admin panel, deployment
Year
2026
modocheats.com
ModoCheats — home page, first screen
0
separate apps
storefront · API · admin
0K+
lines of TypeScript
frontend, backend and admin
0+
API endpoints
public and admin
0
admin sections
plus a revenue dashboard
01The brief

A large store, built from scratch. A catalog covering several games, plans for different terms, keys delivered right after payment, reviews, product statuses and support — in Russian and English.

Plus a full admin panel, so the owner can manage the catalog, upload keys, run promo codes and track revenue without touching code.

02The solution

We split the system into three apps with clear boundaries. The storefront serves static pages and updates right after edits, the API owns the data and business rules, and the admin panel talks only to the API. Each app is built and shipped on its own.

Storefront:3000

Next.js 16, next-intl, ISR, Tailwind 4, motion

API:4000

Fastify 5, MariaDB, migrations, sessions, CSRF

Admin:3001

Next.js 16, server actions, Ctrl+K

03Architecture


The browser never touches the database. The storefront proxies /api/* to the backend, and after any admin edit the backend tells the storefront which pages to revalidate.

Browser
customer / admin
↓ opens
Storefront:3000
Next.js 16 · ISR · ru/en
Admin:3001
Next.js 16 · server actions
↓ /api/* and admin API
API:4000
Fastify 5 · TypeScript
↓ SQL
MariaDB
migrations · GET_LOCK
API → storefront: revalidate right after edits
04Screen


The first screen says what the store is and shows the product at work: a HUD with ESP boxes, a radar and settings. Below are popular products, games, reviews, how buying works and an FAQ.

  • A live "all products working" status
  • Counters for customers, rating and uptime
  • A games dropdown with cover art
modocheats.com
ModoCheats — full home page
Hover to scroll ↓Tap to scroll ↓
05Screen


Filter by game, search by feature, an "Undetected only" toggle and sorting, all in one bar. Each card shows status, features, starting price, rating and sales count.

modocheats.com/catalog
ModoCheats — Filter: Rust
06Screen


A command palette like in an IDE: games, products and features in one window, keyboard navigation, and popular picks before you type.

  • Search by name, game and feature
  • Status and price right in the results
  • Works on phones too
modocheats.com
ModoCheats — Palette
07Screen


Pick a term with the savings in percent and the price per day, guarantees next to the buy button, and tabs for features, requirements and setup.

modocheats.com/games/cs2/modo-prime
ModoCheats — First screen
08Screen


Checkout happens in a modal with no page reloads: form, promo code, payment and key. The server always calculates the final price, and the key shows up instantly and is emailed too.

  • Promo codes recalculate the price on the spot
  • Copy the key in one click
  • Setup guide right after payment
modocheats.com/games/cs2/modo-prime
Checkout — Form
10Mobile


We designed the mobile version on its own instead of shrinking the desktop one: its own menu, search and thumb-sized cards. Hover or tap a screen to scroll it.

ModoCheats — mobile, home
Home
ModoCheats — mobile, menu
Menu
ModoCheats — mobile, product
Product

Swipe sideways · tap a screen to scroll it

09Screen


Russian lives at the root and English under /en, each with its own canonical and hreflang. The header switches the currency between ₽ and $.

modocheats.com · /en
ModoCheats — English version
ModoCheats — Russian version
⇆
RUEN

Drag the divider — RU on the left, EN on the right

11Admin panel


A separate app on its own subdomain. Products are put together in a builder with a live card preview, and changes show up on the storefront right away. Hotkeys cover the everyday work.

Ctrl Kquick jumpCtrl Ssave/search the listEscclose the panel
01
Dashboard
Orders and revenue at a glance
02
Finance
Any period, charts, breakdowns, CSV
03
Orders
Payment, key delivery, cancellation
04
Products
Plan and feature builder
05
Games
Covers, order, statuses
06
Keys
Import as a list or .txt, duplicate check
07
Promo codes
Discounts, limits, on/off
08
Reviews
Moderation and manual entries
09
Accounts
A separate account storefront
10
Drivers
Downloadable files and versions
11
Guides
RU/EN, public and private
12
Users
Roles, bans
13
Settings
Contacts, currencies, copy
12Under the hood


ISR plus a revalidation webhook

Pages are static and fast, and the cache is cleared right after an admin edit or a new sale.

Zero-downtime migrations

The schema updates on startup under GET_LOCK, so several instances can boot at the same time.

Secure by default

httpOnly sessions, Secure cookies, Origin checks against CSRF, roles and a separate key for the admin API.

Catalog snapshots

All admin content exports to JSON and moves to a server with one command, with no personal data.

Updates that don’t break open tabs

The deploymentId comes from the commit hash, so open tabs switch to the new version on their own and old and new code never mix.

Typed translations

next-intl: Russian with no prefix, English under /en, and TypeScript checks the translation keys.

13All pages


Click a page to open it in full. Use ← → to flip through.

* Screenshots from a demo environment: prices, reviews and keys shown are sample data.

Stack
Next.js 16React 19TypeScriptTailwind CSS 4motionnext-intlFastify 5Node.js 22MariaDBmysql2Server ActionsISR
Visit site
Next project
WizeCheats
A 79-game store with an admin panel and loyalty discounts
New project


A store, a SaaS or a landing page — we'll design, build and launch it, with an admin panel that's easy to work in.