Partie 3 - Passage à un projet logiciel complet - Passage à une architecture plus complexe

Après avoir terminé une version stable de ma simulation en JavaScript, j’ai commencé à réfléchir à ce que le projet pourrait devenir s’il devait accueillir plusieurs utilisateurs, gérer des modèles de fusées différents, ou sauvegarder des données. C’est à ce moment-là que j’ai compris que je ne pouvais plus me contenter de tout gérer dans le navigateur. Il me fallait une partie serveur, une base de données, et une organisation plus structurée du code. Mon petit projet personnel commençait à devenir une véritable application web.

D’autant plus que j’ai été contacté par mail par un étudiant italien qui avait eu connaissance de mon projet à travers un forum :

Mail Giovanni Sciarinno

Après avoir échangé avec cet étudiant, il était maintenant clair que je devais répondre à plusieurs besoins.

Le premier besoin évident était la persistance des données. Jusqu’ici, chaque simulation était effacée dès que la page était rechargée. Je voulais permettre à un utilisateur de créer plusieurs modèles de fusées, de modifier leurs paramètres, et de consulter l’historique de ses simulations. Cela impliquait la mise en place d’un système de stockage, et donc d’une base de données.

J’ai aussi voulu ajouter un système d’authentification, afin que chacun puisse retrouver ses propres données. Cela m’a amené à découvrir les principes de la sécurité web : création de comptes, identifiants, mots de passe, gestion de sessions ou de jetons. J’ai fait le choix d’un fonctionnement stateless, basé sur des JWT (JSON Web Tokens), pour éviter d’avoir à gérer des sessions côté serveur. Cela s’intégrait mieux dans une architecture API moderne.

Pour structurer cette nouvelle partie du projet, j’ai choisi de travailler avec Symfony, un framework PHP que je ne connaissais pas encore mais qui m’a paru très complet. Il offre une gestion puissante des entités, une bonne organisation du code, et une compatibilité directe avec les bases de données relationnelles. Symfony m’a aussi permis de construire facilement une API REST, grâce au bundle API Platform, que j’ai intégré dès les premières étapes.

Cette transformation du projet m’a obligé à penser autrement. Là où je manipulais auparavant des objets JavaScript dans une seule page HTML, je devais maintenant :

  • définir des entités persistées en base (RocketModule, RocketSubModule, RocketMotionScript),
  • créer des relations entre elles (ManyToMany),
  • exposer ces données sous forme de ressources accessibles via l’API,
  • sécuriser l’accès avec des firewalls, et restreindre certaines opérations aux utilisateurs authentifiés.

Il m’a aussi fallu synchroniser le frontend JavaScript avec cette nouvelle API Symfony. Cela m’a conduit à revoir toute ma logique côté client : au lieu de stocker les données localement, je devais faire des appels fetch() pour interroger l’API, ajouter les bons headers d’authentification, gérer les erreurs réseau, etc. J’ai même créé une classe dédiée (RocketAuthentication) pour encapsuler cette logique.

Ce passage à un projet complexe a été un vrai tournant. J’ai compris que pour que mon projet soit utilisable à plus grande échelle, il fallait qu’il repose sur une base technique solide, avec des couches clairement séparées : données, logique, interface. Cette évolution m’a demandé beaucoup de temps, mais elle a profondément enrichi ma compréhension du développement logiciel.

Synthèse

Le passage d’un simple simulateur local à une application web complète a transformé la nature du projet. J’ai découvert la notion d’architecture logicielle, appris à utiliser un framework professionnel, et mis en place une API sécurisée. Cette étape a marqué l’entrée de mon projet dans une nouvelle dimension : celle de la scalabilité, de l’organisation, et de l’ouverture à d’autres utilisateurs.