Real-time MLB scores on a Pimoroni Inky e-ink display with auto-refresh and team news screensaver.
- Live MLB Scores - Real-time scores with on-base and out displays
- Team News Screensaver - Displays team news when no games are scheduled
- Clean Layout - Optimized for 800x480 e-ink displays, up to 15 games in a 3x5 grid
- Auto-refresh - Configurable refresh interval with power-saving logic
- Web Settings Panel - Configure teams, timezone, theme, and more from any browser
- WiFi Management - Scan and switch WiFi networks from the settings page
- Local Network Discovery - Access at
scoreboard.local:5001via mDNS
- Raspberry Pi Zero 2 W - Must be the Zero 2 W (with WiFi). The original Zero is too slow.
- Inky Impression 7.3" - 800x480, 7-color e-ink display. Connects directly to the GPIO header.
- MicroSD Card - 16GB minimum, Class 10 or better
- Micro USB Power Supply - 5V 2.5A minimum
The Raspberry Pi Setup Guide walks through everything from flashing the SD card to a working scoreboard.
If you already have a booted Pi with SSH access:
sudo apt update && sudo apt install -y git
git clone https://github.com/pdugan20/e-ink-scoreboard.git
cd e-ink-scoreboard
./scripts/setup.sh # Install, configure, and enable services
sudo reboot # Apply hardware changes, scoreboard starts automaticallyAfter reboot, the scoreboard is accessible at http://scoreboard.local:5001.
Open http://scoreboard.local:5001/settings from any browser on your network
to configure teams, timezone, theme, refresh interval, WiFi, and more.
All settings changes take effect on the next display refresh. No SSH required.
| Guide | Description |
|---|---|
| Raspberry Pi Setup | Complete setup from SD card to working scoreboard |
| Troubleshooting | Common issues and solutions |
| Services | Systemd service architecture and management |
| API Reference | Full API endpoint documentation |
| API Examples | Curl examples and sample responses |
Clone the repo and set up a local dev environment on Mac:
git clone https://github.com/pdugan20/e-ink-scoreboard.git
cd e-ink-scoreboard
python3 -m venv venv
source venv/bin/activate
pip install -r requirements-dev.txt
playwright install chromiumStart the dev server and preview the display:
python src/dev_server.py --port 5001 # Start web server
python src/eink_display.py --once # Take screenshot (in another terminal)- Live data: http://localhost:5001/display
- Test data: http://localhost:5001/display?test=true
make install-hooks # Install pre-commit hooks
make check # Run all linters and formatters
make test # Run all tests (Python + JavaScript)
make test-coverage # Run with coverage reportsSee CONTRIBUTING.md for code style, testing conventions, and CI requirements.
src/ # Core application
├── api/ # API endpoints and data fetching
├── display/ # Display controllers
├── services/ # Business logic
├── assets/logos/ # Team and league logos
├── static/ # CSS, JS, static assets
└── test-data/ # Test game data
tests/ # Test suite (unit, integration, JS)
scripts/ # Pi installation and setup scripts
docs/ # Documentation
| Guide | Description |
|---|---|
| Testing | Test patterns, conventions, and running tests |
| Logging Style Guide | Log message formatting conventions |
| Timeout Architecture | Screenshot timeout strategy deep-dive |