Système de suivi en temps réel des disponibilités ferroviaires via Telegram

Obtenir un billet de train en Ouzbékistan en urgence est peu fiable. Le site officiel est lent, instable sous charge, et les places disparaissent en quelques secondes. Pour les missions à court délai, l’alternative était souvent un marché gris avec des billets revendus à prix élevé.
J’ai conçu et développé Chafouin, un système de monitoring en temps réel des disponibilités qui envoie des alertes instantanées via Telegram—sans compte ni site web.
Les utilisateurs s’abonnent à des trajets et des dates, et reçoivent une notification dès qu’une place devient disponible, contournant à la fois les limites du site officiel et les intermédiaires.
Fonctionnalités principales
- Monitoring en temps réel des disponibilités par trajet
- Alertes instantanées via un bot Telegram
- Système d’abonnement avec filtres (dates, gares, types de trains)
- UX entièrement dans Telegram, sans authentification externe
- Flux d’événements partagé entre bot et API
Résultats clés
- Détection des disponibilités sur 14 gares avec ~30s de latence
- Alertes en temps réel sur des trajets à forte demande
- Contournement des blocages via isolation réseau par route
- Remplacement des workflows manuels et du marché gris par un système automatisé
Architecture
Chafouin est un monorepo TypeScript basé sur des workers de polling distribués :
- Moteur de polling (Node.js)
Surveille les disponibilités par trajet via des workers dédiés exécutés à intervalle fixe - Couche réseau (Tor)
Chaque worker utilise son propre circuit Tor (proxy SOCKS5) pour isoler le trafic et éviter le rate limiting - API & streaming (Server-Sent Events)
Diffusion des mises à jour en temps réel vers plusieurs consommateurs - Bot Telegram (Node.js + Redis)
Gestion des abonnements, interactions utilisateur et envoi des alertes
Points techniques clés
- Isolation réseau par worker via Tor pour éviter corrélation d’IP et blocage
- Détection de changements basée sur l’état en mémoire (transitions de disponibilité)
- Flux SSE partagé entre bot Telegram et clients API
- Interface provider pluggable pour abstraire la source de données ferroviaires
- Gestion dynamique du cycle de vie des workers selon les abonnements actifs
Mon rôle
Responsabilité end-to-end :
- Design de l’architecture et de la stratégie anti-blocage
- Développement du moteur de polling et de la couche réseau
- Implémentation du streaming temps réel et du système d’abonnement
- Développement du bot Telegram et de l’expérience utilisateur