Projet interne — Nosoli

Une application développée pour les équipes du groupe Nosoli : chacun pronostique le score des matchs de l'équipe de France, un classement en temps réel départage les pronostiqueurs.

Voir le site (nouvel onglet)
Mes pronostics : points, classement, match à venir

Stack technique

  • React Router 7

    Rendu SSR en framework mode, loaders/actions par route.

  • Drizzle ORM + better-sqlite3

    Accès typé à une base SQLite, migrations générées par drizzle-kit.

  • Sessions cookie + bcryptjs

    Authentification par mot de passe hashé, sans dépendance externe.

  • SCSS

    Atomic design (atoms/molecules/organisms) et méthodologie BEM.

Connexion, sur mobile

Points techniques

  • Scoring à 3 niveaux

    3 points pour un score exact, 2 points si l'écart de buts est correct (le résultat l'est donc forcément), 1 point pour un résultat juste seul, 0 sinon.

  • Scheduler adaptatif

    Le service ajuste lui-même la fréquence de ses sondages : resserrés sur les fenêtres de fin de match, en veille le reste du temps, avec un rafraîchissement quotidien à minuit (heure de Paris) pour les nouvelles phases du tournoi.

  • Fuseaux horaires des stades

    Les 16 stades du Mondial 2026 (Mexique, États-Unis, Canada) sont mappés à leur fuseau IANA. Les horaires de l'API externe sont convertis en UTC puis affichés à l'heure de Paris.

  • Pronostics masqués + filet admin

    Les pronostics restent cachés jusqu'au coup d'envoi pour éviter toute copie, puis sont révélés et classés après le match. Un admin peut corriger un score en cas d'erreur de l'API externe.

Déploiement

Hébergé sur mon VPS, en HTTPS avec redémarrage automatique et déploiement continu. La base SQLite est sauvegardée chaque nuit.