Development
TypeScript, React 19, zod, webpack, vitest and pnpm (Node 22.12 or newer).
See Testing for tests and CI, and AGENTS.md in the repository
root for contributor and agent guidance.
Tasks
| Task | pnpm equivalent | Purpose |
|---|---|---|
task install |
pnpm install --frozen-lockfile |
Reproducible installation |
task dev |
pnpm dev |
Standalone app with Webpack hot reload |
task dev:overwolf |
pnpm dev:overwolf |
Watch the Overwolf development build |
task dev:gateway |
pnpm dev:gateway |
Local webhook gateway with a mock Kick on port 5190 |
task build:dev |
pnpm build:dev |
All apps, unminified with source maps |
task build |
pnpm build |
All apps, minified without source maps |
task build:overwolf |
pnpm build:overwolf |
Unpacked Overwolf app only |
task package:overwolf |
pnpm package:overwolf |
Production Overwolf build and OPK archive |
task build:standalone |
pnpm build:standalone |
Standalone app and server only |
task build:gateway |
pnpm build:gateway |
Webhook gateway server only |
task start |
pnpm start |
Serve the built standalone app on loopback |
task start:gateway |
pnpm start:gateway |
Run the built gateway (needs its environment) |
task gateway:docker |
docker build -f apps/gateway/… |
Build the gateway container image |
task gateway:deploy |
az deployment group create … |
Deploy the gateway to Azure Container Apps |
task companion |
pnpm kick:companion |
Run the self-hosted Kick companion |
task catalog:sync |
pnpm catalog:sync |
Refresh bundled games and manifest allowlists |
task check |
pnpm check |
Type-check, tests, and formatting check |
task test |
pnpm test |
Unit and loopback protocol integration tests |
Builds type-check before Webpack transpiles. Development and production builds replace the same output folders; run the desired build before distributing.
Deployables
| Deployable | Source | Output | Docs |
|---|---|---|---|
| Overwolf package | apps/overwolf |
dist/overwolf |
Overwolf app |
| Standalone / local | apps/standalone |
dist/standalone |
Local server |
| Webhook gateway | apps/gateway |
dist/gateway/server.cjs |
Webhook gateway |
| Kick companion | apps/kick-companion |
Runs from source | Kick companion |
| Desktop app (future) | apps/desktop, later |
Not yet implemented | An Electron shell around packages/ui is planned |
dist/overwolf: unpacked Overwolf app, including its manifest and assets.dist/stream-pulse.opk: normal-compression ZIP of the Overwolf build, created bypnpm package:overwolfortask package:overwolf.dist/standalone: the browser UI plusserver.cjs, a compiled Node.js server that needs no production dependencies.dist/gateway/server.cjs: the self-contained gateway server, also packaged byapps/gateway/Dockerfile.
Set TWITCH_CLIENT_ID at build time to bundle a Twitch Client ID; see
Twitch. Set STREAM_PULSE_GATEWAY_URL to bundle the
default webhook gateway URL; development builds default to the local gateway.
Source layout
apps/
overwolf/ Overwolf manifest, background controller and GEP provider
standalone/ Browser entry point and compiled Node.js server
gateway/ Webhook gateway service, Dockerfile and Azure Bicep (infra/)
kick-companion/ Self-hosted Kick companion (alternative to the gateway)
packages/
core/ Schemas, routing, transports, sources, accounts, Kick/Twitch/YouTube,
gateway client, controller; data/ holds the bundled GEP catalog
ui/ Shared React configuration UI, Control board and Event Lab
node-kit/ Shared Node.js helpers: local endpoints, Streamer.bot relay,
webhook delivery, companion pairing and the Kick provider
scripts/ Catalog sync and manifest schema
tests/ Unit, protocol integration, and manifest tests
docs/ This documentation site, including design plans
webpack.config.cjs Builds every app (`--env app=<name>` selects one)
Documentation
This site is built with Jekyll from docs/, with a local theme matching the
public website. Documentation site describes
the Docker build, preview and GHCR publishing workflow. Design plans remain
in the repository but are excluded from the public site.
To preview locally with Ruby 3.3 and Bundler:
cd docs
bundle install
bundle exec jekyll serve
Each page needs front matter with a title, and parent for pages inside a
category. Link between pages with relative .md paths.