Simple, Free LAN PC Monitoring for arcade style environments.
View ShowTrak Client (Related Project) »
Report Bug
·
Request Feature
ShowTrak Server is the desktop control plane for ShowTrak. It is an Electron app that runs on an operator machine and manages many ShowTrak Client nodes on a local network.
Core outcomes:
- Observe machine status in near real time
- Adopt and organize clients by group
- Execute scripted actions across single or bulk targets
- Monitor service/network endpoints (ping, HTTP(S), DNS, TCP)
- Trigger alert actions from rule-based events
- Control systems through OSC and Wake-on-LAN
- Expose a browser-based companion Web UI for remote dashboards and actions
Companion client agent repository: ShowTrak Client
ShowTrak Server includes all of the following in a single app/runtime:
- Desktop UI (Electron renderer in
src/UI) - Main process orchestration and IPC bridge (
src/main.js,src/bridge_main.js) - Client socket server and Web UI socket namespace (
src/Modules/Server) - Persistent local data (SQLite + show file workflow)
- Monitoring targets and history
- Alerting engine + pluggable action handlers
- Script catalog + execution queue
- Network discovery and adoption flows
- Auto-update hooks for packaged desktop builds
- Client adoption queue for unmanaged devices
- Full client list sync and update broadcasts
- Group creation, deletion, and ordering
- Per-client updates and unadopt workflow
- Built-in monitor methods:
- ICMP ping
- TCP port probe
- HTTP probe
- HTTPS probe
- HTTP JSON check
- DNS check
- Monitoring target CRUD and live status updates
- Monitoring history collection and retrieval APIs
- Rule-based triggers:
- Client/target offline
- Client/target online
- Degraded state
- Script execution failure
- Action transports:
- Discord webhook
- HTTP API call
- OSC trigger
- Alert history persistence and live "AlertTriggered" broadcast events
- Script library management (upload/update/delete)
- Targeted or bulk execution dispatch
- Queue tracking for execution status and visibility
- Optional Web UI remote execution gate via settings
- Hosted directly by ShowTrak Server at
/ - Socket namespace dedicated to browser clients
- Optional passcode protection
- Session token auth (in-memory)
- Mobile-friendly dashboard view for clients/monitors
- Optional remote run actions (scripts/WOL), disabled by default
New,Open,Save,Save Aslifecycle for show state.ShowTrakfile acts as a complete SQLite snapshot- Autosave support to currently open show file
- Missing file recovery checks at startup
- Electron Forge based development and packaging
- Makers configured for:
- Windows (Squirrel)
- macOS (ZIP)
- Linux (ZIP, DEB, RPM)
- Optional macOS signing and notarization through environment variables
Additional runtime components include Socket.IO, Express, SQLite, node-osc, wakeonlan, and electron-updater.
- Node.js 20+ recommended (CI uses Node 20)
- npm
- macOS, Windows, or Linux
- Download the latest package from GitHub Releases.
- Install and launch ShowTrak Server.
- Install ShowTrak Client on target devices.
- Ensure operator and clients can reach each other over LAN.
npm ci
npm run startnpm run start now runs with file watching and automatic rebuild/restart.
You can also type rs in the terminal to force a manual restart.
# Run app in development
npm run start
# Build distributables for current platform
npm run make
# Run test suite (builds first, then runs all tests)
npm run test
# Run tests with coverage report
npm run test:coverage
# Lint
npm run lint
# Auto-fix lint issues
npm run lint:fix
# Format repository
npm run format
# Check formatting only
npm run format:check- Main server/socket port defaults to
3000. - The app hosts:
- client script/static assets
- Web UI static assets
- Socket.IO namespaces for clients and browser UI
- Wake-on-LAN and remote Web UI actions are setting-gated features.
Application data root:
- Windows:
%APPDATA%/ShowTrakServer - macOS:
~/Library/Application Support/ShowTrakServer - Linux:
$XDG_DATA_HOME/ShowTrakServeror~/.local/share/ShowTrakServer
Inside app data:
Logs/Scripts/Storage/(runtime DB storage)state.json(current open show file pointer)
- Electron renderer isolation enabled
- Node integration disabled in renderer
- Sandboxed renderer
- Navigation/window-open guards for external URLs
- IPC bridge allowlists exposed channels (
window.API)
GitHub Actions workflow:
.github/workflows/build-and-draft-release.yml
What it does:
- Builds on Ubuntu, macOS, and Windows
- Supports macOS variants:
- unsigned
- signed
- signed + notarized
- Uploads build artifacts
- Optionally creates/updates a draft GitHub release
- Generates
latest-mac.ymlfor macOS auto-update metadata
Used by packaging and CI when signing/notarization is enabled:
APPLE_SIGN_IDENTITYAPPLE_KEYCHAIN_PATHAPPLE_API_KEY_PATHAPPLE_API_KEY_IDAPPLE_API_ISSUER_ID
src/main.js- Electron main process and lifecycle orchestrationsrc/bridge_main.js- preload bridge and IPC channel allowlistssrc/UI/- desktop renderer UIsrc/WebUI/- browser-based companion UIsrc/Modules/- domain modules and infrastructuretest/- Node test runner suite for managers, integrations, and behaviorforge.config.js- Electron Forge packaging/maker/signing configuration
- Discord: ShowTrak Discord
- Issues: GitHub Issues
Licensed under AGPL-3.0-only. See LICENSE.