Retour aux projets
Trainfo logo

Une plateforme d’informations ferroviaires belges de la SNCB, construite comme un mono-repo de onze services coopérants à partir des données de la Belgian Mobility Company.

11 services
Docker Compose
GTFS-RT

Trainfo est une plateforme complète d’informations ferroviaires belges de la SNCB. Elle fonctionne comme un mono-repo Docker Compose de onze services coopérants qui partagent un design system, des templates Jinja et des modèles SQLAlchemy. Les données proviennent de la Belgian Mobility Company (BMC) via des flux GTFS et temps réel, transformés en interfaces rapides et claires.

Trainfo preview

Stack technique

En bref

Architecture

Source de données

BMC GTFS BMC Realtime

Backend & API

TreinfoTracker accounts_service tracing_api

Frontend & UI

TreinfoWeb TreinfoMap TreinfoLogger TreinfoCatcher TreinfoTransfer TreinfoPlanner TreinfoSpoorbaron

Les 9 services

Chaque service a son propre rôle au sein de la plateforme. Vous pouvez lire ci-dessous ce que fait chacun.

01 data & api
TrainfoTracker

Propriétaire des données, API REST et worker temps réel.

C’est le propriétaire des données de la plateforme. Le service récupère les flux GTFS et temps réel de la Belgian Mobility Company (BMC), les transforme en tableaux de départs et compositions de trains en direct, et expose le tout via une API REST. Un worker distinct exécute le traitement temps réel en continu en arrière-plan.

02 frontend
TrainfoWeb

Le frontend web principal pour les voyageurs.

C’est le frontend web principal où arrivent les voyageurs. On y trouve le tableau en direct, les vues train et gare, le planificateur de voyage et les perturbations actuelles, le tout dans le design glassmorphism partagé.

03 map
TrainfoCarte

Carte en direct des trains SNCB.

Ce service affiche tous les trains SNCB en circulation en direct sur une carte. Il se compose d’une API de tracing qui calcule les positions et la géométrie, et d’un frontend cartographique qui visualise le tout.

04 planner
TrainfoPlanner

Planificateur de boucles de train avec un nombre minimal de trajets.

Ce planificateur de voyage construit des boucles de train et des plans journaliers avec le moins de trajets possible. Le service lit le graphe ferroviaire en lecture seule depuis Postgres, génère des boucles candidates et les associe à l’horaire réel via le planificateur d’itinéraire.

05 logger
TrainfoLogger

Backend-For-Frontend pour journaliser trajets et observations.

C’est un Backend-For-Frontend léger qui permet de journaliser vos trajets en train et vos observations. Le service regroupe les données de l’API Tracker, de l’API de tracing et du service de comptes.

06 game
TrainfoCatcher

Gamification pour capturer des types de trains selon la localisation.

C’est une application ludique inspirée de Pokémon Go. Vous y capturez des types de trains de la SNCB en fonction de votre localisation, ce qui donne une couche de gamification au train spotting.

07 util
TrainfoTransfer

Partage de fichiers privé façon WeTransfer.

C’est un service de partage de fichiers privé façon WeTransfer pour la famille Trainfo. L’envoi nécessite un compte approuvé, le téléchargement se fait sans compte via un lien de partage ou un code court, et les fichiers sont nettoyés automatiquement.

08 game
TreinfoSpoorbaron

Jeu de gestion ferroviaire dans le style de Transport Tycoon.

C’est un jeu de gestion dans le style de Transport Tycoon, construit en modules ES natifs sans étape de build. Vous construisez votre propre compagnie ferroviaire belge, achetez du matériel roulant, tracez des lignes, planifiez des horaires, gérez des dépôts et remplissez des contrats d’événements.

09 auth
accounts_service

Service d’authentification et de comptes partagé.

C’est le service d’authentification et de comptes partagé. Il gère l’inscription, la connexion et les tokens JWT, et gère les permissions pour toutes les applications de la famille Trainfo.

Autre projet