Development Setup
Prerequisites
Section titled “Prerequisites”-
Rust (via rustup):
Terminal window curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -
pnpm — the project’s package manager:
Terminal window npm i -g pnpm -
SimC binary for your platform — see SimC Sidecar below
Getting Started
Section titled “Getting Started”git clone https://github.com/aine-etke/wow-topgear.gitcd wow-topgearpnpm installpnpm tauri dev # launches the app with hot reloadpnpm 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.
Frontend Only
Section titled “Frontend Only”If you’re working on frontend code and don’t need the Tauri shell:
pnpm dev # Vite dev server only, no TauriSimC Sidecar Setup
Section titled “SimC Sidecar Setup”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:
| Platform | Binary Name |
|---|---|
| macOS Apple Silicon | simc-aarch64-apple-darwin |
| macOS Intel | simc-x86_64-apple-darwin |
| Windows x64 | simc-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:
chmod +x src-tauri/binaries/simc-aarch64-apple-darwinProject Commands
Section titled “Project Commands”| Command | Description |
|---|---|
pnpm install | Install dependencies |
pnpm tauri dev | Dev mode with hot reload |
pnpm tauri build | Production build (current platform) |
pnpm dev | Frontend only (no Tauri shell) |
pnpm test | Run Vitest test suite |
pnpm season:validate | Validate season-config.ts |
pnpm build:item-db | Regenerate items.db from SimC source |
Project Structure
Section titled “Project Structure”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| Layer | Technology |
|---|---|
| Frontend | React + Vite + TypeScript |
| Styling | Tailwind CSS |
| Desktop shell | Tauri 2.x (Rust) |
| Simulation engine | SimulationCraft (bundled sidecar) |
| Item database | SQLite (rusqlite with FTS5) |
| Package manager | pnpm |
| Testing | Vitest |