Client project · 3D web + Windows app

RustPocket
Rust+ on the desktop

A companion tool for the survival game Rust: live map, vending scan, raid calculator and smart base control as a Windows app. The website stages the product as an instrument panel, with a scroll camera flight and six procedural 3D instruments.

The design reference from the brief: the front panel of a Tektronix scope, not another SaaS landing page.

Next.js 16 React Three Fiber Electron 43 Stripe
Visit rust-pocket.com
6
3D instruments
built procedurally, 0 imported models
1
WebGL context
shared across all pages instead of 9
21
Modules
documented as registers R0 to R103
4
Days
from first commit to launch
RustPocket homepage: nocturnal Rust landscape with monospace terminal-style typography

Homepage: first frame of the scroll-driven camera flight through six scenes

Two 3D strategies instead of one

Cinematics and interactivity have different requirements. Each job got the technique that fits instead of one hammer for everything.

Homepage

Pre-rendered camera flight

Six video legs fly from the desk scene across map, scan, base and bot to the finale. Scroll position drives video.currentTime directly.

  • All-intra encoding: every frame is a keyframe, so the scrub reaches every frame
  • Clips load as blobs, always seekable without range requests
  • Dedicated 720p variants for mobile devices
  • No WebGL on the homepage: the canvas deliberately bails out here
Interior pages

Procedural instruments

Six instruments built entirely from primitive Three.js geometry: terrain plate, scanner drum, scope trace, relay bank, beacon rotor and waveform horn.

  • A single shared WebGL context in the root layout, every page scissor-renders into it
  • The previous canvas-per-section approach kept losing contexts until the GPU process died. The lesson lives on as a code comment
  • No post-processing: every glow is additively blended geometry
  • Render tiers high/low/off: software renderers and reduced motion get no 3D at all instead of a broken one

The desktop app

Electron 43 with auto-updates, sold via Stripe as one flat subscription without tiers. The installer only ships after a server-side verified checkout.

RustPocket desktop app: live map with 144 markers and 142 vending machines
RustPocket desktop app: register overview of all modules

Register overview: 21 modules from R0 to R103

RustPocket desktop app: team bot with voice and chat commands

Team bot: voice, text and in-game chat commands

Feature scope

What used to live on a phone, a spreadsheet, a wiki tab and three Discord bots, on one screen.

Live map

Terrain, team positions, monuments, vending machines and events on a monitor instead of a five-inch phone screen.

Vending scan

Scan every machine on a server, watch stock, set price alerts.

Raid calculator

Explosive costs per wall and door, including an offline raid warning.

Smart base control

Control switches, alarms and storage monitors, with defensive and standby modes for every device at once.

Phone alerts

Telegram for free, SMS and voice calls via Twilio. The base calls before it is too late.

Team bot + Discord

Voice, text and in-game chat bot for the team, plus a Discord integration.

<TechStack />

Tech stack in detail

Next.js 16 Framework

App Router, React 19, zod validation, deployed on Vercel with Cloudflare DNS

React Three Fiber 9 3D

Six procedural instruments built from primitive geometry, not a single imported 3D model

Scrub engine (vanilla JS) Scroll cinema

A custom 484-line engine: scroll position drives video.currentTime across six pre-rendered camera flights

Tailwind CSS v4 Styling

OKLCH color tokens sampled directly from the real desktop app UI, 2px radius ceiling

Geist Mono Typography

A single monospace face for UI and prose, matching the terminal character

Electron 43 Desktop app

Windows app with NSIS installer, auto-updates via electron-updater and a Discord bot integration

Stripe Payments

Checkout, customer portal and webhooks. Downloads are verified server-side against the Stripe session

Ed25519 license system Security

Signed license responses with a nonce per request, defeating replay attacks and hosts-file spoofing

License security in detail

Ed25519 signatures

Every license response is signed. A local proxy that simply answers ok does not help.

Nonce per request

Responses cannot be reused. Replay attacks run into a wall.

Idempotent keys

License keys are minted server-side and idempotently after the Stripe checkout.

RustPocket is an independent companion tool and is not affiliated with Facepunch Studios. Rust and Rust+ are trademarks of their respective owners.