{"id":51156895,"url":"https://github.com/showtrak/showtrakserver","last_synced_at":"2026-06-26T11:00:40.849Z","repository":{"id":304566509,"uuid":"952790085","full_name":"ShowTrak/ShowTrakServer","owner":"ShowTrak","description":"Open Source LAN Monitoring","archived":false,"fork":false,"pushed_at":"2026-06-22T17:10:08.000Z","size":6842,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-22T18:16:18.635Z","etag":null,"topics":["android","lan","linux","macos","macos-app","monitoring","pc","remote-control","wake-on-lan","windows"],"latest_commit_sha":null,"homepage":"https://showtrak.co.uk/software/server","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ShowTrak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"ShowTrak"}},"created_at":"2025-03-21T22:18:05.000Z","updated_at":"2026-06-22T17:13:34.000Z","dependencies_parsed_at":"2025-07-13T23:41:12.137Z","dependency_job_id":"8a069540-99e8-4795-9c1d-d9c844f40ceb","html_url":"https://github.com/ShowTrak/ShowTrakServer","commit_stats":null,"previous_names":["showtrak/showtrakserver"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/ShowTrak/ShowTrakServer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShowTrak%2FShowTrakServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShowTrak%2FShowTrakServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShowTrak%2FShowTrakServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShowTrak%2FShowTrakServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ShowTrak","download_url":"https://codeload.github.com/ShowTrak/ShowTrakServer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ShowTrak%2FShowTrakServer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34813782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-26T02:00:06.560Z","response_time":106,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","lan","linux","macos","macos-app","monitoring","pc","remote-control","wake-on-lan","windows"],"created_at":"2026-06-26T11:00:30.001Z","updated_at":"2026-06-26T11:00:40.837Z","avatar_url":"https://github.com/ShowTrak.png","language":"JavaScript","funding_links":["https://github.com/sponsors/ShowTrak"],"categories":[],"sub_categories":[],"readme":"\u003cbr /\u003e\n\u003cdiv align=\"center\"\u003e\n\n\u003ca href=\"https://github.com/ShowTrak/ShowTrakServer\"\u003e\n    \u003cimg src=\"https://tkw.bz/img/ShowTrak.png\" alt=\"Logo\" width=\"120\" height=\"120\"\u003e\n\u003c/a\u003e\n\n\u003ch3 align=\"center\"\u003eShowTrak Server\u003c/h3\u003e\n  \u003cp align=\"center\"\u003e\n    Simple, Free LAN PC Monitoring for arcade style environments.\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/ShowTrak/ShowTrakClient\"\u003e\u003cstrong\u003eView ShowTrak Client (Related Project) »\u003c/strong\u003e\u003c/a\u003e\n    \u003cbr /\u003e\n    \u003cbr /\u003e\n    \u003ca href=\"https://github.com/ShowTrak/ShowTrakServer/issues/new?labels=bug\u0026template=bug-report---.md\"\u003eReport Bug\u003c/a\u003e\n    \u0026middot;\n    \u003ca href=\"https://github.com/ShowTrak/ShowTrakServer/issues/new?labels=enhancement\u0026template=feature-request---.md\"\u003eRequest Feature\u003c/a\u003e\n  \u003c/p\u003e\n\u003c/div\u003e\n\n## What This Project Is\n\nShowTrak 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.\n\nCore outcomes:\n\n- Observe machine status in near real time\n- Adopt and organize clients by group\n- Execute scripted actions across single or bulk targets\n- Monitor service/network endpoints (ping, HTTP(S), DNS, TCP)\n- Trigger alert actions from rule-based events\n- Control systems through OSC and Wake-on-LAN\n- Expose a browser-based companion Web UI for remote dashboards and actions\n\nCompanion client agent repository: \u003ca href=\"https://github.com/ShowTrak/ShowTrakClient\"\u003e\u003cstrong\u003eShowTrak Client\u003c/strong\u003e\u003c/a\u003e\n\n## Scope Overview\n\nShowTrak Server includes all of the following in a single app/runtime:\n\n- Desktop UI (Electron renderer in `src/UI`)\n- Main process orchestration and IPC bridge (`src/main.js`, `src/bridge_main.js`)\n- Client socket server and Web UI socket namespace (`src/Modules/Server`)\n- Persistent local data (SQLite + show file workflow)\n- Monitoring targets and history\n- Alerting engine + pluggable action handlers\n- Script catalog + execution queue\n- Network discovery and adoption flows\n- Auto-update hooks for packaged desktop builds\n\n## Key Features\n\n### Device and Group Management\n\n- Client adoption queue for unmanaged devices\n- Full client list sync and update broadcasts\n- Group creation, deletion, and ordering\n- Per-client updates and unadopt workflow\n\n### Monitoring\n\n- Built-in monitor methods:\n  - ICMP ping\n  - TCP port probe\n  - HTTP probe\n  - HTTPS probe\n  - HTTP JSON check\n  - DNS check\n- Monitoring target CRUD and live status updates\n- Monitoring history collection and retrieval APIs\n\n### Alerts and Actions\n\n- Rule-based triggers:\n  - Client/target offline\n  - Client/target online\n  - Degraded state\n  - Script execution failure\n- Action transports:\n  - Discord webhook\n  - HTTP API call\n  - OSC trigger\n- Alert history persistence and live \"AlertTriggered\" broadcast events\n\n### Scripts and Automation\n\n- Script library management (upload/update/delete)\n- Targeted or bulk execution dispatch\n- Queue tracking for execution status and visibility\n- Optional Web UI remote execution gate via settings\n\n### Web UI (Browser Access)\n\n- Hosted directly by ShowTrak Server at `/`\n- Socket namespace dedicated to browser clients\n- Optional passcode protection\n- Session token auth (in-memory)\n- Mobile-friendly dashboard view for clients/monitors\n- Optional remote run actions (scripts/WOL), disabled by default\n\n### Show File Workflow\n\n- `New`, `Open`, `Save`, `Save As` lifecycle for show state\n- `.ShowTrak` file acts as a complete SQLite snapshot\n- Autosave support to currently open show file\n- Missing file recovery checks at startup\n\n### Platform and Packaging\n\n- Electron Forge based development and packaging\n- Makers configured for:\n  - Windows (Squirrel)\n  - macOS (ZIP)\n  - Linux (ZIP, DEB, RPM)\n- Optional macOS signing and notarization through environment variables\n\n## Tech Stack\n\n[![Electron][Electronjs.org]][Electron-url] [![Bootstrap][Bootstrap.com]][Bootstrap-url] [![JQuery][JQuery.com]][JQuery-url]\n\nAdditional runtime components include Socket.IO, Express, SQLite, node-osc, wakeonlan, and electron-updater.\n\n## Requirements\n\n- Node.js 20+ recommended (CI uses Node 20)\n- npm\n- macOS, Windows, or Linux\n\n## Installation (End Users)\n\n1. Download the latest package from GitHub Releases.\n2. Install and launch ShowTrak Server.\n3. Install ShowTrak Client on target devices.\n4. Ensure operator and clients can reach each other over LAN.\n\n## Local Development\n\n```bash\nnpm ci\nnpm run start\n```\n\n### Useful Scripts\n\n```bash\n# Run app in development\nnpm run start\n\n# Build distributables for current platform\nnpm run make\n\n# Package without makers\nnpm run package\n\n# Run test suite\nnpm run test\n\n# Run tests with coverage report\nnpm run test:coverage\n\n# Lint\nnpm run lint\n\n# Auto-fix lint issues\nnpm run lint:fix\n\n# Format repository\nnpm run format\n\n# Check formatting only\nnpm run format:check\n```\n\n## Networking and Runtime Notes\n\n- Main server/socket port defaults to `3000`.\n- The app hosts:\n  - client script/static assets\n  - Web UI static assets\n  - Socket.IO namespaces for clients and browser UI\n- Wake-on-LAN and remote Web UI actions are setting-gated features.\n\n## Data and Storage\n\nApplication data root:\n\n- Windows: `%APPDATA%/ShowTrakServer`\n- macOS: `~/Library/Application Support/ShowTrakServer`\n- Linux: `$XDG_DATA_HOME/ShowTrakServer` or `~/.local/share/ShowTrakServer`\n\nInside app data:\n\n- `Logs/`\n- `Scripts/`\n- `Storage/` (runtime DB storage)\n- `state.json` (current open show file pointer)\n\n## Security Model (Desktop)\n\n- Electron renderer isolation enabled\n- Node integration disabled in renderer\n- Sandboxed renderer\n- Navigation/window-open guards for external URLs\n- IPC bridge allowlists exposed channels (`window.API`)\n\n## Build and Release Workflow\n\nGitHub Actions workflow:\n\n- `.github/workflows/build-and-draft-release.yml`\n\nWhat it does:\n\n- Builds on Ubuntu, macOS, and Windows\n- Supports macOS variants:\n  - unsigned\n  - signed\n  - signed + notarized\n- Uploads build artifacts\n- Optionally creates/updates a draft GitHub release\n- Generates `latest-mac.yml` for macOS auto-update metadata\n\n### macOS Signing/Notarization Environment Variables\n\nUsed by packaging and CI when signing/notarization is enabled:\n\n- `APPLE_SIGN_IDENTITY`\n- `APPLE_KEYCHAIN_PATH`\n- `APPLE_API_KEY_PATH`\n- `APPLE_API_KEY_ID`\n- `APPLE_API_ISSUER_ID`\n\n## Repository Layout\n\n- `src/main.js` - Electron main process and lifecycle orchestration\n- `src/bridge_main.js` - preload bridge and IPC channel allowlists\n- `src/UI/` - desktop renderer UI\n- `src/WebUI/` - browser-based companion UI\n- `src/Modules/` - domain modules and infrastructure\n- `test/` - Node test runner suite for managers, integrations, and behavior\n- `forge.config.js` - Electron Forge packaging/maker/signing configuration\n\n## Support\n\n- Discord: [ShowTrak Discord](https://discord.gg/DACmwsbSGW)\n- Issues: [GitHub Issues](https://github.com/ShowTrak/ShowTrakServer/issues)\n\n## License\n\nLicensed under AGPL-3.0-only. See [LICENSE](LICENSE).\n\n[Electronjs.org]: https://img.shields.io/badge/Electron-563D7C?style=for-the-badge\u0026logo=electron\u0026logoColor=white\n[Electron-url]: https://www.electronjs.org/\n[Bootstrap.com]: https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge\u0026logo=bootstrap\u0026logoColor=white\n[Bootstrap-url]: https://getbootstrap.com\n[JQuery.com]: https://img.shields.io/badge/jQuery-0769AD?style=for-the-badge\u0026logo=jquery\u0026logoColor=white\n[JQuery-url]: https://jquery.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshowtrak%2Fshowtrakserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshowtrak%2Fshowtrakserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshowtrak%2Fshowtrakserver/lists"}