A beautifully simple sports dashboard following the CALM principle - instantly scannable, elegantly informative, and completely automated.
SportSync is a static sports dashboard that answers one question perfectly: "What sports are happening when?"
- ๐ Crystal clear time display with Norwegian timezone (24-hour format)
- ๐ฏ CALM design - readable by grandparents, loved by tech users
- ๐ Fully automated - fresh data every 6 hours via GitHub Actions
- ๐ฑ Mobile-first responsive design
- ๐ Zero maintenance once deployed
- Fork this repository
- Enable GitHub Pages: Settings โ Pages โ Deploy from
/docsfolder - Visit your dashboard:
https://yourusername.github.io/SportSync/ - Done! Data updates automatically every 6 hours
git clone https://github.com/chaerem/SportSync.git
cd SportSync
npm run dev
# Open http://localhost:8000See it in action: chaerem.github.io/SportSync
| Sport | Data Source | Coverage |
|---|---|---|
| โฝ Football | ESPN API | Premier League, La Liga, Eliteserien |
| ๐พ Tennis | ESPN API | ATP, WTA, Grand Slams |
| ๐๏ธ Golf | ESPN API | PGA Tour, DP World Tour, Majors |
| ๐๏ธ Formula 1 | ESPN Racing API | Full race calendar + practice/qualifying |
| โ๏ธ Chess | Curated Data | Major tournaments, Norwegian focus |
| ๐ฎ Esports | HLTV API | CS2 competitions (FaZe/rain focus) |
SportSync is designed to be instantly scannable without overwhelming users:
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ TODAY ๐ข FOOTBALL โ โ Day + Sport Badge
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 19:45 โ โ Large, clear time
โ โ
โ Arsenal vs Manchester City โ โ Event title
โ Premier League โข Emirates Stadium โ โ Competition & venue
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Perfect for everyone:
- Grandparents: Large text, obvious controls, zero confusion
- Tech users: Efficient scanning, comprehensive data
- Mobile users: Touch-friendly, readable on any screen
- Quick checks: Essential info visible at a glance
All events show in Norwegian time (Europe/Oslo) using 24-hour format:
- Today: "TODAY 19:45"
- Tomorrow: "TOMORROW 14:30"
- This week: "FRIDAY 16:00"
- Future: "SUN, DEC 15 12:30"
GitHub Actions (every 6 hours)
โ
Fetch fresh sports data from APIs
โ
Generate unified events.json + individual sport files
โ
Commit to repository โ GitHub Pages deploys
โ
Users see updated dashboard instantly
docs/ # GitHub Pages root
โโโ index.html # Main dashboard (all-in-one file)
โโโ js/
โ โโโ simple-dashboard.js # CALM dashboard controller
โ โโโ sports-api.js # API integration layer
โโโ data/ # Auto-generated by GitHub Actions
โ โโโ events.json # โญ Unified events feed (main data source)
โ โโโ events.ics # Calendar export
โ โโโ football.json # Per-sport source files
โ โโโ tennis.json
โ โโโ golf.json
โ โโโ f1.json
โ โโโ chess.json
โ โโโ esports.json
โ โโโ meta.json # Update timestamps
โโโ sw.js # Service worker for offline support
scripts/ # Data fetching & processing
โโโ fetch/ # Modular API fetchers
โ โโโ football.js
โ โโโ tennis.js
โ โโโ golf.js
โ โโโ f1.js
โ โโโ chess.js
โ โโโ esports.js
โโโ config/ # Curated configs
โ โโโ chess-tournaments.json
โ โโโ norwegian-chess-players.json
โโโ build-events.js # Creates unified events.json
โโโ build-ics.js # Generates calendar export
โโโ validate-events.js # Data integrity checks
.github/workflows/
โโโ update-sports-data.yml # Automation pipeline
The entire system runs serverlessly using only GitHub infrastructure:
- GitHub Actions trigger every 6 hours (00:00, 06:00, 12:00, 18:00 UTC)
- Node.js scripts fetch fresh data from ESPN, HLTV, and curated sources
- Unified events.json gets generated with all upcoming events sorted chronologically
- Calendar export (.ics) created for external calendar apps
- Auto-commit pushes updated data to repository
- GitHub Pages instantly deploys the updated dashboard
The dashboard loads only one file (events.json) for maximum performance:
- Cached data first - instant loading from GitHub CDN
- Graceful fallback - handles API outages seamlessly
- Offline support - service worker caches everything
- Minimal JavaScript - <10KB total, works on any device
npm run dev # Start local development server
npm run build # Fetch data + build events + calendar
npm run test # Validate data integrity
npm run clean # Remove all generated data files
npm run refresh # Clean + full rebuildnpm run update:data # Fetch fresh API data
npm run build:events # Generate unified events.json
npm run build:calendar # Create calendar export (.ics)
npm run validate:data # Check data integrity- Create fetcher: Add
scripts/fetch/newsport.js - Update pipeline: Import in
scripts/fetch/index.js - Add to dashboard: Update sport badges in
docs/index.html - Test locally:
npm run refresh
Edit sport priorities and Norwegian focus:
- Chess tournaments:
scripts/config/chess-tournaments.json - Norwegian players:
scripts/config/norwegian-chess-players.json - API endpoints: Individual fetcher files in
scripts/fetch/
- โ Free hosting
- โ Automatic updates
- โ Custom domain support
- โ Global CDN
- Netlify: Connect your GitHub repo for auto-deploys
- Vercel: Import project, deploy from
/docsfolder - Cloudflare Pages: GitHub integration with edge performance
SportSync generates a standard .ics calendar file at /docs/data/events.ics:
- Subscribe in any calendar app (Google Calendar, Apple Calendar, Outlook)
- Auto-updates every 6 hours with fresh sports events
- Includes participants for chess tournaments and team sports
- Norwegian timezone for accurate local times
In a world of cluttered sports apps and overwhelming dashboards, SportSync returns to simplicity:
- No notifications - just information when you need it
- No accounts - works instantly for everyone
- No premium features - everything is free and open source
- No bloat - pure HTML/CSS/JS, works on any device
- No maintenance - set it and forget it
Perfect for checking your daily sports schedule over morning coffee or planning your weekend viewing. โ๏ธ๐
We welcome contributions that maintain the CALM principle:
- Fork the repository
- Keep changes simple and user-focused
- Test on both mobile and desktop
- Ensure accessibility and readability
- Create a Pull Request with clear description
MIT License - feel free to create your own sports dashboard!
Built with โค๏ธ for sports fans who value simplicity over complexity.