Portfolio / Sports iCal Server

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.

Python 3 FastAPI SQLAlchemy Pydantic APScheduler iCalendar (.ics) ntfy.sh Docker Caddy Webcal
Inici i Equips Preferits 1/5 · Panell d'Inici & Equips Preferits
Subscripció iCal Webcal 2/5 · Subscripció iCal per Protocol Webcal
Partits i Canals TV 3/5 · Graella de Partits, Horaris i Canals TV
Classificacions 4/5 · Taules de Classificació Multiesport
Marcadors en Directe 5/5 · Marcadors i Seguiment en Temps Real

📌 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 pytz i 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