Jocs web
42 Secret Horse Race
Joc web competitiu tipus cursa de cavalls per a 42 Barcelona: pooling de dades, ranking, metriques i OAuth.
Context
Joc web competitiu tipus cursa de cavalls dissenyat per a la comunitat de 42 Barcelona. Utilitza l'API OAuth de 42 per autenticacio i accés a dades dels usuaris, amb un sistema de ranking en temps real i pooling de dades periodiques.
Que fa
- Autenticacio OAuth 42: login segur amb l'API oficial de 42 School
- Pooling de dades: recollida periodica de dades dels usuaris des de l'API de 42
- Sistema de ranking: leaderboard en temps real amb metriques i estadistiques
- Interficia web: dashboard interactiu amb Jinja2, HTMX per actualitzacions parials sense recarrega
- API REST: endpoints per accedir a dades del ranking i metriques programaticament
- Scheduler: tasques periodiques per actualitzar dades i recalcular rankings
Arquitectura
FastAPI backend amb PostgreSQL via SQLAlchemy, templates Jinja2 amb HTMX per interactivitat, i Alpine.js per logica client-side lleugera. Desplegat amb Docker.
Dificultats principals
- OAuth 42: flux d'autenticacio amb tokens que caducen, refresh tokens i rate limits de l'API
- Pooling eficient: obtenir dades de molts usuaris sense saturar l'API de 42
- Ranking en temps real: recalcular posicions quan es produeixen canvis de forma eficient
- Concurrencia: multiples usuaris accedint simultaniament al ranking
Solucions
- Implementacio completa del flux OAuth 42 amb gestion de tokens i refresh
- Sistema de pooling amb intervals configurables i tractament d'errors amb retry
- Ranking calculat amb queries optimitzades de PostgreSQL
- Async per tot el pipeline de dades per maximitzar throughput
Aprenentatges
- L'OAuth 2.0 te molts matisos quan tractes amb APIs que tenen rate limits estrictes
- HTMX ofereix interactivitat rapsida sense la complexitat d'un framework SPA
- PostgreSQL es superior a SQLite per a rankings amb consultes complexes i concurrencia