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
Release files for MacroSignage 0.2.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| macrosignage-0.2.5.tar.gz | 2.7 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| macrosignage-0.2.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 5.4 MB
Release files / macrosignage-0.2.5.tar.gz
| Download URL | macrosignage-0.2.5.tar.gz |
|---|---|
| Size | 2.7 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
eb61fa25c6a604a4164579336b917a2d05d7752c4683c3170d7a3b4d0ae2a293
|
|
BLAKE2b-256 checksum How to use checksums |
0d3b1f81ada7a4a91cb05192dfd11950428275a5f14fc7d75fa3ee9679cae4b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 7, 2026.
Transparency logRelease files / macrosignage-0.2.5-py3-none-any.whl
| Download URL | macrosignage-0.2.5-py3-none-any.whl |
|---|---|
| Size | 2.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7228a75ef86f9abd4ce3b0c8a6495434b80aa272c9a6c6a773a2dfbb20cceaf2
|
|
BLAKE2b-256 checksum How to use checksums |
b4d4f281e355108336cf94fb44e4fe40fe465b324d37c5f9e44cd25921e060dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 7, 2026.
Transparency log