Sports iCal Server — Agregació Esportiva & Calendaris Dinàmics
Sistema d'agregació de dades esportives, generació de calendaris dinàmics i alertes push en temps real compatible amb Apple Calendar, Google Calendar i Outlook.
📌 Visió General
Sports iCal Server neix per resoldre un problema habitual dels aficionats a l'esport: la fragmentació de calendaris oficials i la manca d'actualització instantània quan hi ha canvis d'horaris, dates o canals de televisió. El projecte ofereix una solució integral autoallotjada que recull, unifica i serveix horaris, resultats i calendaris subscrivibles personalitzats.
🚀 Característiques Clau
Calendaris iCal (.ics) Intel·ligents
Subscripció directa via protocol webcal://. Permet filtrar partits per equip i seleccionar només les competicions que interessen (per exemple, LaLiga + Champions League), o bé subscriure's a lligues completes de forma directa.
Resultats i Marcadors en Directe
Interfície web interactiva per seguir en directe l'estat dels partits, resultats, classificacions, seus/pavellons i canals d'emissió de televisió en temps real.
Suport Multiesportiu (Més de 12 competicions)
- ⚽ Futbol: LaLiga EA Sports, UEFA Champions League, Europa League, Premier League, Bundesliga, Serie A.
- 🏀 Bàsquet: Liga Endesa (ACB), EuroLeague, EuroCup, Basketball Champions League (BCL), NBA.
- 🏈 Futbol Americà: NFL.
Notificacions Push Mòbils
Integració amb ntfy.sh per avisar de manera proactiva i immediata a dispositius iOS i Android si un partit canvia d'hora, data o queda ajornat.
Sincronització en Segon Pla
Tasques programades periòdiques (APScheduler) per mantenir les dades sempre actualitzades sense bloquejar la resposta ni el rendiment de l'usuari.
💡 Reptes Tècnics Superats
- Normalització de dades heterogènies: Integració i estandardització de formats provinents de diferents APIs i fonts externes (formats de data, fusos horaris complexos amb
pytzi tractament d'estats de partits). - Generació eficient de fitxers .ics: Optimització de la sortida iCal perquè qualsevol client (Google Calendar, iOS, Outlook) refresqui els canvis de forma transparent i sense inconsistències d'horaris.
- Detecció diferencial de canvis d'estat: Lògica de comparació diferencial entre cicles de sincronització per disparar alertes push exclusivament quan es detecten modificacions rellevants d'horari o estat del partit.
🛠️ Stack Tecnològic
| Àrea | Tecnologies |
|---|---|
| Backend | Python 3, FastAPI, SQLAlchemy, Pydantic, APScheduler |
| Extracció & Dades | HTTPX, BeautifulSoup4, LXML, icalendar |
| Frontend / UI | Jinja2 templates, HTML5, CSS3 responsive, JavaScript vanilla |
| Infraestructura & DevOps | Docker, Docker Compose, Caddy (gestió automàtica de certificats SSL / TLS), SQLite |