🚀 Documentation du Projet Rocket Simulator#

1. Présentation générale#

  • Nom du projet : Rocket Simulator

  • Description : Application web de simulation de trajectoire de fusĂ©es basĂ©e sur des modèles physiques rĂ©els (poussĂ©e, gravitĂ©, traĂ®nĂ©e), avec gestion multi-utilisateurs via une API sĂ©curisĂ©e.

  • Public cible : Ă©lèves, enseignants en physique, dĂ©veloppeurs curieux.

  • Technologies principales :

    • Frontend : JavaScript (ES6+), Tailwind CSS

    • Backend : PHP (Symfony), API Platform

    • Base de donnĂ©es : MySQL

    • Conteneurisation : Docker

Ecran d'accueil

2. Fonctionnalités principales#

  • Authentification par login/password (JWT Token)

  • Gestion de modèles de fusĂ©es personnalisĂ©s

  • Simulation dynamique en Canvas

  • Stockage et gestion des rĂ©sultats de vol

  • API REST complète pour toutes les opĂ©rations

  • Interface utilisateur claire et responsive

3. Architecture du projet#

  • Frontend

    • Pages HTML (connexion, dashboard, simulation)

    • Classe RocketAuthentication pour la gestion des tokens

    • Appels fetch() sĂ©curisĂ©s vers l’API

  • Backend

    • EntitĂ©s Symfony : RocketModule, RocketSubModule, RocketMotionScript

    • API Platform pour exposer les entitĂ©s via REST

    • Authentification JWT (Lexik JWT Bundle)

  • Base de donnĂ©es

    • Utilisation de Doctrine ORM

    • Relations ManyToMany entre modules et sous-modules

  • Conteneurisation

    • Docker Compose : services php-fpm, mysql, nginx-proxy, certbot (Ă©ventuellement)

4. Installation locale (développeurs)#

Initialisation#

Editer le fichier .env.dev ou .env.prod et configurer la connection base de données

DATABASE_URL="mysql://root:motdepasse@127.0.0.1:3306/rocket?serverVersion=8.0"

composer install

./build-tailwind.sh

bin/console cache:clear

Configurer éventuellement la clé ROUTE_PREFIX dans .env.prod ou .env.dev, et lancer la régénération de la clé pour services.yaml :

php bin/console update:route-prefix 

Régéneration des clés jwt#

php bin/console lexik:jwt:generate-keypair

Régénération assetmapper#

php bin/console asset-map:compile

Création de la base de données#

php bin/console doctrine:database:create

php bin/console make:migration

php bin/console doctrine:migrations:migrate
  • Variables d’environnement : .env

  • Migration de la base de donnĂ©es : php bin/console doctrine:migrations:migrate

  • CrĂ©ation d’un utilisateur via l’API POST /api/register (si prĂ©vu)

5. Utilisation de l’API#

  • Authentification : POST /api/login

  • Endpoints principaux :

    • GET /api/rocket_modules

    • POST /api/rocket_modules

    • GET /api/rocket_sub_modules

  • NĂ©cessitĂ© de passer un header Authorization: Bearer <token> après connexion.

Exemple d’appel en JavaScript :

await RocketAuthentication.fetchWithAuth('/api/rocket_modules', { method: 'GET' });

6. Structure des entités#

Entité

Description

Champs clés

RocketModule

Modèle de fusée

Nom, Masse, Poussée, Surface, Durée

RocketSubModule

Accessoire ou module secondaire

Nom, Masse additionnelle

RocketMotionScript

Script de trajectoire

Titre, Script brut

7. Sécurité#

  • Authentification JWT avec durĂ©e limitĂ©e

  • Accès aux donnĂ©es filtrĂ© par utilisateur connectĂ©

  • Protection des actions sensibles (POST, PUT, DELETE)

8. Déploiement#

  • PrĂ©paration des images Docker pour production

  • Utilisation d’un reverse proxy nginx

  • Let’s Encrypt pour HTTPS

  • Variables d’environnement spĂ©cifiques pour .env.prod

9. FAQ#

  • Je n’arrive pas Ă  me connecter. → VĂ©rifiez que l’API backend est bien accessible et que vous utilisez un token valide.

  • La simulation ne dĂ©marre pas. → Assurez-vous d’avoir entrĂ© des paramètres physiques cohĂ©rents.

  • Comment modifier un modèle de fusĂ©e ? → Connectez-vous, allez dans « Mes fusĂ©es », cliquez sur « Modifier ».

10. Auteurs / Crédits#

  • DĂ©veloppĂ© par Pierre-Ange Delbary RouillĂ© (projet CAS - IB 2023/2025)

  • Merci Ă  toutes les ressources pĂ©dagogiques utilisĂ©es : Planète Sciences, CNES, ESA, etc.