Skip to content

Development Setup

  1. Rust (via rustup):

    Terminal window
    curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  2. Node.js 20+ — recommended via nvm or fnm

  3. pnpm — the project’s package manager:

    Terminal window
    npm i -g pnpm
  4. SimC binary for your platform — see SimC Sidecar below

Terminal window
git clone https://github.com/aine-etke/wow-topgear.git
cd wow-topgear
pnpm install
pnpm tauri dev # launches the app with hot reload

pnpm tauri dev starts both the Vite dev server (frontend hot reload) and the Tauri Rust backend. Frontend changes apply instantly; Rust changes trigger a recompile.

If you’re working on frontend code and don’t need the Tauri shell:

Terminal window
pnpm dev # Vite dev server only, no Tauri

The app bundles SimC as a Tauri sidecar. For local development, you need the SimC binary for your platform placed in src-tauri/binaries/ with the correct name:

PlatformBinary Name
macOS Apple Siliconsimc-aarch64-apple-darwin
macOS Intelsimc-x86_64-apple-darwin
Windows x64simc-x86_64-pc-windows-msvc.exe

Download the latest SimC release from SimC GitHub Releases and rename the binary accordingly.

On macOS, make it executable:

Terminal window
chmod +x src-tauri/binaries/simc-aarch64-apple-darwin
CommandDescription
pnpm installInstall dependencies
pnpm tauri devDev mode with hot reload
pnpm tauri buildProduction build (current platform)
pnpm devFrontend only (no Tauri shell)
pnpm testRun Vitest test suite
pnpm season:validateValidate season-config.ts
pnpm build:item-dbRegenerate items.db from SimC source
wow-topgear/
├── src/ ← React frontend
│ ├── components/ ← UI components
│ ├── lib/ ← Core logic modules
│ │ ├── parser.ts ← SimC string parser
│ │ ├── combinator.ts ← Combination generator
│ │ ├── profileset-builder.ts
│ │ ├── optimization-assembler.ts
│ │ ├── types.ts ← Shared TypeScript types
│ │ └── presets/
│ │ └── season-config.ts ← Season-specific data
│ ├── hooks/ ← React hooks
│ └── App.tsx
├── src-tauri/ ← Tauri / Rust backend
│ ├── src/
│ │ ├── main.rs
│ │ └── commands/ ← Tauri IPC commands
│ ├── binaries/ ← SimC sidecars (gitignored)
│ └── tauri.conf.json
├── docs/ ← Internal reference docs
├── scripts/ ← Build scripts
└── .github/workflows/ ← CI/CD
LayerTechnology
FrontendReact + Vite + TypeScript
StylingTailwind CSS
Desktop shellTauri 2.x (Rust)
Simulation engineSimulationCraft (bundled sidecar)
Item databaseSQLite (rusqlite with FTS5)
Package managerpnpm
TestingVitest