Producto

Las aplicaciones de escritorio basadas en Pankosmia y qué contiene un producto

Tabla de contenidos

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