A sleek, modern Twitch highlights and live stream viewer built with vanilla JavaScript
Showcasing epic gaming moments and memorable clips from Beardlands live streams
๐ฌ View Clips โข ๐ด Watch Live โข ๐บ Twitch Channel โข ๐ Report Bug
|
|
| Key | Action |
|---|---|
| R or Space | Load random clip |
| โ | Next clip |
| โ | Previous clip |
| T | Toggle/Load random clip |
| Esc | Close share modal |
- Modern web browser with JavaScript enabled
- Internet connection for Twitch API and embeds
-
Clone the repository
git clone https://github.com/beardlyness/tv.beard.gg.git cd tv.beard.gg -
Open in browser
# Simply open index.html in your preferred browser # Or use a local server (recommended) python -m http.server 8000 # Then visit http://localhost:8000
Alternative server options:
# Node.js npx http-server -p 8000 # PHP php -S localhost:8000
-
Configure (Optional)
- Update Twitch API credentials in
js/clips.jsif needed - Modify the broadcaster name to fetch clips from a different channel
- Update Twitch API credentials in
tv.beard.gg/
โ
โโโ ๐ index.html # Main clips showcase page
โโโ ๐ live.html # Live stream viewer page
โโโ ๐ README.md # Project documentation
โ
โโโ ๐ css/
โ โโโ twitch.css # Complete theme and styling
โ
โโโ ๐ js/
โ โโโ clips.js # Clip player & share modal logic
โ
โโโ ๐ images/
โโโ media/ # Favicons and icons
The project uses the Twitch Helix API to fetch clips. Configuration is in js/clips.js:
const TWITCH_CLIENT_ID = 'your_client_id';
const TWITCH_CLIENT_SECRET = 'your_client_secret';
const BROADCASTER_NAME = 'your_channel_name';Update parent domains in the embed URLs to match your hosting:
// In clips.js and live.html
parent=tv.beard.gg&parent=www.tv.beard.gg&parent=localhostThe project uses Twitch's official color scheme:
| Color | Hex | Usage |
|---|---|---|
| Twitch Purple | #9147ff |
Primary brand color, buttons, accents |
| Purple Hover | #772ce8 |
Hover states |
| Purple Light | #a970ff |
Links, text highlights |
| Dark Base | #0e0e10 |
Main background |
| Dark Alt | #18181b |
Card backgrounds |
| Text Primary | #efeff1 |
Main text color |
| Text Muted | #808086 |
Secondary text |
- Pure Vanilla JavaScript - No frameworks, no dependencies
- Modern CSS3 - Custom properties, flexbox, grid, animations
- Semantic HTML5 - Accessible markup with ARIA labels
- Twitch Helix API - OAuth 2.0 client credentials flow
- Clipboard API - Modern copy-to-clipboard functionality
- ๐ฏ Zero Dependencies - Lightweight and fast
- โฟ Accessibility First - Keyboard navigation, screen reader support
- ๐ฑ Mobile Responsive - Looks great on any device
- ๐จ Brand Consistent - Authentic Twitch design language
| Browser | Version | Status |
|---|---|---|
| Chrome/Edge (Chromium) | 90+ | โ Fully Supported |
| Firefox | 88+ | โ Fully Supported |
| Safari | 14+ | โ Fully Supported |
| Opera | 76+ | โ Fully Supported |
| Mobile (iOS/Android) | Latest | โ Fully Supported |
Note: Modern browsers with ES6+ support required
# Serve with Python
python -m http.server 8000
# Or with Node.js
npx http-server -p 8000
# Or with PHP
php -S localhost:8000- Indentation: 2 spaces
- Quotes: Single quotes for JS, double for HTML
- Naming: camelCase for JS, kebab-case for CSS
- Comments: JSDoc style for functions
- Move credentials to backend - Use a server-side proxy
- Implement rate limiting - Protect against API abuse
- Use environment variables - Never commit secrets to version control
- Add CORS protection - Restrict API access to your domain
This project is licensed under the GPL-3.0 License.
- โ Commercial use allowed
- โ Modification allowed
- โ Distribution allowed
โ ๏ธ Must disclose sourceโ ๏ธ Must include licenseโ ๏ธ Same license required for derivatives
Contributions are welcome! Here's how you can help:
- Fork the repository
- Create a feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- ๐ฏ Add clip categories/filtering
- ๐ Implement search functionality
- ๐ Add view/popularity stats
- ๐ญ Multiple streamer support
- ๐ Light/dark theme toggle
- ๐ Live stream notifications
- Twitch - For the amazing platform and API
- Google Fonts - Open Sans, Raleway, Droid Sans Mono
- Shields.io - Beautiful badges for README
- Community - All the awesome viewers and supporters
- Total Lines of Code: ~1,500+
- Files: 4 main files (HTML, CSS, JS)
- Animations: 10+ custom CSS keyframes
- API Endpoints: 3 Twitch Helix endpoints
- Responsive Breakpoints: 3 (1200px, 768px, 480px)
- Keyboard Shortcuts: 5 commands
- Dynamic clip loading from Twitch API
- Live stream embed page
- Share functionality with modal
- Keyboard navigation shortcuts
- Responsive design for all devices
- Custom SVG animations
- Backend API proxy for credentials
- Clip search and filtering
- Favorite clips system (localStorage)
- Stream schedule integration
- Multi-streamer support
- User authentication
- Clip playlists
- Comment system integration
- Analytics dashboard
- PWA support with offline mode
Last Updated: November 2025