A web application that displays all your followed Twitch streams in a dynamic grid layout.
140
A Flask-based web application that displays all your followed Twitch streams in a dynamic grid layout. The app automatically checks for stream status changes and refreshes when streamers go live or offline.
Multiple streams with header:

Fullscreen mode (header hidden):

Get Client ID and OAuth Token:
user:read:followsGet Your User ID:
git clone https://github.com/antitux/twitch-tracker.git
cd twitch-stream-tracker
.env file:CLIENT_ID=your_client_id_here
ACCESS_TOKEN=your_access_token_here
USER_ID=your_user_id_here
PARENT_DOMAIN=yourdomain.com
docker-compose -f docker-compose-example.yml up -d
http://localhost:5000 in your browsergit clone https://github.com/yourusername/twitch-stream-tracker.git
cd twitch-stream-tracker
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
export CLIENT_ID=your_client_id_here
export ACCESS_TOKEN=your_access_token_here
export USER_ID=your_user_id_here
export PARENT_DOMAIN=localhost
python app.py
http://localhost:5000 in your browserdocker-compose.yml:
version: '3.8'
services:
twitch-tracker:
image: antitux/twitch-tracker:latest
pull_policy: always
container_name: twitch-tracker
ports:
- "5000:5000"
environment:
# Get these from twitchtokengenerator.com
- CLIENT_ID=YOUR_CLIENT_ID
- ACCESS_TOKEN=YOUR_CLIENT_TOKEN
- USER_ID=YOUR_USER_ID
# The domain the server is available on.
# Use localhost if just running locally.
- PARENT_DOMAIN=localhost
restart: unless-stopped
| Variable | Required | Description |
|---|---|---|
CLIENT_ID | Yes | Your Twitch application Client ID |
ACCESS_TOKEN | Yes | OAuth token with user:read:follows scope |
USER_ID | Yes | Your Twitch user ID |
PARENT_DOMAIN | Yes | Domain where the app is hosted (for Twitch embed) |
| Parameter | Values | Description |
|---|---|---|
hide_header | true, 1, yes | Hides the header bar for fullscreen mode |
https://localhost:5000/?hide_header=true
twitch-tracker/
├── app.py # Main Flask application
├── requirements.txt # Python dependencies
├── Dockerfile # Docker configuration
├── docker-compose.yml # Docker Compose configuration
├── templates/ # Templates
│ ├── base.html # Base template
│ ├── streams.html # Multi-stream view
│ └── no_streams.html # No streams view
└── scripts/ # Helper scripts for running Firefox on Ubuntu Desktop in kiosk mode.
│ └── README.md # Helper Scripts README.md
│ └── firefox_desktop_restart.sh # Restarts Firefox remotely
│ └── firefox_reload.py # Refreshes Firefox via Marionette api
│ └── firefox.desktop # Automatically launches Firefox on boot
│ └── xhost.desktop # Enables remote X11 sessions
└── static/ # Static CSS and Javascript
├── css/ # Static CSS Files
│ ├── streams.css # CSS for when streams are live
│ └── no_streams.css # CSS For when streams are not live
└── js/ # Static Javascript Files
├── streams.js # Javascript for when streams are live
└── no_streams.js # Javascript for when streams are not live
GET /Main page - displays either the streams grid or "no streams" message
GET /api/live-streamsJSON API endpoint that returns current live streams
{
"usernames": ["streamer1", "streamer2", "streamer3"],
"count": 3
}
The app automatically calculates the optimal grid based on stream count:
firefox --kiosk http://localhost:5000/?hide_header=true
firefox --kiosk --new-window http://localhost:5000/?hide_header=true
PARENT_DOMAIN matches the domain you're accessing the app fromPARENT_DOMAIN=localhostexample.com)/api/live-streamsUSER_ID is correctuser:read:follows scopetemplates/ and static/ directories are copied correctlyContributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/AmazingFeature)git commit -m 'Add some AmazingFeature')git push origin feature/AmazingFeature)This project is licensed under the GNU Affero General Public License v3.0 - see the LICENSE file for details.
Copyright © 2026 Antitux Networks LLC
If you encounter any issues or have questions:
Content type
Image
Digest
sha256:3605ed3bd…
Size
50.6 MB
Last updated
4 months ago
docker pull antitux/twitch-tracker