Jeu de paper-trading sur la Bourse de Tunis (BVMT) : cours reels de 77 valeurs, classement live, defis. React + TypeScript.
# Souk · Bourse de Tunis 🇹🇳
Jeu de **trading sur cours réels** de la Bourse de Tunis (BVMT). Tu démarres
toujours avec **100 dinars**, tu construis ton portefeuille parmi les **77 valeurs
cotées** (BIAT, SFBT, Délice, Poulina, One Tech…), tu débloques des **défis** et tu
grimpes dans le **classement live**.
> Jeu de simulation — aucun argent réel n'est engagé.
## Ce qui est réel vs simulé
| Élément | Source |
|---|---|
| Cours, variation, +haut/+bas, volume, capitaux, carnet (bid/ask) | **API officielle BVMT** (`bvmt.com.tn`), en direct |
| Noms, secteurs, noms arabes des sociétés | Référentiel BVMT (intégré) |
| Indice « TUNINDEX · indicatif » | Calculé côté client (pondéré), **indicatif** |
| Portefeuille, ordres, P&L | Le tien, simulé |
| Rivaux du classement (mode local) | IA générées |
La séance BVMT est ouverte **en semaine de 9 h 00 à 14 h 10 (heure de Tunis)** :
les cours bougent en direct pendant ces horaires. En dehors, ce sont les cours de
clôture réels (le jeu reste jouable). Si le flux officiel est injoignable, l'appli
bascule sur une simulation clairement signalée pour rester utilisable.
## Démarrer
```bash
npm install
npm run dev #
localhost
```
Les cours passent par `/api/quotes` : en dev via le proxy Vite, en production via
la **Cloudflare Pages Function** `functions/api/quotes.js` (mĂŞme chemin, pas de CORS).
```bash
npm run build # typecheck + build (dist/)
npm run preview
```
## Comptes & classement partagé (optionnel)
Par défaut, le jeu tourne en **mode local** : compte stocké sur l'appareil +
rivaux IA pour un classement vivant. Aucune configuration requise.
Pour un **classement réellement partagé entre joueurs** (temps réel, multi-appareil)
via Supabase :
1. Copier `.env.example` → `.env` et renseigner `VITE_SUPABASE_URL` /
`VITE_SUPABASE_ANON_KEY`.
2. Exécuter `supabase/schema.sql` dans l'éditeur SQL du projet Supabase.
L'appli détecte les clés automatiquement et bascule en classement partagé.
## Logos des so …