Terug naar projecten

Treinfo

Treinfo is een volledig platform rond Belgische treininfo van de NMBS en SNCB. Het draait als een Docker Compose mono-repo van elf samenwerkende services die een gedeeld design system, Jinja-templates en SQLAlchemy-modellen delen. De basis zijn de GTFS- en realtime-feeds, die worden omgezet naar snelle en overzichtelijke interfaces.

Tech-stack

  • Python
  • Flask
  • PostgreSQL
  • SQLAlchemy
  • GTFS-RT
  • Docker
  • gunicorn + gevent

In het kort

  • De GTFS- en realtime-feeds van de NMBS worden verwerkt tot live vertrekborden.
  • Elf microservices draaien achter een gedeeld glassmorphism-design system.
  • De CI maakt automatisch beta- en stabiele releases via een preview- en main-tak.

De 9 services

Elke service heeft een eigen rol binnen het platform. Hieronder lees je per service wat ze precies doet.

TreinfoTracker

Data-eigenaar, REST-API en realtime-worker.

Dit is de data-eigenaar van het platform. De service haalt de GTFS- en realtime-feeds van de NMBS op, verwerkt ze tot live vertrekborden en treinsamenstellingen, en biedt alles aan via een REST-API. Een aparte worker draait de realtime-verwerking continu op de achtergrond.

TreinfoWeb

De hoofd-webfrontend voor reizigers.

Dit is de hoofd-webfrontend waar reizigers terechtkomen. Je vindt er het liveboard, de trein- en stationsweergave, de reisplanner en de actuele storingen, allemaal in het gedeelde glassmorphism-design.

TreinfoMap

Live kaart van NMBS- en SNCB-treinen.

Deze service toont alle rijdende NMBS- en SNCB-treinen live op een kaart. Ze bestaat uit een tracing-API die de posities en geometrie berekent, en een kaart-frontend die alles visualiseert.

TreinfoPlanner

Reisplanner voor treinrondjes met minimaal aantal ritten.

Deze reisplanner stelt treinrondjes en dagplanningen samen met zo weinig mogelijk ritten. De service leest de spoorgraaf read-only uit Postgres, genereert kandidaat-rondjes en mapt ze op de echte dienstregeling via de routeplanner.

TreinfoLogger

Backend-For-Frontend om reizen en spottings te loggen.

Dit is een lichte Backend-For-Frontend waarmee je je treinreizen en spottings kunt loggen. De service bundelt data uit de Tracker-API, de tracing-API en de accountservice.

TreinfoCatcher

Gamification om treintypen te vangen op locatie.

Dit is een speelse toepassing die geïnspireerd is op Pokémon Go. Je vangt er NMBS-treintypen op basis van je locatie, waardoor treinspotten een leuke gamification-laag krijgt.

TreinfoTransfer

Private bestandsdeling in WeTransfer-stijl.

Dit is een private bestandsdeeldienst in WeTransfer-stijl voor de Treinfo-familie. Uploaden kan enkel met een goedgekeurd account, downloaden gebeurt accountloos via een deel-link of korte code, en de bestanden worden automatisch opgeruimd.

TreinfoSpoorbaron

Spoorbeheergame in de stijl van Transport Tycoon.

Dit is een beheergame in de stijl van Transport Tycoon, gebouwd in vanilla ES-modules zonder buildstap. Je bouwt je eigen Belgische spoorbedrijf, koopt materieel, tekent lijnen, plant dienstregelingen, beheert depots en vervult evenementcontracten.

accounts_service

Gedeelde authenticatie- en accountservice.

Dit is de gedeelde authenticatie- en accountservice. Ze verzorgt registratie, login en JWT-tokens, en regelt de permissies voor alle apps in de Treinfo-familie.

Ander project