Mettre en place une solution informatique pour l'entreprise
Cette SAÉ nous a conduits à concevoir et déployer une solution informatique complète autour de la Vendée Globe, en articulant une base de données relationnelle, une API REST en Java et un client web dynamique.
Objectifs et principes abordés
La SAÉ 2.3 avait pour objectif de nous faire mettre en place une solution informatique de bout en bout, simulant un contexte professionnel réel. Le projet portait sur la gestion des données de la Vendée Globe : stocker les classements, les skippers et les bateaux, puis les exposer via une interface web.
Le travail s'est organisé en trois grandes parties. La première concernait la conception et l'exploitation
d'une base de données PostgreSQL : modélisation Entités/Associations, écriture du schéma relationnel et
rédaction de requêtes SQL pour extraire classements, palmarès de skippers et palmarès de bateaux. La
deuxième partie consistait à développer un serveur HTTP en Java avec Tomcat, exposant une API REST au
format JSON via des Servlets et une connexion à la base grâce au JDBC et aux JNDI DataSources. La
troisième partie, le frontend, nous a amenés à développer une application web responsive en HTML/CSS/JavaScript
avec Bootstrap, consommant l'API via des requêtes asynchrones fetch.
Résultats obtenus
Le résultat correspond globalement aux attentes du sujet. Les trois pages de l'application — classement d'une édition, palmarès d'un skipper et palmarès d'un bateau — sont fonctionnelles et communiquent avec l'API. Le classement s'affiche dynamiquement avec des liens vers les pages skipper et bateau correspondantes. La page skipper affiche le drapeau de nationalité grâce à une API externe et formate la date de naissance. La page bateau résume les informations du navire ainsi que son historique de participations. La navigation entre les pages est assurée par une barre Bootstrap avec passage des identifiants en query string.
Réussites
Parmi mes réussites, je retiens la mise en place complète de la chaîne technique, de la base de données
jusqu'au navigateur, sans rupture. La configuration du CORS dans web.xml pour autoriser les
requêtes cross-origin entre le frontend et l'API a été un point technique que j'ai réussi à comprendre et
à appliquer correctement. Côté JavaScript, j'ai bien assimilé le DOM scripting et l'enchaînement des
.then() pour traiter les réponses JSON de l'API. La gestion de la query string avec
URLSearchParams pour afficher la bonne édition, le bon skipper ou le bon bateau selon l'URL
m'a semblé particulièrement élégante une fois comprise.
Difficultés rencontrées
La principale difficulté a été la connexion entre la base de données et le serveur : un VPN bloquait les échanges à cause d'un pare-feu. J'ai surmonté cela en faisant des recherches pour comprendre l'origine du blocage et adapter la configuration du pare-feu en conséquence.
Prise de recul et pistes d'amélioration
Aujourd'hui, si je devais recommencer ce projet, je commencerais par mieux définir le format exact des
données JSON retournées par l'API avant de développer le frontend, afin d'éviter des ajustements de
dernière minute entre les deux parties. Je porterais également plus d'attention à la gestion des erreurs
côté JavaScript — un .catch() systématique sur les appels fetch aurait évité des
bogues silencieux difficiles à diagnostiquer. Sur la partie SQL, je prendrais le temps d'écrire des requêtes
plus génériques et mieux commentées.
Cette SAÉ m'a convaincu de l'intérêt de maîtriser l'ensemble de la pile technique d'une application : comprendre comment les données circulent de la base de données jusqu'à l'écran, en passant par une API, est une compétence fondamentale que je pourrai réinvestir dans de nombreux contextes professionnels futurs.
← Revenir au portfolio