Retour aux projets
SNCF SECAFI IA Reseau

SNCF SECAFI IA Reseau

Plateforme d'Assistance Intelligente pour le Réseau Ferroviaire

Rôle: Full Stack Developer
Période: Octobre - Décembre 2024
Production
Client: SNCF (Société Nationale des Chemins de fer Français)

Aperçu

Contexte

La SNCF SECAFI avait besoin d'un outil interne intelligent pour assister dans la prise de décisions stratégiques, fournissant des estimations et prévisions sur les scénarios futurs du réseau ferroviaire via l'intelligence artificielle. Le système permet aux employés de faire des requêtes complexes et d'obtenir des analyses prédictives basées sur les données historiques et les modèles identifiés.

Solution

Système complet avec API REST robuste en NestJS et interface web moderne éditable en React. Intégration avec Chatbase AI pour le traitement de requêtes complexes et la génération d'estimations, système d'authentification JWT, et panneau administratif pour le suivi des conversations et prédictions. Interface entièrement configurable via l'API.

Mon Rôle

J'ai travaillé en tant que Full Stack Developer responsable de tout le développement du projet. J'ai développé toute l'architecture de l'API backend avec NestJS, TypeORM et MySQL, et implémenté complètement le frontend en React, incluant toutes les animations et interactions. Seul le design UI/UX a été fourni par l'équipe de House of Coding via Figma.

Stack Technique

Frontend

React
TypeScript
Tailwind CSS
shadcn/ui
Radix UI
React Router DOM
TanStack React Query
TanStack Table
React Hook Form
Zod
Recharts
Sonner
Lucide React

Backend

NestJS
TypeScript
TypeORM
MySQL
JWT/Passport
Chatbase AI
class-validator
class-transformer
bcrypt
Swagger
Docker

Projets

1

SNCF IA Reseau API

Backend NestJS avec Interface Éditable via API

~8.500
Lignes de Code
67
Fichiers
7
Modules
3
Entities
15+
DTOs

API REST robuste développée en NestJS avec architecture modulaire. Système complet d'authentification JWT, intégration avec Chatbase AI pour le traitement de requêtes et la génération d'estimations, et interface entièrement éditable et configurable via les endpoints de l'API.

Fonctionnalités

01
Authentification JWT

Système complet avec register/login, refresh tokens, guards de protection et stratégie Passport

02
Intégration Chatbase AI

Proxy pour l'API Chatbase avec gestion des conversations, historique et rate limiting

03
Suivi des Conversations

Historique complet des conversations avec filtres, pagination et statistiques

04
API de Statistiques

Dashboard avec métriques d'utilisation, conversations par période et analyse des utilisateurs actifs

05
Swagger/OpenAPI

Documentation automatique et interactive de l'API avec exemples

06
Docker Setup

Containerisation complète avec MySQL, volumes persistants et réseau isolé

Design Patterns

Modular Architecture
Repository Pattern
DTO Pattern
Guard Pattern
Exception Filters
Dependency Injection

Décisions Techniques

NestJS vs Express/Fastify

Structure enterprise-ready out-of-the-box, TypeScript first-class, architecture modulaire scalable, decorators pour métaprogrammation, intégration Swagger native

TypeORM vs Prisma

Decorators pour entities, migrations robustes, support multi-bases de données, pattern active record familier, meilleur pour projets NestJS complexes

JWT vs Session

Stateless, scalable horizontalement, pas de stockage serveur requis, idéal pour APIs REST, refresh tokens pour sécurité

Chatbase vs OpenAI Direct

Système de conversations géré, entraînement spécifique du modèle, rate limiting inclus, métriques intégrées, coût optimisé

Défis & Solutions

Rate Limiting Chatbase

Implémentation de file d'attente de requêtes avec retry exponentiel, cache des réponses fréquentes, messages de fallback pour timeouts

Gestion des Tokens JWT

Refresh tokens avec rotation, blacklist pour tokens révoqués, expiration configurable par environnement

Persistance des Conversations

Schéma optimisé avec index, relation User-Conversation 1:N, soft delete pour audit

Validation des Données

DTOs avec class-validator, transform pipes globaux, validateurs personnalisés pour règles métier

Développement Docker

Docker Compose avec hot-reload, volumes pour persistance MySQL, réseau isolé, variables d'environnement sécurisées

2

SNCF IA Reseau Front

Interface Web Moderne avec Chat Intelligent

~12.000
Lignes de Code
95
Fichiers
48
Composants
12
Hooks
8
Pages

Application React single-page avec design fourni par l'équipe House of Coding via Figma. Interface moderne avec chat en temps réel, panneau administratif complet, et système d'authentification intégré. Animations et interactions développées par moi.

Fonctionnalités

01
Interface de Chat

Interface conversationnelle en temps réel avec historique, indicateurs de saisie et rendu markdown

02
Authentification

Login/register avec validation, persistance de session, refresh automatique des tokens

03
Panneau Administratif

Dashboard avec statistiques, gestion des utilisateurs, visualisation des conversations et analytics

04
Gestion des Utilisateurs

CRUD complet, filtres avancés, rôles et permissions, export de données

05
Historique des Conversations

Visualisation détaillée de toutes les conversations avec filtres par date, utilisateur et contenu

06
Système de Notifications

Toasts avec Sonner pour feedback d'actions et erreurs

07
Tables Interactives

TanStack Table avec sorting, filtering, pagination et visibilité des colonnes

08
Formulaires Validés

React Hook Form + Zod pour validation robuste et type-safe

09
Animations Personnalisées

Transitions fluides, micro-interactions et loading states développés par moi

10
Design Responsive

Layout adaptatif pour desktop, tablette et mobile basé sur le Figma de House of Coding

Design Patterns

Custom Hooks Pattern
React Query Pattern
Form Management
Route Protection
Component Composition
State Management

Décisions Techniques

React vs Next.js

SPA pure sans besoin de SSR, authentification client-side, déploiement plus simple, routing client-side suffisant

TanStack Query vs Redux

Spécialisé en server state, cache intelligent, moins de boilerplate, invalidation automatique, devtools excellents

shadcn/ui vs Material UI

Copy-paste sans dépendances lourdes, personnalisation totale via Tailwind, accessibilité Radix, composants modernes

React Hook Form + Zod

Performance supérieure (moins de re-renders), validation type-safe, intégration parfaite, bundle plus petit que Formik

Recharts vs Chart.js

Composable, déclaratif avec React, personnalisation via props, TypeScript natif, responsive out-of-the-box

Défis & Solutions

Implémentation du Design Figma

Fidélité pixel-perfect au design de House of Coding avec Tailwind, système de couleurs et espacements cohérent, composants réutilisables

Animations Personnalisées

Transitions CSS personnalisées, framer-motion pour animations complexes, loading skeletons, micro-interactions sur boutons et cards

Expérience Chat Temps Réel

Polling optimisé avec React Query, auto-scroll intelligent, indicateurs de saisie, formatage markdown

Gestion des Tokens

Intercepteur axios pour refresh automatique, retry des requêtes échouées, logout sur token expiré

Tables Performantes

Virtualisation avec TanStack Table, pagination serveur, lazy loading, mémoïsation des cellules

Galerie

1
Image 1
2
Image 2
3
Image 3
4
Image 4
5
Image 5
6
Image 6
Gregory Praxedes | Full Stack Developer & UI/UX Specialist