
Tech Stack
Next.js
React
Typescript
Firebase
Description
'Ch'hal Daro?' ('What's the score?' in Darija) is a fast live-scores progressive web app with favorite teams and instant goal alerts.
A Backend-For-Frontend (BFF) layer in Next.js normalizes and caches third-party sports APIs, preventing direct browser calls and reducing API overhead.
AI match summaries are generated on demand via Gemini only when a user views a match, preserving quota and minimizing infrastructure costs.
- Backend-For-Frontend (BFF) layer caching and normalizing external live data.
- Real-time Web Push notifications for followed teams and goals.
- Cost-aware AI match recaps generated on-demand with rule-based fallback.
- Fast, installable PWA with dark 'Live Center' user interface.
Behind the project
Challenges
- Shipping a production-ready PWA that stays fast even when third-party sports APIs lag.
- Protecting AI quota while still sending real-time personalized Web Push alerts.
Trade-offs
- Never let the frontend own external API contracts — a BFF layer normalizes once, everything else adapts.
- Polling + cache (SWR) over complex real-time infrastructure — designing for 'live enough,' not perfect.
- AI match summaries generate only when someone actually opens a match, never pre-computed for every game.
Lessons learned
- Expensive features (AI, push) need guards at the API boundary, not hope at the UI layer.
Page Overview & Details
Screenshots



