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.

  • Next.js 16
  • React Three Fiber
  • Electron 43
  • Stripe

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

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 need different things, so we gave each job 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 bails out here by design

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. You can download the installer only after the server has verified the 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

Everything that used to sit on a phone, a spreadsheet, a wiki tab and three Discord bots now fits 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, so the app can call you before it is too late.

  • Team bot + Discord

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

Tech stack

in detail

  • Next.js 16

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

    Framework
  • React Three Fiber 9

    Six procedural instruments built from primitive geometry, with no imported 3D models

    3D
  • Scrub engine (vanilla JS)

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

    Scroll cinema
  • Tailwind CSS v4

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

    Styling
  • Geist Mono

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

    Typography
  • Electron 43

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

    Desktop app
  • Stripe

    Checkout, customer portal and webhooks. The server checks every download against the Stripe session

    Payments
  • Ed25519 license system

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

    Security

License security in detail

Ed25519 signatures

The server signs every license response, so a local proxy that answers ok gets nowhere.

Nonce per request

No response works twice, so replay attacks fail.

Idempotent keys

The server mints license keys 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.