Skip to content

Repository files navigation

Français, page affichée Read this page in English

MicroCoaster WebApp, application web de pilotage

Application web de pilotage des circuits MicroCoaster. Elle découvre les modules ESP32 connectés, affiche leur état en temps réel, et permet de composer des séquences qui orchestrent un circuit entier.

En production sur app.microcoaster.com.

01 Architecture

L'application parle à deux mondes qui n'ont pas les mêmes besoins, et utilise donc deux canaux distincts.

Les navigateurs dialoguent avec l'application par Socket.io, qui apporte reconnexion automatique, repli sur long polling et salles par utilisateur. Ils y découvrent les modules connectés, la télémétrie en temps réel, la composition de séquences, les comptes et les notifications. Les modules ESP32 dialoguent par WebSocket natif, en messages JSON courts avec authentification à la connexion : Switch Track, Launch Track, Lift Hill, Module Audio, Smoke Machine et les simulateurs. Au centre, la WebApp en Node.js, Express et MySQL est la seule à connaître l'état complet du circuit.

Socket.io vers les navigateurs. Reconnexion automatique, repli sur du long polling, salles par utilisateur. C'est confortable côté web et ça tolère un réseau capricieux.

WebSocket natif vers les ESP32. Pas de surcouche, pas de négociation de transport : un microcontrôleur n'a ni la mémoire ni le besoin d'un client Socket.io. Les modules s'authentifient à la connexion, puis échangent des messages JSON courts.

C'est aussi ici que se concentre l'autorité du système. Un module ne décide jamais seul de bouger : il exécute un ordre venu de cette application, qui est la seule à connaître l'état complet du circuit.

02 Structure

Arborescence du dépôt. api : les gestionnaires d'événements, modules, utilisateurs, notifications. websocket : la liaison avec les modules ESP32. bdd : l'accès aux données, un DAO par entité. routes : les routes HTTP. middleware : authentification et contrôle d'accès. views : les gabarits des pages. public : les ressources servies telles quelles. locales : les traductions de l'interface. sql : le schéma et les données initiales. esp : les firmwares de référence des modules. sim : les simulateurs de modules, pour développer sans matériel. tests : les tests automatisés. utils : les fonctions partagées.

Le dossier sim/ mérite un mot : il contient des simulateurs qui se font passer pour de vrais modules. On développe et on teste l'orchestration d'un circuit complet sans avoir à câbler quoi que ce soit.

03 Installation

git clone https://github.com/Microcoaster/MicroCoasterWebApp.git
cd MicroCoasterWebApp
npm install
cp .env.example .env

Renseigner .env, puis créer la base :

mysql -u root -p < sql/schema.sql
mysql -u root -p < sql/default_data.sql

04 Développement

npm start           # démarrage
npm test            # tests
npx eslint .        # analyse statique

Le cycle est celui de l'organisation : une issue décrit le travail, une branche part de develop, une pull request revient dessus et passe en review avant d'atteindre main.

05 Écosystème

Les modules pilotés par cette application ont chacun leur dépôt : Switch Track, Launch Track, Lift Hill, Module Audio, Smoke Machine. Le socle commun est le WiFi Manager.


MicroCoaster · Auteurs : Cybertrist, Yamakajump

About

Application web de pilotage MicroCoaster : supervision des modules, télémétrie temps réel, gestion des comptes et journal d'événements.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages