877ff3f896cd95ae7d0e30dda7c71ae37b3a0bc0
Pulse Signage
Pulse Signage is a digital signage system that lets you manage screens, playlists, slides, templates, and uploaded media from one admin interface.
It runs as two connected services:
- the web admin app for managing content and screens
- the player app that shows the current signage on each screen and listens for live updates
What You Can Do
- Sign in to the admin dashboard
- Create and organize playlists and slides
- Design reusable templates and canvas sizes
- Register screens and assign playlists to them
- Upload images and other media for use in slides and templates
- View live screen connections and send player commands
What You Need
- Docker and Docker Compose
- A MySQL database
First-Time Setup
When the app starts for the first time, it creates the database tables it needs and adds a default admin account if no users exist yet.
- Username:
admin - Password:
admin
You can change the initial admin credentials with these optional environment variables:
DEFAULT_ADMIN_USERNAMEDEFAULT_ADMIN_NAMEDEFAULT_ADMIN_PASSWORD
Configuration
The app reads its settings from environment variables.
Database Connection
DB_HOST- MySQL host, default127.0.0.1DB_PORT- MySQL port, default3306DB_NAME- database name, defaultsignageDB_USER- database user, defaultsignage_userDB_PASSWORD- database password, defaultsignage_password
Web Admin App
WEB_PORT- admin app port, default3000PLAYER_INTERNAL_BASE_URL- player address used by the server, defaulthttp://player:3001PLAYER_PUBLIC_BASE_URL- player address shown in browser links, defaulthttp://localhost:3001UPLOAD_DIR- storage location for uploaded files, default./uploads
Player App
PLAYER_PORT- player port, default3001
Using Docker
The recommended way to run the project is with Docker Compose.
docker-compose up --build
This starts:
- the web admin app on port
3000 - the player app on port
3001 - MySQL on port
3306
The web app and player app share the same uploaded media volume, so files uploaded in the admin UI are available to the player.
Important Notes
- The web app must be able to reach the player through
PLAYER_INTERNAL_BASE_URL. - When running in Docker, that value should point to the Docker service name, not
localhost. - Uploaded media is stored separately from the application source, so make sure it is backed up if you are not using Docker volumes.
Languages
JavaScript
85.4%
Handlebars
10.6%
CSS
2.9%
HTML
1%