Web-based Digital Signage System
Project description
MacroSignage
MacroSignage is a Flask-based digital signage manager with an admin console, token-secured display players, scheduling, media playback, REST API access, and a standalone pywebview display client.
Status: Pre-alpha v0.2.5. Data models and API contracts can change before v1.0.
Features
- Admin dashboard with recent activity, diagnostics, and settings pages.
- Display CRUD with online, offline, and maintenance states.
- Token-secured display player pairing with remote disable/rotation.
- Media CRUD for images, text, video, HTML, YouTube, slider, neon sign, and vCard QR media.
- Slider media with backgrounds, foreground images, fonts, positions, durations, and Animate.css effects.
- Schedule CRUD with active windows, weekday rules, display targets, playlists, and no-active-schedule fallback.
- Auth, password reset flow, user CRUD, RBAC, and API token lifecycle management.
- REST API for displays, media, schedules, users, fonts, settings, health, and player playlists.
- Server-sent events for display player refresh.
- Global logo overlay settings and managed Google Fonts.
- SQLite by default with configurable Flask-SQLAlchemy database URI support.
- Waitress-backed production CLI plus systemd and Docker examples.
- Separate pywebview client package with GitHub Release executables.
Quick Start
Install from PyPI:
pip install MacroSignage
macrosignage dev
Or run from source:
git clone https://github.com/BaezFJ/MacroSignage.git
cd MacroSignage
uv sync --all-groups
cp .env.example .env
uv run macrosignage dev
Open http://127.0.0.1:5000, then create the first admin account at /auth/setup.
Production
Use the dedicated production script behind a reverse proxy:
MACROSIGNAGE_SECRET_KEY='replace-with-a-long-random-secret' \
MACROSIGNAGE_DATABASE_URI='sqlite:////var/lib/macrosignage/macrosignage.sqlite3' \
MACROSIGNAGE_MEDIA_UPLOAD_FOLDER='/var/lib/macrosignage/media' \
MACROSIGNAGE_SESSION_COOKIE_SECURE=true \
macrosignage-prod --host 127.0.0.1 --port 8080 --threads 4
See Deployment for systemd, Docker, HTTPS, health checks, backups, restore, and rollback.
Client Executables
Prebuilt standalone display client executables are available on the GitHub Releases page:
https://github.com/BaezFJ/MacroSignage/releases
The client source package lives in client/. See Standalone Client.
Documentation
Start with docs/index.md.
Core guides:
- Installation
- Configuration
- Auth and RBAC
- Display Management and Player Pairing
- Media Library
- Scheduling and Playback
- REST API
- API Tokens
- Deployment
- Troubleshooting
- Development
- Architecture
Development Commands
uv lock --check
uv run python -m pytest
uv run python -m unittest discover -s tests
uv run python -m compileall src/macrosignage tests
uv build
uv run twine check dist/*
Release Automation
- CI runs on pull requests and pushes to
main. - PyPI publishing runs when a
v*tag is pushed. - Client executable build and release workflows produce Windows, macOS, and Linux assets.
- Release documentation review is tracked in the checklist.
v1.0 Remaining Work
- Production-hardened and fully tested (roadmap)
- Complete documentation (roadmap)
- Deployment guides for Docker, systemd, health checks, backups, and rollback
License
MacroSignage is licensed under the MIT License. See LICENSE.
Copyright (c) 2022 Javier Baez
Links
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file macrosignage-0.2.5.tar.gz.
File metadata
- Download URL: macrosignage-0.2.5.tar.gz
- Upload date:
- Size: 2.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb61fa25c6a604a4164579336b917a2d05d7752c4683c3170d7a3b4d0ae2a293
|
|
| MD5 |
d712705cde5f2a32620537a438e2318e
|
|
| BLAKE2b-256 |
0d3b1f81ada7a4a91cb05192dfd11950428275a5f14fc7d75fa3ee9679cae4b8
|
Provenance
The following attestation bundles were made for macrosignage-0.2.5.tar.gz:
Publisher:
publish-pypi.yml on BaezFJ/MacroSignage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
macrosignage-0.2.5.tar.gz -
Subject digest:
eb61fa25c6a604a4164579336b917a2d05d7752c4683c3170d7a3b4d0ae2a293 - Sigstore transparency entry: 1457172177
- Sigstore integration time:
-
Permalink:
BaezFJ/MacroSignage@4e9e583cc6b87de72cb14504a9538859a405eb42 -
Branch / Tag:
refs/tags/v0.2.5 - Owner: https://github.com/BaezFJ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@4e9e583cc6b87de72cb14504a9538859a405eb42 -
Trigger Event:
push
-
Statement type:
File details
Details for the file macrosignage-0.2.5-py3-none-any.whl.
File metadata
- Download URL: macrosignage-0.2.5-py3-none-any.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7228a75ef86f9abd4ce3b0c8a6495434b80aa272c9a6c6a773a2dfbb20cceaf2
|
|
| MD5 |
02369b405753f701d31f6ce114e889f6
|
|
| BLAKE2b-256 |
b4d4f281e355108336cf94fb44e4fe40fe465b324d37c5f9e44cd25921e060dc
|
Provenance
The following attestation bundles were made for macrosignage-0.2.5-py3-none-any.whl:
Publisher:
publish-pypi.yml on BaezFJ/MacroSignage
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
macrosignage-0.2.5-py3-none-any.whl -
Subject digest:
7228a75ef86f9abd4ce3b0c8a6495434b80aa272c9a6c6a773a2dfbb20cceaf2 - Sigstore transparency entry: 1457172519
- Sigstore integration time:
-
Permalink:
BaezFJ/MacroSignage@4e9e583cc6b87de72cb14504a9538859a405eb42 -
Branch / Tag:
refs/tags/v0.2.5 - Owner: https://github.com/BaezFJ
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@4e9e583cc6b87de72cb14504a9538859a405eb42 -
Trigger Event:
push
-
Statement type: