Aller au contenu

En production

ZeroStake — simulateur de paris sportifs 100 % fictif

Les vraies cotes des vrais bookmakers, un portefeuille entièrement fictif et un classement entre amis. Toute la mécanique du pari sportif, sans argent réel et sans risque financier.

Nature
Produit en ligne
Statut
En production
Stack
Next.jsNestJSPrismaRedisTemps réelDataSaaS
Voir le site en ligne(nouvel onglet)

ZeroStake reproduit fidèlement l'expérience d'un sportsbook — cotes live, tickets combinés, groupes, classement — en supprimant la seule chose qui pose problème : l'argent réel. La mention FICTIF — aucun argent réel est affichée partout, et tout langage addictif est interdit par conception.

Ce que fait la plateforme

  • Cotes réelles en direct via The Odds API, sur une douzaine de sports et compétitions, avec règlement automatique des tickets à la clôture des événements.
  • Paris simples et combinés, portefeuille fictif multi-devises (EUR, USD, BTC, ETH fictifs), remise à zéro à volonté.
  • Groupes privés sur code d'invitation, classement au ROI, pronostics, notifications, succès à débloquer.
  • Analyse IA éducative d'un événement.

Architecture

  • Monorepo pnpm + Turborepo : Next.js 15 (App Router, React 19, shadcn/ui), NestJS 11, Prisma 6, PostgreSQL, Redis ; packages/shared pour les schémas Zod, packages/ai-core pour les prompts et le scoring.
  • 34 repositories derrière des interfaces : les contrôleurs sont minces, les services portent le métier, seuls les repositories touchent Prisma.
  • Le portefeuille est un ledger append-only : aucune ligne n'est supprimée, le solde se recalcule. Un portefeuille fictif reste un système comptable — aucune incohérence n'est tolérable.

Ce qui a été difficile

  • Anti-manipulation : les cotes d'un ticket sont relues en base au moment du pari, jamais prises du client ; le débit du portefeuille et la création du ticket se font dans une seule transaction Prisma pour fermer la fenêtre TOCTOU sur le solde.
  • Derrière Cloudflare, l'IP réelle du visiteur n'est pas dans X-Forwarded-For mais dans CF-Connecting-IP : sans réécriture conditionnée aux plages Cloudflare, le rate limit et la détection de brute-force comptaient tout Internet comme un seul client.

Sécurité et exploitation

argon2id, refresh tokens hachés SHA-256 avec rotation, cookies HttpOnly strict, Helmet, allowlist CORS, audit logs. 68 tests unitaires Vitest et scénarios Playwright. Contrôle d'âge 18+ et affichage systématique du caractère fictif : sans mise ni gain réels, la plateforme ne relève pas de la réglementation des jeux d'argent, mais le sujet est trop sensible pour s'en remettre au seul cadre juridique.

Installation sur votre infrastructure

Cette application peut être déployée sur votre propre serveur — VPS, cloud privé ou on-premise — en instance dédiée : votre nom de domaine, votre base de données, vos données chez vous. Je prends en charge l'installation, le durcissement du serveur, les sauvegardes, la supervision et la maintenance, ainsi que les adaptations fonctionnelles à votre métier.