KEPLIN Docs

Paramètres de l'app

Thème, traductions, authentification et inscription, comptes des utilisateurs, permissions et rotation des enregistrements — tout ce qui se règle dans une app, section par section.

Chaque app a ses propres paramètres — le thème est de cette app, les comptes sont de cette app, les permissions sont de cette app. C'est pour cela que les paramètres voyagent avec elle quand vous l'exportez dans un package (avec les exceptions que détaille la page « Importer et exporter des apps »). Cette page parcourt toutes les sections, avec une attention particulière aux six les plus utilisées : thème, traductions, authentification, comptes, permissions et rotation des enregistrements.

Ouvrir les paramètres

  1. Ouvrez l'app dans la barre latérale.
  2. En haut de la barre de l'app, cliquez sur le bouton d'engrenage Paramètres de l'app. L'arborescence de navigation laisse la place à l'arborescence des paramètres, organisée par groupes.
  3. Cliquez sur une section : elle s'ouvre comme un onglet de l'espace de travail — comme un écran ou un script — avec le nom de l'app dans l'en-tête, la section active dans un badge à côté, et les boutons de la section (par exemple Enregistrer) toujours dans le coin supérieur droit.

L'arborescence des paramètres de l'app, avec les groupes et les sections
L'arborescence des paramètres de l'app, avec les groupes et les sections

La carte complète :

Groupe Section Ce qui s'y définit
Application Général Identification, publication, exporter et supprimer — voir les deux premières pages de ce chapitre.
Application Authentification Comment les utilisateurs entrent dans l'app, inscription publique et récupération.
Application Notifications Les canaux de notification de l'app : in-app et e-mail (SMTP propre).
Application Stockage Où vont les fichiers que les utilisateurs de l'app envoient (disque de l'app, S3, SFTP, partage réseau).
Utilisateurs Utilisateurs de l'app Les comptes de ceux qui utilisent l'app construite.
Utilisateurs Permissions Rôles et règles : données, écrans, menus et actions.
Apparence Thème Couleurs, forme et typographie de l'app construite, avec aperçu.
Localisation Traductions Les langues de l'app et les phrases traduites, dans une matrice.
Données Rotation des enregistrements Combien de jours chaque type d'enregistrement est conservé avant d'être supprimé.

Nota

Ce sont les paramètres de l'app — à ne pas confondre avec les Paramètres de la plateforme (dans la zone d'administration de la barre latérale), qui gouvernent l'installation entière : processus de fond, avertissements, sessions et limites globales.

Thème

La section Thème peint l'app construite — celle que vos utilisateurs voient — sans toucher à aucun écran. À gauche se trouvent les groupes de couleurs ; à droite, le panneau Aperçu montre « Exemple avec les tokens actuels — mise à jour en direct. » : chaque couleur que vous changez y apparaît à l'instant.

La section Thème des paramètres de l'app : les groupes de couleurs à gauche et l'aperçu en direct à droite.
La section Thème des paramètres de l'app : les groupes de couleurs à gauche et l'aperçu en direct à droite.

Groupe Ce qu'il peint
Base « Fond et texte de l'app, contours et focus. »
Surfaces « Cartes et popovers (menus, dropdowns, tooltips). »
Couleurs « Couleurs sémantiques des composants et le texte sur chacune » — primaire, secondaire, destructive, accent, atténuée.
Navigation « Barres de navigation de l'app (haut, côtés, menus). » Par défaut elles suivent les surfaces ; modifiez-les pour appliquer votre branding.

