A
.envfile withDATABASE_URLis optional.
- Install dependencies
npm install - Run the database (PostgreSQL) with Docker
npm run docker:up - Run database migrations
npm run migrate:up - Start the development server
npm run dev
The database used is PostgreSQL, which is started with docker, using the docker-compose.yml file in the root directory.
Start the database :
npm run docker:up (or docker-compose up)
Stop the database :
npm run docker:down (or docker-compose down)
-
Add a migration file to the
migrationsfolder- Format:
XXX-description.up.ts - A corresponding rollback file is required:
XXX-description.down.ts - See
migrations/001-create-trains-and-train-stations.up.tsfor an example
- Format:
-
Run the migration
npm run migrate:up -
To rollback the latest migration
npm run migrate:down
Migrations are managed using the umzug package.
- Migration files are located in the
migrationsdirectory - The
umzuginstance is configured inscripts/umzug.ts - This instance is used in:
scripts/migrations.tstests/setupTestDb.ts(see the Testing section)
Train data is retrieved from the official SNCF API:
https://ressources.data.sncf.com/explore/dataset/tgvmax/information/
- The file
scripts/import-trains.tsis used to import data into the database - Data is refreshed daily at 7 AM using a cron job:
server/cron/get-SNCF-data.ts - It can also be manually triggered via the API:
POST /api/import-trains
Some trip search algorithms are complex and are covered by automated tests.
- Tests are located in the
testsdirectory - A Postgres database is used for testing
- The database is initialized and migrated by
tests/postgres-test-manager.ts, which uses the sharedumzuglogic from thescriptsfolder
Je ne suis pas partenaire de la SNCF, donc il n’est pas possible (pour l’instant) de réserver un train directement depuis l’application, ni de générer un lien vers un trajet avec correspondance sur leur site.
À la place, je te redirige vers une recherche entre ta gare de départ, ta gare d’arrivée et ta date de voyage. J’indique aussi l’heure, mais SNCF Connect fait un peu sa vie à ce niveau-là 😅
Techniquement parlant : Pour cette V1, je m’appuie sur leur nouvelle IA intégrée à la barre de recherche principale. Il suffit de formuler un trajet en français, et l’IA pré-remplit les champs sur sncf-connect.com. Je construis donc une URL avec les infos de base, et leur IA fait le reste ✨ C’est, pour l’instant, la seule solution "bricolable" en attendant une vraie intégration avec la SNCF.
-
Lance une recherche avec tes critères depuis le formulaire sur la page principale.
-
Si ce n’est pas encore fait, choisis une destination.
-
Sélectionne ton trajet aller :
3.1 Si c’est un train direct, clique sur "Réserver ce train sur SNCF Connect"
3.2 S’il y a une correspondance, réserve d’abord le premier train, puis le second en cliquant sur les liens disponible sur max-explorer.
-
Refais la même chose pour ton trajet retour.
On croise les doigts pour que la SNCF propose bientôt une solution plus simple 🤞