Skip to content

Tech Stack

iRaceDeck is a monorepo built with pnpm workspaces. The codebase is organized into these packages:

PackageDescription
@iracedeck/stream-deck-pluginThe main Stream Deck plugin — all 31 actions, Property Inspector UI, and icon rendering
@iracedeck/iracing-sdkTypeScript SDK for reading iRacing telemetry and session data via shared memory
@iracedeck/iracing-nativeNative C++ addon for Windows keyboard simulation and window management
@iracedeck/iconsSVG icon library for all Stream Deck button icons
@iracedeck/loggerShared logging library with scoped loggers
@iracedeck/websiteThis documentation site (Astro + Starlight)

The plugin communicates with iRacing through two channels:

Used for telemetry data and SDK commands. This is the preferred method — it’s reliable and doesn’t depend on key bindings. Examples:

  • Pit service commands (fuel, tires, fast repair)
  • Chat macros and messages
  • Replay transport and navigation
  • Camera switching and focus
  • Telemetry recording

Used for actions that don’t have SDK support. The native C++ addon sends scan codes directly to iRacing. Examples:

  • Black box selection
  • View and camera adjustments (FOV, horizon, driver height)
  • Car setup adjustments (brake bias, traction control, etc.)
  • Look direction (hold pattern)

All keyboard shortcuts are user-configurable through the Property Inspector to match each user’s iRacing key bindings.

  • pnpm for package management and workspaces
  • Rollup for bundling the Stream Deck plugin
  • Vitest for testing
  • Astro + Starlight for the documentation website
  • CodeRabbit for automated PR reviews