Application communautaire de signalement en temps reel pour les transports parisiens
Tube permet aux usagers du metro parisien de signaler et consulter en temps reel les incidents, controles, travaux et pannes sur le reseau. Chaque signalement est valide par la communaute via un systeme de votes, et les utilisateurs gagnent de l'XP en contribuant.
Carte interactive - Visualisez les signalements geolocalises sur les 302 stations du metro parisien avec Google Maps et clustering de marqueurs.
Signalements communautaires - Creez et votez sur 4 types d'incidents : controles, incidents, maintenance et travaux. Chaque signalement expire automatiquement.
Donnees officielles IDFM - Les perturbations officielles RATP/IDFM sont affichees en temps reel via l'API PRIM Ile-de-France Mobilites.
Gamification - Gagnez de l'XP en signalant, votant et en vous connectant quotidiennement. 5 niveaux (Novice a Legende), badges et classement communautaire.
Systeme social - Ajoutez des amis, importez vos contacts, et partagez votre trajet en direct avec vos proches.
Calcul d'itineraire - Trouvez le meilleur chemin avec detection de la station la plus proche et temps d'attente.
Theme clair/sombre - Interface adaptative avec detection des preferences systeme.
# Cloner le repo
git clone https://github.com/votre-username/tube.git
cd tube
# Installer les dependances
npm install
# Configurer les variables d'environnement
cp .env.example .env
# Remplir .env avec vos cles (voir section Configuration)
# Lancer l'app
npx expo startScannez le QR code avec Expo Go pour voir l'app sur votre telephone.
Copiez .env.example en .env et renseignez vos cles :
| Variable | Description | Ou l'obtenir |
|---|---|---|
EXPO_PUBLIC_SUPABASE_URL |
URL de votre projet Supabase | Supabase Dashboard > Settings > API |
EXPO_PUBLIC_SUPABASE_ANON_KEY |
Cle publique (anon) Supabase | Supabase Dashboard > Settings > API |
EXPO_PUBLIC_IDFM_API_KEY |
Cle API PRIM IDFM | prim.iledefrance-mobilites.fr |
EXPO_PUBLIC_FIREBASE_* |
Configuration Firebase | Firebase Console |
Appliquez les migrations SQL dans l'ordre depuis supabase/migrations/ dans l'editeur SQL de votre projet Supabase. Puis optionnellement :
# Charger des donnees de test
npm install dotenv
node supabase/seed.js| Couche | Technologies |
|---|---|
| Frontend | React Native 0.81, Expo SDK 54, React Navigation 6 |
| UI | React Native Paper, Vector Icons, Reanimated |
| Carte | react-native-maps (Google Maps) |
| Backend | Supabase (Auth + PostgreSQL + PostGIS) |
| API externe | PRIM Ile-de-France Mobilites (perturbations, itineraires) |
| Notifications | Expo Notifications + Firebase Cloud Messaging |
| State | React Context API + AsyncStorage |
src/
├── screens/ # 16 ecrans (Map, Auth, Profil, Amis, Leaderboard...)
├── components/ # Composants reutilisables (ReportCard, XPBar, FilterBar...)
├── services/ # Couche API (auth, reports, friends, IDFM, notifications...)
├── context/ # Etat global (AppContext, ThemeContext)
├── config/ # Clients Supabase & Firebase
├── data/ # 302 stations de metro avec coordonnees GPS
├── theme/ # Design system (couleurs, niveaux XP, types de signalement)
└── utils/ # Helpers et calcul d'itineraire
supabase/
├── migrations/ # 12 fichiers SQL (schema, RLS, fonctions)
└── seed.js # Script de donnees de test
docs/ # Documentation detaillee par fonctionnalite
| Table | Description |
|---|---|
users |
Profils, XP, badges, statistiques, preferences |
reports |
Signalements avec coordonnees PostGIS, votes, expiration |
friendships |
Relations d'amitie bidirectionnelles |
friend_requests |
Demandes d'amis en attente |
active_trips |
Trajets en cours avec itineraires |
live_shares |
Sessions de partage de position en direct |
Toutes les tables utilisent Row Level Security (RLS) pour la protection des donnees.
| Niveau | XP requis | Badge |
|---|---|---|
| Novice | 0 | Debutant |
| Habitue | 100 | Bronze |
| Confirme | 500 | Argent |
| Expert | 1 500 | Or |
| Legende | 4 000 | Diamant |
Actions recompensees : creation de signalement (+15 XP), vote (+3 XP), validation communautaire (+30 XP), connexion quotidienne (+10 XP), streak 7 jours (+50 XP).
npx expo start # Demarrer le serveur de dev
npx expo start -c # Demarrer avec cache vide
npx expo start --tunnel # Mode tunnel (reseau distant)
npx expo doctor # Verifier la compatibilite des dependances
node supabase/seed.js # Injecter les donnees de testUne documentation detaillee est disponible dans le dossier docs/ :
- Getting Started - Installation et troubleshooting
- Carte & Navigation - Carte interactive et itineraires
- Signalements - Creation et votes
- Systeme social - Amis et partage de trajet
- Gamification - XP, niveaux et badges
- Authentification - Auth Supabase
- Base de donnees - Schema PostgreSQL et migrations
- API IDFM - Integration donnees officielles
Voir aussi ONBOARDING.md pour un guide de contribution rapide (10 min).
- Forkez le repo
- Creez votre branche (
git checkout -b feature/ma-fonctionnalite) - Commitez (
git commit -m 'feat: ajout de ma fonctionnalite') - Pushez (
git push origin feature/ma-fonctionnalite) - Ouvrez une Pull Request
Ce projet est un MVP de demonstration. Contactez les mainteneurs pour toute utilisation commerciale.
Tube - Ou vous allez, on y est
