WallRun
May 9, 2026 · View on GitHub
Formerly "The Sign Age" — same project, new name.

NOTE: This project is currently in alpha. In fact, it's very alpha. This means it is still under active development and may undergo significant changes. Features may be incomplete or unstable. Got suggestions on what you would like to see or how to make it better? Add an issue and let us know!
What This Is (and Why It Exists)
WallRun is a developer-first workspace for building real digital signage with modern web tooling — especially targeting BrightSign OS 9.x players.
If you've ever thought “this should just be a React app,” this repo is the missing glue:
- A signage-oriented component library (
@wallrun/shadcnui-signage) built for distance readability and fixed-aspect layouts - A packaging + deploy workflow for BrightSign players (no manual ZIP rituals)
- Git-safe player management (no IPs or credentials committed)
- Player discovery tooling to find devices on your local network
Designed for VS Code + GitHub Copilot
This repo is intentionally set up to work well in VS Code with GitHub Copilot:
- Opinionated Copilot instructions to keep AI output consistent
- Built-in agent(s) for signage screen construction and platform-aware guidance
- MCP support for BrightSign platform docs research
- BrightSign Player Tools MCP server — discover, probe, and manage BrightSign players directly from Copilot
- Copilot Agent Plugin — Install curated signage skills and agents into any VS Code workspace
What this is not
WallRun is not a content management system (CMS). It's a development framework for building custom signage applications with React.
When to use established CMS platforms instead
If you don't need to write custom React code, we recommend using proven BrightSign-compatible CMS platforms. In our opinion, these are excellent choices:
- Embed Signage - Known for 4K support, touch interactivity, and comprehensive analytics
- Korbyt - Best for enterprise-level, dynamic, and scalable content management
- Navori - Ideal for large, high-performance digital signage networks
- Signagelive - Highly compatible cloud-based CMS for diverse applications
Use WallRun when:
- You need complete control over UI/UX with custom React components
- You're building bespoke signage experiences that don't fit CMS templates
- You want to integrate signage with custom data sources and business logic
- You're a web developer comfortable with React, TypeScript, and version control
Additional disclaimers
- Not official BrightSign documentation (refer to BrightSign docs for platform details)
- Not a replacement for BSN.cloud (BrightSign's official cloud platform)
🚀 Quick Start
Option 1: See It Running Locally (30 seconds)
No BrightSign player needed. Just clone, install, and run:
git clone https://github.com/CambridgeMonorail/WallRun.git
cd WallRun
pnpm install
pnpm serve:client
Open http://localhost:4200/WallRun/ to explore signage examples, component library, and documentation.
Or browse online:
- Live Demo: https://cambridgemonorail.github.io/WallRun/
- Storybook: https://cambridgemonorail.github.io/WallRun/storybook/
Option 2: Deploy to BrightSign Player (5 minutes)
Have a BrightSign OS 9.x player on your network? Deploy in 3 commands:
# 1. Initialize player configuration
pnpm setup:dev
# 2. Auto-discover players on your LAN (optional but recommended)
pnpm discover
# → Shows all BrightSign players with IP, model, and serial number
# 3. Add your player and deploy
pnpm player add my-player 192.168.1.50 --default
pnpm deploy:player
# Deploy a different player app or target a named player
pnpm deploy:player -- --app player-minimal --player my-player
Your React app is now running on the BrightSign player. Changes? Run pnpm deploy:player again, or use pnpm deploy:player -- --app <app-name> for a specific player app.
Full guides:
- BrightSign Deployment Guide - Packaging, deployment, troubleshooting
- Player Configuration - Registry management, git-safe config
- Player Discovery Tool - Find devices on your LAN
Option 3: Build Your Own Signage
Use the signage component library to create custom screens:
# Create a new BrightSign player app scaffold
pnpm scaffold:player --name player-arrivals
# Or use the Nx-native generator directly
pnpm nx g wallrun:player-app --name player-arrivals
# Start Storybook to browse components
pnpm serve:storybook
Components are in libs/shadcnui-signage/ with:
- Distance-readable typography (10-foot rule)
- Fixed-aspect layouts for 1080p/4K screens
- Primitives, layouts, and blocks for signage
Guides:
- Creating Signage Content - Design principles + examples
- Component Library README - API reference
- Registry README - shadcn registry setup + install commands
- Registry Maintenance Guide - maintainer workflow for updating the published registry
Install Signage Components
The signage components are distributed through a shadcn-compatible registry. Install them into your own project with:
npx shadcn@latest add https://wallrun.dev/registry/auto-paging-list.json
If you are installing into an already-configured monorepo workspace with its own components.json, target that workspace explicitly:
npx shadcn@latest add https://wallrun.dev/registry/all.json -c path/to/workspace
You can also browse the available components and installation options in:
Maintainers updating the published registry should start with:
Install Portable Skills
The repository also exposes portable SKILL.md workflows that can be installed with the open skills CLI:
npx skills add CambridgeMonorail/WallRun
For the available skills and the Copilot mirror model, see:
Install Copilot Agent Plugin
Preview feature — Copilot agent plugins currently require VS Code Insiders. This may change as the feature matures.
WallRun also ships a Copilot agent plugin — a curated bundle of 14 signage skills and 2 agents that you can install into any VS Code workspace without cloning the entire monorepo.
Option A — Local path (if you already have the repo):
Add to your VS Code settings:
"chat.pluginLocations": {
"/path/to/WallRun/copilot-plugins/wallrun-signage": true
}
Option B — Install from repo URL (no clone needed):
In VS Code, run Chat: Install Plugin From Source from the Command Palette and enter the WallRun repo URL.
See the plugin README for full details.
✨ Key Features
@wallrun/shadcnui-signage- Signage-specific React components (distance-readable, deterministic rendering)- One-command deployment -
pnpm deploy:playerpackages and deploys to BrightSign OS 9.x - Player discovery - Find all BrightSign devices on your LAN automatically
- Git-safe configuration - No IPs or credentials committed (uses
.brightsign/players.json, git-ignored) - AI-accelerated development - GitHub Copilot agents for signage workflows (Signage Architect)
- Production examples - Restaurant menus, office directories, KPI dashboards, event schedules
Overview
WallRun is an exploration of digital signage as software.
This repository exists to document, prototype, and share practical work around building bespoke, generative, and data-driven content for digital signage players—especially BrightSign devices—from the perspective of experienced frontend developers.
Digital signage is often treated as a solved problem: templates, slide decks, CMS tools, and marketing abstractions. That works for some use cases, but it leaves a large amount of creative and technical potential unexplored.
This project starts from a different assumption: signage screens are computers bolted to walls.
Statement of Intent
The intent of this repository is to:
- Treat signage players as programmable systems, not presentation tools
- Translate signage concepts into mental models familiar to web and frontend engineers
- Explore what is possible when modern web technologies meet always-on, unattended hardware
- Be honest about constraints, quirks, trade-offs, and failure cases
- Share real experiments, not polished marketing narratives
This is not a CMS. This is not official BrightSign documentation. It is a working notebook for people who already know how to build software and want to apply that skill to screens that live in physical space.
If something here feels unfinished, opinionated, or slightly uncomfortable, that is intentional. The goal is to surface the edges of the platform, not to smooth them away.
Signage is software. It deserves to be treated as such.
What This Repo Contains
This is an Nx + pnpm monorepo with a focus on tooling and reusable UI building blocks for signage:
Component Libraries
-
libs/shadcnui-signage⭐ - Primary focus: Signage-specific React components- Distance-readable typography (10-foot rule)
- Fixed-aspect primitives, layouts, and blocks
- Deterministic rendering for 1080p/4K screens
- Designed for always-on, unattended displays
- View in Storybook | Source
-
libs/shadcnui/libs/shadcnui-blocks: Supporting component primitives (our copy of shadcn/ui) and compositions for demo website
Applications
apps/client: Demo site showcasing signage examples and components (View Live Demo)apps/player-minimal: BrightSign deployment target with status monitoring (Deployment Guide)- Storybook: Interactive component documentation (Browse Components)
Deployment Tools
scripts/package-player.mjs- Package React apps for BrightSign OS 9.x with autorun.brs bootstrapscripts/deploy-local.mjs- Deploy to local BrightSign players primarily via LDWS over HTTPS (port 443, digest auth), with HTTP used only when a non-443 port is explicitly configuredskills/brightsign-*/skills/player-discovery-*- PortableSKILL.mdworkflows for BrightSign packaging, deployment, runtime guidance, and LAN discovery, mirrored to.github/skills/for Copilot (docs)
Signage Skills
skills/signage-layout-system/- Full-screen wall-display layout rules for distance readability and glanceable hierarchyskills/signage-animation-system/- Public-display motion guidance for calm, loop-safe, always-on animationskills/brightsign-runtime/- BrightSign runtime constraints for static deployment, media behavior, and embedded stability
AI Accelerators
.github/agents/signage-architect.agent.md- GitHub Copilot agent for building premium signage screens. Emphasizes distance readability, deterministic layouts, and 24/7 operation. Can pair with the signage and BrightSign runtime skills for wall-screen layout, motion, and playback constraints. Enforces signage design principles instead of website patterns and integrates with BrightSign platform documentation via MCP. View agent definition
Demo Site
The demo site (apps/client) showcases digital signage concepts in action:
- Landing Page: Explains the project purpose and approach
- Getting Started: Shows component installation paths and first-use guidance
- Component Library: Explains what each library is, what registry support means, and where to browse reference docs
- Gallery: Directory of full-screen signage examples
- Signage Examples: Welcome screens, restaurant menus, office directories, KPI dashboards, announcements boards, and event schedules
Run pnpm run serve:client and visit http://localhost:4200/WallRun/ to explore the examples.
Developer Tooling
This repo is designed to feel familiar to frontend engineers:
- React 19 + Vite for fast local development
- TypeScript (strict) for safe iteration
- Tailwind CSS v4 + shadcn/ui for rapid UI composition
- Vitest + Testing Library for unit/component tests
- Playwright for E2E tests (when the UI flow is critical)
- Nx “affected” workflows to keep validation fast (
lint,type-check,test,build)
It also includes opinionated workflow support:
pnpm verifyas the “definition of done”- GitHub Copilot instructions + agents to keep AI-assisted work consistent
- MCP server configuration — BrightDeveloper (platform docs) + BrightSign Player Tools (device discovery and management)
Technologies Used
- React: A JavaScript library for building user interfaces.
- TypeScript: A typed superset of JavaScript that compiles to plain JavaScript.
- Node.js: A JavaScript runtime built on Chrome's V8 JavaScript engine.
- Nx: A set of extensible dev tools for monorepos, which helps in managing and scaling the project.
- Markdown: A lightweight markup language for creating formatted text using a plain-text editor.
- pnpm: A fast, disk space-efficient package manager.
- Vite: A build tool that provides a faster and leaner development experience for modern web projects.
- GitHub: A platform for version control and collaboration.
- GitHub Actions: A CI/CD service that allows you to automate your build, test, and deployment pipeline.
- Tailwind CSS: A utility-first CSS framework for styling the components.
- shadcn/ui: A set of reusable UI components for consistent design.
- React Router: A library for routing in React applications.
- Vitest: A Vite-native unit testing framework.
- Playwright: An end-to-end testing framework.
- Visual Studio Code: A source-code editor made by Microsoft for Windows, Linux, and macOS.
- GitHub Copilot: An AI pair programmer that helps you write code faster and with less work.
Installation
To install the project, follow these steps:
-
Clone the repository:
git clone https://github.com/CambridgeMonorail/WallRun.git -
Navigate to the project directory:
cd WallRun -
Install dependencies:
pnpm install
Usage
To run the demo site locally:
pnpm run serve:client
To run the BrightSign player app locally:
pnpm run serve:player
To create a production bundle:
pnpm run build:affected
To see all available targets to run for a project, run:
npx nx show project client
These targets are either inferred automatically or defined in the project.json or package.json files.
More about running tasks in the docs »
Common Commands
Local Development
pnpm serve:client # Run demo site (http://localhost:4200/WallRun/)
pnpm serve:player # Run BrightSign player app locally
pnpm serve:storybook # Browse component library
BrightSign Deployment
pnpm setup:dev # Initialize player configuration
pnpm discover # Find all BrightSign players on your LAN
pnpm player list # Show registered players
pnpm player add <name> <ip> --default # Add a player
pnpm deploy:player # Build and deploy to default player
pnpm deploy:player -- --app <app-name> --player <name> # Target a specific app and player
See BrightSign Deployment Guide for troubleshooting and advanced workflows.
Validation
pnpm verify # Fast: format, lint, type-check, test (affected only)
pnpm validate # Comprehensive: all projects, slower
Building
pnpm build:affected # Build changed projects only
pnpm build:all # Build everything
Documentation
Quick Links
- BrightSign Deployment Guide ⭐ - Package + deploy to BrightSign OS 9.x
- BrightSign Player Configuration ⭐ - Player registry + git-safe config
- Player Discovery Tool ⭐ - Discover players on your LAN
- Copilot Agent Plugin ⭐ - Install signage skills + agents into any workspace
- Creating Digital Signage Content - Guide to building premium signage screens
- Guides - Practical how-to tutorials
- Getting Started - Project structure and setup
- Documentation Index - Full documentation overview
- BrightSign Testing Checklist - End-to-end validation steps
Key Resources
- Signage component library: libs/shadcnui-signage/README.md
- Copilot + workflow tooling: docs/tooling/github-copilot-tooling.md
- Agent workflows: AGENTS.md
Roadmap
See ROADMAP.md for the project's development plan, including:
- ✅ Completed features (Q4 2025 - Q1 2026)
- 🚧 In-progress work (Component enrichment, documentation)
- 📋 Planned features (Q2 2026: DataFetcher, WeatherWidget, QRCodeDisplay, etc.)
- 🔮 Future vision (Platform integration, content management, industry templates)
Target for v1.0: Q3 2026
Contributing
Contributions are welcome! Please open an issue or submit a pull request for any changes. For detailed guidelines on how to contribute, see Contributing.
Contributing / Security / Issues
- Contributing guide: docs/contributing/CONTRIBUTING.md
- Code of Conduct: CODE_OF_CONDUCT.md
- Security policy: SECURITY.md
- Issues: github.com/CambridgeMonorail/WallRun/issues (bug reports, feature requests, and docs improvements)
License
This project is licensed under the MIT License.
Acknowledgments
- joshuarobs/nx-shadcn-ui-monorepo
- Shadcn UI
- Nx
- BrightDev MCP Server: Model Context Protocol server providing access to BrightSign platform documentation for AI-assisted development
- Placebeard: A fantastic service for placeholder images featuring bearded individuals, inspired by similar services like placekitten.com and placedog.com. We appreciate their free service for adding a touch of fun to our project.
- unDraw: Open-source illustrations for any idea you can imagine and create. A constantly updated design project with beautiful SVG images that you can use completely free and without attribution. Created by Katerina Limpitsouni.
- Shadcn UI Theme Generator: A tool for generating themes for Shadcn UI.