Produit

Les applications de bureau basées sur Pankosmia et le contenu d’un produit

Table des matières

Applications de bureau

Un produit est un dépôt d’application de bureau (desktop-app-*). Il assemble le serveur, une liste choisie de clients, l’image de marque et les ressources du produit. Les dépôts existants sont :

  • desktop-app-template : le modèle à dupliquer pour créer une nouvelle application de bureau. Il sert de référence pour le reste de cette page.
  • desktop-app-pithekos : l’application de bureau Pithekos, avec la même structure que le modèle et ses propres nom, version et image de marque.
  • desktop-app-renaissance : l’application de bureau Renaissance basée sur Pankosmia.
  • desktop-app-tc4 : l’application de bureau tC4 basée sur Pankosmia.
  • desktop-app-test-rcl : une application de bureau servant à tester la RCL.

Structure d’une application de bureau

Élément Rôle
app_config.env Configuration principale : APP_NAME, APP_SHORT_NAME, APP_VERSION, START_OFFLINE, les assets (ASSETn, ASSETn_PATH, ASSETn_NAME), le client HOMEPAGE et la liste ordonnée des clients (CLIENT1, CLIENT2…). Gardez core-client-dashboard comme CLIENT1.
buildSpec.json La recette de build générée par le script app_setup : nom et version de l’application, binaire du serveur (bin), dossiers à embarquer (lib), dépôts de clients à inclure (libClients) et chemins des fichiers favicon, thème, produit et configuration des clients.
buildCommon.js Logique de build partagée : copie les libs et les clients, applique le patch du modèle i18n et copie les fichiers du produit.
globalBuildResources/ Tout ce qui est propre au produit et commun à tous les systèmes d’exploitation (voir plus bas).
branding/ Sources des icônes et scripts qui génèrent les favicons et les icônes Windows et macOS.
linux/, macos/, windows/ Scripts par système (app_setup, run, sync, build_server…), fichiers d’installation et résultat du build.
local_server/, local_server.env, Rocket.toml Le serveur et ses versions : dev et qa donnent un numéro de version, et main utilise celui de local_server/Cargo.toml.
releases/, CHANGES.md Dossiers de publication par système et journal des modifications.

globalBuildResources

Ce dossier contient tout ce qui distingue le produit d’un autre. Le build le copie dans l’application sous lib/app_resources/product/.

Fichier Rôle
product.json Identité du produit : name, short_name, version, datetime (date du build), homepage (le client ouvert en premier) et start_offline. Il est régénéré par les scripts de build à partir de app_config.env.
client_config.json Réglages par défaut des clients. Les clés sont des ids de client, ou _global pour les réglages communs à tous. Chaque valeur est une liste de groupes avec un id, un libellé i18n et des fields (chacun avec un id, un libellé i18n et une value). Exemple : internetConnectionAccess dans _global, lu par le tableau de bord.
theme.json Le thème MUI du produit (palette avec primary, secondary…).
favicon*.png, favicon.ico, icon.ico, icon.icns, linux_icon.png Icônes de l’application pour le navigateur, Windows, macOS et Linux.
i18nPatch.json, i18n-overrides.json Modifications de textes au niveau du produit, voir la page i18n.
product_resources/ Données propres au produit, voir ci-dessous.

product_resources

globalBuildResources/product_resources contient les données propres à l’application. Son contenu est copié vers lib/app_resources/product/product_resources dans l’application construite (lors d’un run en développement, vers <os>/build/lib/app_resources/product/product_resources).

La convention est un sous-dossier par id de client, contenant les données dont ce client a besoin. Dans le modèle, core-client-remote-repos/organizations/organization.json liste les organisations Git proposées au client des dépôts distants ; deux produits peuvent ainsi proposer des organisations différentes sans modifier le client :

{
  "organizations": [
    { "name": "BurritoTruck", "url": "git.door43.org/burritotruck" },
    { "name": "unfoldingWord", "url": "git.door43.org/unfoldingword" }
  ]
}