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" }
]
}