A real-time, AI-powered leaderboard of GitHub repository activity with live play-by-play commentary! Watch as repositories compete for the top spots with an animated sportscaster announcing each event.
- Real-Time Monitoring: Monitors the latest GitHub public events globally
- Configurable Scope: Watch all of GitHub, specific organizations, repositories, or users
- Event Filtering: Filter by event types (Push, PR, Issues, Stars, Forks, Releases)
- Activity Scoring: Repositories ranked by weighted activity scores
- Trending Indicators: See which repos are climbing or falling in the rankings
- Real-Time Stats: Track total events, contributors, and activity scores
- Animated Transitions: Beautiful animations when repos change positions
- Sports-Style Announcements: AI-generated play-by-play commentary for each event
- Configurable AI Backend: Connect to OpenAI or any compatible API
- Fallback Templates: Built-in engaging commentary when AI is unavailable
- Multiple Models: Support for gpt-4o-mini, gpt-4o, o3-mini, and gpt-3.5-turbo
- Sound Effects: Unique audio cues for each event type (Push, PR, Star, Fork, etc.)
- Text-to-Speech: Have the AI commentary read aloud by the browser
- Mute Controls: Toggle sound effects and TTS independently
- All Activity: See everything happening in real-time
- 🔥 Hot: High-impact events (Pushes, PRs, Releases)
- 💻 Code: Code-related activity (Pushes, PRs, Creates, Deletes)
- 👥 Social: Community engagement (Stars, Forks, Issues, Comments)
- Animated Sportscaster: SVG robot that "announces" each event
- TV Screen Interface: Retro-inspired broadcast display
- Glassmorphic Cards: Modern, beautiful UI components
- Dark Theme: Easy on the eyes for 24/7 streaming
- Responsive Design: Works on desktop, tablet, and mobile
- Monitoring Scope: Global, Organization, Repository, or User
- Preset Channels: Quick access to popular tech categories (Web, AI/ML, DevOps)
- Refresh Speed: Adjustable from 5-60 seconds
- Auto-Protect: Automatic rate limit throttling
- Local Storage: Settings persist across sessions
Visit the live page at: https://owasp-blt.github.io/Github_Sportscaster/
The page fetches data from the GitHub Events API and processes it in real-time:
- Event Collection: Polls GitHub API for public events
- Smart Processing: Filters duplicates, categorizes events
- Activity Scoring: Weights events by type and recency
- Leaderboard Updates: Ranks repositories by activity score
- AI Commentary: Generates sports-style announcements
- Live Rendering: Animates changes in real-time
| Event Type | Weight |
|---|---|
| Release | 10 |
| Pull Request | 5 |
| Fork | 4 |
| Push | 3 |
| Issues | 2 |
| Create | 2 |
| Watch (Star) | 1 |
| Comments | 1 |
- Single Page App: HTML + CSS + JavaScript
- No Build Required: Works directly from static hosting
- Modular Design: Separate classes for SoundEffects, TTS, AI Commentary, and Main Sportscaster
index.html- Main UI structure and stylingsportscaster.js- Core JavaScript functionality
- GitHub Events API: Real-time public events
- Conditional Requests: Uses ETags to minimize API calls
- Rate Limit Protection: Auto-throttling when limits are low
- Demo Mode: Fallback to simulated data if API is unavailable
Configure your own AI API for commentary:
- Click the ⚙️ Settings button
- Enter your API URL (e.g.,
https://api.openai.com/v1/chat/completions) - Enter your API key
- Select your preferred model
- Enable AI Commentary with the 🤖 button
Simply open the page and watch! The sportscaster will:
- Update every 10 seconds (configurable)
- Show new repositories as they appear
- Highlight repos with new activity
- Announce events with AI commentary (when enabled)
- Open Settings (⚙️)
- Set Scope to "Organization"
- Enter org name (e.g., "facebook")
- Click "Apply Configuration"
- Open Settings (⚙️)
- Set Scope to "Repository"
- Enter repo (e.g., "facebook/react")
- Click "Apply Configuration"
- Open Settings (⚙️)
- Enter your OpenAI API URL
- Enter your API key
- Select a model
- Click "Apply Configuration"
- Toggle the 🤖 button to enable
To run locally:
# Clone the repository
git clone https://github.com/OWASP-BLT/Github_Sportscaster.git
cd Github_Sportscaster
# Serve the files (any HTTP server works)
python3 -m http.server 8080
# Open http://localhost:8080 in your browser- API keys are stored in browser localStorage
- No server-side processing of credentials
- All API calls made directly from browser
- Consider using environment-restricted API keys
This project is open source and available under the MIT License.