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 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.

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, not a single imported 3D model

    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 directly from the real 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. Downloads are verified server-side against the Stripe session

    Payments
  • Ed25519 license system

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

    Security

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.