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