WoW Toolbox

Game Dev
2026-01-24
TypeScriptRustTauriReactThree.js

WoW Toolbox is a commercial desktop application for World of Warcraft 3.3.5 private-server developers, designed, built and operated solo since June 2025. It replaces scattered command-line tools and hand-written SQL with 30 visual editors for DBC data, spells, talents, items, quests, NPCs, factions, achievements and more, plus 3D map and M2 model viewers, working against TrinityCore or AzerothCore with automatic schema detection.

As of August 2026 it has 466 registered accounts, paying subscribers across three Stripe tiers, and 52 signed releases (v1.0.62) shipped with in-app auto-updates over roughly 2,800 commits.

The renderer is ~71k lines of TypeScript: React 19, Redux Toolkit for 50k+ record datasets, three.js with React Three Fiber for map and model viewports, Pixi for 2D editors, and Tailwind. The shell is Tauri 2 (~30k lines of Rust) that links a ~77k-line Rust core directly, so DBC parsing, MPQ access, M2/WMO/ADT decoding, MySQL and SQL generation run as plain function calls with no FFI or serialisation boundary. Terrain and model geometry stream to the renderer over a Rust-hosted WebSocket because IPC serialisation was the bottleneck.

The app shipped on Electron until August 2026. All 541 IPC channels were ported to Rust behind a hand-owned, test-guarded ABI (window.toolboxAPI), so the renderer shipped unchanged, and the encrypted settings stores are read and written in place in their original format so existing installs carry over without a migration.

Integrated LLM helpers draft spell names, item descriptions, NPC dialogue and lore inside the relevant editors, with suggestions reviewed before they are written back. Supabase auth with role-based entitlements drives the Stripe subscriptions, Hocuspocus/Yjs powers real-time collaborative editing, and releases are signed and published through GitHub with an in-app updater.

  • 466 registered accounts and paying subscribers across three Stripe tiers (as of August 2026)
  • 52 signed releases with in-app auto-updates, ~2,800 commits, v1.0.62 current
  • 30 visual editors: spells, items, talents, quests, NPCs, factions, achievements, custom classes, and more
  • React 19 + Tauri 2 shell over a Rust core: ~71k lines TypeScript renderer, ~77k Rust core, ~30k Rust shell
  • Migrated from Electron to Tauri 2: all 541 IPC channels ported to Rust behind a test-guarded ABI, renderer shipped unchanged
  • Rust core linked directly into the shell, no FFI or napi boundary: DBC parsing, MPQ access, M2/WMO/ADT decoding, SQL generation
  • Interactive 3D map editor with three.js and React Three Fiber; terrain and model geometry stream over a Rust-hosted WebSocket
  • M2 model viewer and editor for WoW character/creature models
  • DBC manager with import/export, batch operations, diff tool, ~50 Rust parsers and 150+ schema definitions
  • LLM-assisted content generation: names custom spells, items, and NPCs, and drafts descriptions and lore inside the editors
  • Supabase authentication with role-based entitlements tied to Stripe subscriptions; real-time collaborative editing via Hocuspocus/Yjs
  • Encrypted settings stores read and written in place by Rust, so Electron-era installs carry over without a migration
  • Direct MySQL integration for TrinityCore and AzerothCore with automatic schema detection
§ System Architecture

Three views of the same system

Solo-built desktop platform: React 19 renderer, Tauri 2 shell, Rust core linked straight in. Same architecture at three depths. Start glanceable, drill in as far as you want.

Switch views 1 2 3

Overview: at-a-glance summary of the WoW Toolbox stack and feature coverage
FIG 01 Overview
§ Engineering Notes

What's actually inside

Shipped · in production
Registered accounts
466
Signed releases
52
Current version
v1.0.62
Commits
~2,800

Paying subscribers across three Stripe tiers, in-app auto-updates, changelog, community content and issue reporting. Built and operated solo since June 2025; numbers as of August 2026.

Renderer · shell · core

Renderer (Vite + React 19) never touches the OS or native code directly. Every call goes through window.toolboxAPI, a hand-owned, test-guarded ABI of 33 namespaces and 541 channels, dispatched into a Tauri 2 shell written in Rust. The shell links the Rust core as a plain crate, so DBC parsing, MPQ access and M2/WMO/ADT decoding are function calls: no napi, no serialisation boundary.

The app shipped on Electron until August 2026. All 541 IPC channels were ported to Rust behind that same ABI, so the renderer shipped unchanged. Installer went from ~130 MB to ~50 MB and the Node main process with its four worker isolates collapsed into Rust threads.

Hot paths · measured

DBC parse + cache: ~50 ms in Rust vs ~2.5 s in JS, across ~50 DBC parsers running off the UI thread.

Delta auto-save with WAL: ~5–15 ms vs ~700–800 ms for the whole-file roundtrip. The Rust core writes a write-ahead log, replays on crash and flushes batched diffs.

Map geometry bypasses IPC entirely. Terrain and model data stream to the renderer over a WebSocket hosted in Rust, because IPC serialisation was the bottleneck.

Profiled before optimizing. The JS DBC reader was what blocked 50k-record table loads, not the renderer.

Multi-tenant data

Per-user Supabase auth + role-based entitlements drive the Stripe subscription tiers, and Hocuspocus/Yjs powers real-time collaborative editing. Direct MySQL profiles connect to game-server schemas with TrinityCore / AzerothCore auto-detected from characters + world table fingerprints. Credentials and profiles live in OS-keychain-encrypted stores that Rust reads and writes in place, byte-compatible with the Electron-era files, so existing installs carried over without a migration.

Shape of the codebase
Editors
30
Feature folders
41
TS renderer
~71k LOC
Rust core
~77k LOC
Rust shell
~30k LOC
IPC channels
541

State split across Redux Toolkit (cached records), React Context (auth / admin / notifications), and React Query (server cache, 5 min stale / 30 min cache).