🚀 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
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 tokensAppels
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 |
---|---|---|
|
Modèle de fusée |
Nom, Masse, Poussée, Surface, Durée |
|
Accessoire ou module secondaire |
Nom, Masse additionnelle |
|
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.