Producto
Las aplicaciones de escritorio basadas en Pankosmia y qué contiene un producto
Tabla de contenidos
- Aplicaciones de escritorio
- Estructura de una aplicación de escritorio
- globalBuildResources
- product_resources
Aplicaciones de escritorio
Un producto es un repositorio de aplicación de escritorio (desktop-app-*). Reúne el servidor, una lista elegida de clientes, la marca y los recursos del producto. Los repositorios existentes son:
desktop-app-template: la plantilla que se duplica para crear una nueva aplicación de escritorio. Es la referencia para el resto de esta página.desktop-app-pithekos: la aplicación de escritorio Pithekos, con la misma estructura que la plantilla y su propio nombre, versión y marca.desktop-app-renaissance: la aplicación de escritorio Renaissance basada en Pankosmia.desktop-app-tc4: la aplicación de escritorio tC4 basada en Pankosmia.desktop-app-test-rcl: una aplicación de escritorio para probar la RCL.
Estructura de una aplicación de escritorio
| Elemento | Qué hace |
|---|---|
app_config.env | Configuración principal: APP_NAME, APP_SHORT_NAME, APP_VERSION, START_OFFLINE, los recursos (ASSETn, ASSETn_PATH, ASSETn_NAME), el cliente HOMEPAGE y la lista ordenada de clientes (CLIENT1, CLIENT2…). Mantenga core-client-dashboard como CLIENT1. |
buildSpec.json | La receta de compilación generada por el script app_setup: nombre y versión de la app, binario del servidor (bin), carpetas a empaquetar (lib), repositorios de clientes a incluir (libClients) y rutas de los archivos de favicon, tema, producto y configuración de clientes. |
buildCommon.js | Lógica de compilación compartida: copia las bibliotecas y los clientes, parchea la plantilla i18n y copia los archivos del producto. |
globalBuildResources/ | Todo lo específico del producto y común a todos los sistemas operativos (véase más abajo). |
branding/ | Fuentes de los iconos y scripts que generan los favicons y los iconos de Windows y macOS. |
linux/, macos/, windows/ | Scripts por sistema (app_setup, run, sync, build_server…), archivos de instalación y resultado de la compilación. |
local_server/, local_server.env, Rocket.toml | El servidor y sus versiones: dev y qa indican un número de versión, y main usa el de local_server/Cargo.toml. |
releases/, CHANGES.md | Carpetas de publicación por sistema y registro de cambios. |
globalBuildResources
Esta carpeta contiene todo lo que distingue al producto de otro. La compilación la copia en la aplicación bajo lib/app_resources/product/.
| Archivo | Qué hace |
|---|---|
product.json | Identidad del producto: name, short_name, version, datetime (fecha de compilación), homepage (el cliente que se abre primero) y start_offline. Los scripts de compilación lo regeneran a partir de app_config.env. |
client_config.json | Ajustes por defecto de los clientes. Las claves son ids de cliente, o _global para ajustes comunes a todos. Cada valor es una lista de grupos con un id, una etiqueta i18n y fields (cada uno con un id, una etiqueta i18n y un value). Ejemplo: internetConnectionAccess en _global, leído por el panel. |
theme.json | El tema MUI del producto (palette con primary, secondary…). |
favicon*.png, favicon.ico, icon.ico, icon.icns, linux_icon.png | Iconos de la app para el navegador, Windows, macOS y Linux. |
i18nPatch.json, i18n-overrides.json | Cambios de textos a nivel de producto, véase la página i18n. |
product_resources/ | Datos propios del producto, véase abajo. |
product_resources
globalBuildResources/product_resources contiene los datos propios de la aplicación. Su contenido se copia a lib/app_resources/product/product_resources en la aplicación compilada (al ejecutar run en desarrollo, a <os>/build/lib/app_resources/product/product_resources).
La convención es una subcarpeta por id de cliente, con los datos que ese cliente necesita. En la plantilla, core-client-remote-repos/organizations/organization.json lista las organizaciones Git ofrecidas al cliente de repositorios remotos, de modo que dos productos pueden ofrecer organizaciones distintas sin cambiar el cliente:
{
"organizations": [
{ "name": "BurritoTruck", "url": "git.door43.org/burritotruck" },
{ "name": "unfoldingWord", "url": "git.door43.org/unfoldingword" }
]
}