Audit technique
Sporteo · Lovable · React + TypeScript + Supabase → Next.js + TypeScript + PostgreSQL · dépôt GitHub sporteo/sporteo-web
Écrans audités
12
écrans
Charge totale
33
jours
Failles ouvertes
4
failles
Conservés
25%
des écrans
Écrans
12 écrans sur 12
| Écran | Module | Verdict | Complexité | Charge | Lot |
|---|---|---|---|---|---|
| Réservation d'un créneau | Membre | À réécrire | 4.5 j | 2 | |
| Paiement et remboursement | Membre | À durcir | 3 j | 3 | |
| Profil et abonnement du membre | Membre | Conservé tel quel | 1 j | 4 | |
| Planning du club | Club | À réécrire | 5 j | 2 | |
| Grille tarifaire du club | Club | À durcir | 2 j | 3 | |
| Fichier des membres | Club | À durcir | 2.5 j | 3 | |
| Statistiques de fréquentation | Club | Conservé tel quel | 1.5 j | 4 | |
| Administration des clubs | Back-office | À réécrire | 3 j | 4 | |
| Connexion et rôles | Transverse | À durcir | 3.5 j | 1 | |
| Notifications et e-mails | Transverse | À réécrire | 2.5 j | 5 | |
| Composants d'interface | Transverse | Conservé tel quel | 1.5 j | 1 | |
| Accès mobile | Transverse | À réécrire | 3 j | 5 |
Failles de sécurité
Critique2 failles
Élevé3 failles
Moyen1 faille
Base de données
Couverture RLS (1/8 tables complètes)
1 complète4 partielles3 absentes
| Table | Lignes | RLS | Note |
|---|---|---|---|
clubs | 34 | Partielle | clé de locataire à ajouter |
courts | 186 | Partielle | rattachement au club à contraindre |
slots | 214 800 | Absente | index manquant sur (court_id, starts_at) |
bookings | 143 210 | Partielle | contrainte d'exclusion à poser |
members | 8 420 | Partielle | données personnelles à cloisonner |
pricing_rules | 412 | Absente | écriture ouverte à tous |
payments | 96 540 | Complète | conservée telle quelle |
notifications | 51 300 | Absente | file d'envoi à créer |
clubsPartielle34 lignesclé de locataire à ajouter
courtsPartielle186 lignesrattachement au club à contraindre
slotsAbsente214 800 lignesindex manquant sur (court_id, starts_at)
bookingsPartielle143 210 lignescontrainte d'exclusion à poser
membersPartielle8 420 lignesdonnées personnelles à cloisonner
pricing_rulesAbsente412 lignesécriture ouverte à tous
paymentsComplète96 540 lignesconservée telle quelle
notificationsAbsente51 300 lignesfile d'envoi à créer