Présentation du dépôt

Le référentiel geastack/examples héberge une galerie d’applications démonstratives utilisées par le simulateur, les cibles embarquées, GeaOS et les plateformes Apple. Chaque exemple est empaqueté dans un sous‑dossier apps/* et possède un manifeste package.json contenant un champ gea dédié. Le README indique que les exemples sont majoritairement des applications TSX ciblant le web, l’ESP32 et/ou GeaOS, ce qui montre la portée multi‑plateforme du framework.

Architecture du manifeste et flux de construction

Le manifeste décrit explicitement les métadonnées requises : identifiant (id), nom (name), point d’entrée (entry), runtime (runtime) et la matrice de compatibilité (targets). Cette structure est consommée par le simulateur, les scripts de flashage et l’extension VS Code, garantissant une chaîne de compilation unifiée. Exemple de manifeste :

{
  "gea": {
    "id": "watch",
    "name": "Watch",
    "entry": "index.tsx",
    "runtime": "gea",
    "targets": {"web": true, "esp32": true, "geaos": true}
  }
}

Le flux de build s’appuie sur npm : npm install résout les dépendances, npm run check lance les vérifications de type, npm run build produit les artefacts pour chaque cible, et npm test exécute les tests unitaires ou d’intégration présents dans le répertoire de l’exemple. Le simulateur lit les applications via la variable d’environnement GEA_APPS_ROOT, ce qui permet de pointer soit vers ce dépôt, soit vers un répertoire local, sans contrainte d’emplacement.

Processus de développement et validation

Le README précise que chaque exemple doit rester « petit et ciblé », afin de mettre en évidence un comportement unique. Les contributeurs sont encouragés à privilégier les API du framework partagé plutôt que des contournements spécifiques à une cible, ce qui réduit la dette technique et améliore la portabilité du code TypeScript. Les tests sont recommandés pour les exemples contenant une logique non triviale, de la physique ou du parsing, garantissant que les différences de runtime (web vs ESP32) ne provoquent pas de régressions.

Pour flasher un dispositif compatible, la commande npx gea flash watch --board <alias> est fournie, illustrant l’intégration du CLI GeaStack avec les manifests. Cette étape montre comment le même code source TypeScript peut être transformé en firmware embarqué, grâce à la couche d’abstraction du runtime gea.

Licences et contraintes de distribution

Les exemples sont publiés sous licence MIT, autorisant une utilisation, modification et distribution sans condition, y compris dans des produits propriétaires. En revanche, le support matériel embarqué (targets et le package @geastack/chips) est sous GPL‑3.0‑only, ce qui impose que toute modification du code de support embarqué soit redistribuée sous les mêmes termes. Le README indique qu’une licence commerciale est nécessaire pour publier du firmware fermé basé sur ces composants, et fournit une adresse de contact (contact@geastack.com) pour les négociations.