Chaque couleur a un sélecteur visuel et un champ hexadécimal (#rrggbb) — écrivez ou choisissez, c'est la même chose. En bas de la liste, Forme et typographie définit le reste :

  • Rayon des coins — de Sans arrondi (0) à Maximum (1rem), en cinq paliers.
  • Position des avertissements — dans quel coin apparaissent les avertissements (toasts) de l'app.
  • Police (sans) — la stack de polices de l'app.

Pour enregistrer, Enregistrer ; pour revenir aux couleurs d'origine, Réinitialiser (cela remet l'éditeur en état — ce n'est définitif que lorsque vous enregistrez). Le thème enregistré s'applique immédiatement à l'app construite, et il voyage avec elle dans n'importe quel package.

Traductions — les langues de l'app

La section Traductions est une matrice : une ligne par phrase, une colonne par langue. C'est ici que l'app gagne des langues et que les phrases des écrans se traduisent sans sortir d'un seul tableau.

La matrice de traductions de l'app : une ligne par phrase, une colonne par langue.
La matrice de traductions de l'app : une ligne par phrase, une colonne par langue.

  • Créer une phrase : écrivez dans la dernière ligne, qui est toujours vide et qui attend (« écrire pour créer… »). La Clé de la phrase « (vient de la phrase) » — c'est le texte lui-même, dans la langue de base, qui l'identifie dans les écrans.
  • Ajouter une langue : cliquez sur le + de l'en-tête, choisissez dans « choisir une langue… » et confirmez avec Ajouter une langue. Une nouvelle langue est une nouvelle colonne, qui naît vide.
  • Changer la langue de base ou supprimer une langue : dans le menu de la colonne — Définir comme langue de base et Supprimer cette langue (« Les traductions de cette langue disparaissent avec elle. »).
  • Supprimer une phrase : dans le menu de la ligne, Supprimer la phrase — elle disparaît de toutes les langues à l'enregistrement.
  • Trouver ce qui manque : la recherche « Rechercher dans n'importe quelle langue… » et le filtre À compléter ne montrent que les phrases avec des cellules vides.

Dans les écrans, les phrases s'utilisent par leur texte : t("Lista de clientes") dans un événement TypeScript renvoie la traduction dans la langue de celui qui utilise l'app. Pour des valeurs au milieu de la phrase, écrivez-les entre accolades — « {n} registos » donne « 3 registos » — et la plateforme prévient (cellule en jaune) quand une traduction perd une accolade que l'original contient : dans cette langue, la valeur n'apparaîtrait pas.

Dica

Modifier le texte d'une phrase déjà enregistrée, c'est modifier sa clé — et la plateforme la remplace aussi dans les écrans qui l'utilisent, en disant combien elle en a touché. Rien ne reste à pointer vers une phrase qui n'existe plus.

À la fin, Enregistrer : « Traductions enregistrées et compilées. »

Authentification et inscription

La section Authentification définit comment on entre dans l'app construite — pas dans la plateforme. Ce sont trois blocs :

La section Authentification de l'app, avec le mode d'authentification et l'inscription publique
La section Authentification de l'app, avec le mode d'authentification et l'inscription publique

Mode d'authentification — le choix de fond :

Mode Comment cela fonctionne
Nom d'utilisateur et mot de passe « Les utilisateurs de l'app se connectent avec les identifiants gérés dans l'onglet Utilisateurs. » Tout vit dans l'app ; c'est le mode d'origine.
OAuth / OpenID Connect « L'app délègue la connexion à un fournisseur d'identité externe (issuer OIDC). » La connexion devient celle de votre organisation.

OAuth / OpenID Connect — les champs du fournisseur (actifs seulement dans ce mode) : Issuer URL et Client ID (obligatoires), Client secret (« Enregistré chiffré ; il n'est plus jamais affiché. » — laisser vide conserve ce qui est là) et Scopes (« Séparés par des espaces. Si vide, les scopes par défaut du fournisseur sont utilisés. »).

Inscription et récupération — les écrans système publics de l'app :

  • Autoriser l'inscription publique : activé, « N'importe quel visiteur peut créer un compte sur l'écran /register. Désactivé, l'écran n'est pas servi. »
  • Rôle des nouvelles inscriptions : « Rôle attribué automatiquement aux personnes qui s'inscrivent. » Choisissez un rôle dans la liste des Permissions, ou Aucun rôle — mais sans rôle, le compte entre et ne voit ni données ni écrans.
  • La récupération du mot de passe envoie le lien par le canal e-mail défini dans Notifications — le canal doit être actif et le SMTP complet, sinon il n'y a pas d'e-mails de récupération.

Enregistrez avec Enregistrer (« Authentification enregistrée. »).

Utilisateurs de l'app — les comptes

La section Utilisateurs de l'app gère les comptes de ceux qui utilisent l'app. L'avertissement en haut est la règle d'or : « Ces utilisateurs appartiennent à l'app construite — ils se connectent à l'app en runtime et n'ont aucun accès à la plateforme KEPLIN. »

La liste des utilisateurs de l'app Gestion de Clients : les rôles de chaque compte et la dernière connexion.
La liste des utilisateurs de l'app Gestion de Clients : les rôles de chaque compte et la dernière connexion.

La liste montre chaque compte avec l'Utilisateur, les Rôles et la Dernière connexion (« jamais connecté » quand il n'y a jamais eu de connexion), et elle a été faite pour répondre à des questions :

  • La recherche « Rechercher par nom, utilisateur ou e-mail… » et les filtres par rôle et par état trouvent n'importe quel compte.
  • L'avertissement ambre « … utilisateur(s) sans aucun rôle — ils ne voient ni données ni écrans. » est cliquable et filtre aussitôt ces comptes — c'est la cause numéro un du « l'app est vide ».
  • Sélectionnez plusieurs comptes pour agir en lot : Attribuer un rôle, Retirer le rôle, Activer, Désactiver — donner le même rôle à douze personnes est une opération, pas douze fenêtres.

Créer ou modifier un compte (bouton Nouvel utilisateur, ou Modifier dans le menu de la ligne — cela s'ouvre en pleine page, jamais dans une fenêtre) :

Champ Notes
Nom d'utilisateur Obligatoire. « Lettres, chiffres, point, tiret, _ et @. »
Nom / E-mail Facultatifs ; l'e-mail est nécessaire pour la récupération du mot de passe.
Mot de passe À la création, c'est le mot de passe initial — « l'utilisateur peut le changer dans l'app ». À la modification, « à remplir uniquement pour définir un nouveau mot de passe ».
Actif Désactivé, le compte existe mais « ne peut pas se connecter à l'app ».
Rôles Vus par rôle. Un nouveau compte arrive avec les rôles « par défaut » définis dans les Permissions déjà cochés.

Supprimer un compte (menu de la ligne → Supprimer) est irréversible — l'utilisateur n'arrive plus à entrer dans l'app.

Nota

Les permissions ne se modifient pas sur le compte. Elles se modifient toujours sur les rôles, dans la section Permissions — une exception posée sur une personne est une exception que personne ne retrouvera jamais.

Permissions

La section Permissions définit ce que chaque rôle peut faire dans l'app, sur quatre axes : données, écrans, menus et actions. « Les permissions s'additionnent : avec deux rôles, on garde le meilleur des deux. »

La section Permissions de l'app : les rôles, avec les utilisateurs et les règles de chacun, et les actions déclarées en dessous.
La section Permissions de l'app : les rôles, avec les utilisateurs et les règles de chacun, et les actions déclarées en dessous.

La liste des Rôles montre chacun avec son nombre d'utilisateurs et de règles, et les badges « accès total » et « par défaut ». Nouveau rôle en crée un et ouvre aussitôt sa page, avec cinq onglets :

Général — le Nom, la Description et deux interrupteurs :

  • Accès total : « Tout, sans exception — et cela reste juste quand l'app grandit. » C'est le rôle d'administrateur de l'app ; avec lui activé, les autres onglets ne s'appliquent même pas.
  • Attribué par défaut : « Attribué à toute personne qui s'inscrit ou qui vient d'être créée. »

Données — une ligne par API de table, avec quatre cases — Voir, Créer, Modifier, Supprimer — et un Scope qui dit à quels enregistrements on accède :

Scope Signification
Tous les enregistrements Sans restriction de lignes.
Seulement les miens Seulement les enregistrements dont le « Champ qui dit à qui il appartient » est l'utilisateur connecté.
Avec condition… Seulement les enregistrements qui remplissent un filtre que vous composez — avec des valeurs fixes ou venues de la session.

« Le scope est appliqué sur le serveur, à chaque lecture et à chaque écriture — dans les écrans, dans le code, dans les rapports et dans les workflows. Sans aucune règle, ce rôle ne voit rien de cette API. »

Écrans — pour chaque écran et chaque appareil (Web, Tablette, Téléphone), un niveau : Masqué (« il n'apparaît pas dans les menus, et la route écrite à la main est refusée »), Voir (lecture seule) (« il s'ouvre en lecture seule — les champs et les boutons qui enregistrent sont désactivés ») ou Modifier. Les raccourcis « tout voir » / « tout masquer » remplissent une colonne entière. Le « voir » est une aide visuelle ; ce qui bloque vraiment l'écriture, ce sont les permissions de Données, sur le serveur.

Menus — contrairement aux écrans, un menu est visible par défaut : la porte, c'est l'écran, et elle est déjà fermée. Ici on masque le reste — un groupe entier, la cloche des notifications — par appareil. Décocher un groupe emporte ses enfants avec lui.

Actions — les verbes qui n'existent que dans cette app : approuver, fermer, exporter. Ils se déclarent dans le panneau Actions de la liste des rôles (une Clé comme aprovar-despesa et un Nom, bouton Nouvelle action) et chaque rôle coche celles qu'il accorde. Dans les écrans, n'importe quel widget a la propriété « Accès » pour exiger une action ; en code TypeScript on demande keplin.session.can("aprovar-despesa").

Tout s'enregistre d'un coup avec Enregistrer (« Permissions enregistrées. »). Supprimer un rôle prévient combien d'utilisateurs se retrouvent sans lui — « toute personne qui se retrouve sans aucun rôle cesse de voir les données. »

Rotation des enregistrements

Une app avec du trafic écrit de l'historique sans arrêt — appels, exécutions, clics. La section Rotation des enregistrements décide « combien de jours chaque type d'enregistrement est conservé avant d'être supprimé. Zéro jour signifie conserver indéfiniment. »

La matrice de la rotation des enregistrements, avec les jours à conserver par type
La matrice de la rotation des enregistrements, avec les jours à conserver par type

C'est une grille avec une ligne par type d'Enregistrement et le délai dans Conserver (le champ affiche « Conservé indéfiniment » quand il est à zéro) :

Enregistrement Ce que c'est D'origine
Appels aux APIs « Une ligne par requête GraphQL. C'est ce qui grossit le plus vite dans une app à fort trafic. » Conservé indéfiniment
Exécutions de scripts « L'historique qui apparaît dans le bouton « Exécutions » de l'éditeur de scripts. » Conservé indéfiniment
Erreurs des apps « Les occurrences des problèmes que le Radar affiche. Les supprimer ne fait pas disparaître le problème, seulement son historique. » Conservé indéfiniment
Navigation et clics « Gros volume et valeur courte : cela sert à enquêter sur ce qui vient de se passer, pas à faire de l'historique. » 2 jours
Planifications « Les heures prévues et ce qui n'a pas été respecté. Ce qui a échoué est conservé deux fois plus longtemps. » 30 jours
Fiches de workflow « Seulement celles qui sont déjà terminées. Celles qui s'exécutent encore ou qui attendent quelqu'un ne sont jamais supprimées. Celles qui ont échoué restent deux fois plus longtemps. » Conservé indéfiniment
Audit « Qui a fait quoi. Il est partagé par toutes les apps, c'est donc toujours le délai le plus long d'entre elles qui s'applique. » Conservé indéfiniment

Enregistrer applique la politique (« Rotation enregistrée. ») et le nettoyage se met à tourner en fond, tous les jours.

Dica

Dans une app de production, fixez des délais réels dès le premier jour — 30 à 90 jours pour les appels aux APIs est un point de départ sain. « Conserver indéfiniment » est excellent en développement et une facture de disque en production.

Limites à garder en tête

Les limites que vous rencontrerez dans les paramètres et dans les gestes de ce chapitre :

Quoi Limite
Nom de l'app 2 à 120 caractères
Description de l'app Jusqu'à 500 caractères
Nom d'utilisateur d'un utilisateur de l'app 2 à 120 caractères (lettres, chiffres, point, tiret, _ et @)
Passphrase d'exportation 8 caractères minimum
Package d'import Maximum 200 Mo
Rotation des enregistrements 0 à 3650 jours par type (0 = conserver indéfiniment)

Les limites globales — la durée des sessions et la taille maximale des fichiers envoyés — ne sont pas par app : elles vivent dans les Paramètres de la plateforme, dans le panneau « Sessions et limites », et valent pour toute l'installation.