Publicar e usar
Congelar uma versão, publicar a app num endereço, decidir quem pode o quê e criar as contas de quem a vai usar.
A app está construída. Falta a última etapa — e é a que muda a natureza do que fizeste: até aqui a Gestão de Clientes era um projecto dentro da plataforma; a partir daqui é uma aplicação com endereço próprio, contas próprias e utilizadores que nunca ouviram falar do Keplin.
Quatro passos: versão, endereço, quem pode o quê, contas.
Versões — o que é publicado
Enquanto constróis, trabalhas sempre numa versão de trabalho. Uma versão é um retrato completo da app: ecrãs, modelo, APIs, scripts, tema — e os dados dela.
- No topo da barra da app, clica no selector de Versões.
- Clica em Nova versão….
- Dá-lhe um nome —
1.0, por exemplo — e escolhe A partir de a versão de origem. - Confirma. "Versão «1.0» criada — estás a trabalhar nela."

Atenção
As versões não partilham dados. Uma versão nova nasce com uma cópia dos dados da origem e segue a vida dela. Isto é exactamente o que queres para experimentar sem medo — e exactamente o que te apanha se publicares uma versão à espera de encontrar lá os registos da outra.
Com versões, o padrão de trabalho fica claro: main é onde se
desenvolve, 1.0 é o que está no ar, e o Merge selectivo traz para a
versão publicada apenas as alterações que já estão prontas.
Publicar num endereço
- Abre as Definições da app (o ícone de engrenagem no topo da barra).
- No grupo Aplicação, escolhe Geral.
- Desce até à secção Publicação.

A regra está escrita ali: "Cada host serve UMA versão desta app (o DNS é
à parte). Sem nenhum, a app só responde em /app/gestao-clientes, com a
versão de trabalho."
- No campo do host, escreve o endereço — por exemplo
crm.aminhaempresa.pt. - No selector ao lado, escolhe a versão que esse endereço vai servir.
- Clica em Publicar. "Host publicado."
O que isto quer dizer, na prática:
| Situação | Onde a app responde | Que versão serve |
|---|---|---|
| Sem hosts publicados | /app/gestao-clientes |
A versão de trabalho |
| Com um host | Esse endereço | A versão que lhe associaste |
| Com dois hosts | Ambos | Cada um a sua — é assim que se tem um crm.empresa.pt estável e um crm-testes.empresa.pt com a versão seguinte |
Nota
A plataforma associa o endereço à app e à versão; apontar o DNS
desse endereço para o servidor é trabalho de rede, feito fora daqui.
Enquanto o DNS não estiver feito, /app/gestao-clientes continua a
servir a app na mesma.
Para tirar um endereço de serviço, Despublicar.
Quem pode o quê — os roles
Antes de criar contas, decide o que cada tipo de pessoa pode fazer. Isso faz-se em roles, e não pessoa a pessoa.
- Nas Definições da app, grupo Utilizadores, escolhe Permissões.
- Clica em Novo role e dá-lhe um nome. Para o nosso CRM, três chegam.

| Role | Descrição | Para quem |
|---|---|---|
equipa |
Equipa comercial — acesso completo aos dados do CRM | Quem trabalha as contas todos os dias. É o role dado por omissão. |
direcao |
Direcção — aprova as oportunidades acima de 25.000 € | Quem decide. |
leitura |
Consulta — vê o CRM sem poder alterar | Quem só precisa de ver. |
Dentro de um role, o trabalho reparte-se por cinco separadores:
| Separador | O que decide |
|---|---|
| Geral | Nome, descrição, Acesso total e Dado por omissão (atribuído a quem for criado de novo). |
| Dados | Por cada API de tabela, o que se pode — Ver, Criar, Alterar, Apagar — e o Âmbito: Todos os registos, Só os meus ou Com condição…. |
| Ecrãs | Por ecrã e por dispositivo: Escondido, Ver (só leitura) ou Editar. |
| Menus | O que se esconde da navegação. Ao contrário dos ecrãs, um menu é visível por omissão. |
| Acções | Os verbos que só existem nesta app — aprovar-oportunidade, por exemplo. Declaram-se aqui e exigem-se nos widgets. |
Para o role equipa, o mínimo que faz o CRM funcionar:
- No separador Dados, marca Ver, Criar, Alterar e
Apagar nas três APIs (
contas,contactos,oportunidades), com o âmbito Todos os registos. - No separador Ecrãs, põe os quatro ecrãs em Editar, nos três dispositivos.
- No separador Geral, liga Dado por omissão.
- Gravar — "Permissões guardadas."
Para o role leitura, o mesmo com uma diferença: só Ver nos dados, e
os ecrãs em Ver (só leitura).
Atenção
"Sem regra nenhuma, este role não vê nada desta API." Um role novo começa vazio — e um utilizador só com esse role entra na app e não vê dados nenhuns. Se a app parecer vazia a alguém, é quase sempre aqui que está a resposta.
As contas de quem usa a app
Chegou a parte que separa as duas populações do Keplin. Estas contas não são contas da plataforma:
- Nas Definições da app, grupo Utilizadores, escolhe Utilizadores da app. O aviso no topo diz tudo: "Estes utilizadores são da app construída — fazem login na app em runtime e não têm nenhum acesso à plataforma KEPLIN."

- Clica em Novo utilizador. O formulário abre em página.

- Preenche:
| Campo | O que pôr |
|---|---|
| Username | Obrigatório — letras, números, ponto, hífen, _ e @. Ex.: bruno.dias. |
| Nome | O nome da pessoa; é o que aparece no menu do utilizador dentro da app. |
| Opcional, mas necessário para a recuperação de password. | |
| Password | A password inicial — "o utilizador pode alterá-la na app". |
| Activo | Ligado. Desligado, a conta existe mas não entra. |
| Roles | Os roles da pessoa. Uma conta nova traz pré-marcados os que estão dados por omissão. |
- Gravar — "Utilizador criado."
Repete para a equipa toda. Quando forem muitas pessoas, a lista trabalha por ti: selecciona várias contas e usa Dar role, Tirar role, Activar ou Desactivar de uma vez.
Dica
O aviso âmbar "… utilizador(es) sem role nenhum — não vêem dados nem ecrãs" é clicável e filtra logo essas contas. Vale a pena olhar para ele sempre que alguém disser que "a app não mostra nada".
Entrar na app
Está tudo. Abre o endereço publicado — ou /app/gestao-clientes, se
ainda não publicaste nenhum host — numa janela normal do browser.

O que aparece é o ecrã Login: os campos Utilizador e Palavra-passe, o botão Entrar e o link Esqueci-me da palavra-passe. É um dos ecrãs de Sistema da app — vem feito e pintado com o tema que escolheste na etapa anterior.
Entra com uma das contas que criaste. A app abre no Menu inicial que definiste: o dashboard, com os indicadores calculados sobre os dados reais, o menu com o teu logo e as cores da tua marca.

Percorre o que construíste, do ponto de vista de quem vai usar isto todos os dias:
- Início — os quatro indicadores, o gráfico do pipeline e a tabela de próximos fechos.
- Contas — a lista; clica numa linha e cais na ficha dessa conta, com os contactos dela ao lado.
- Muda um campo e clica em Guardar — o aviso aparece e voltas à lista, já com a alteração.
- Clica em Nova conta — a mesma ficha, agora em branco. Preenche e grava: o registo é criado.
- Oportunidades — arrasta um cartão de Proposta para Negociação. A fase é gravada no momento; volta ao Início e o gráfico já mudou.
O guia acabou. E agora?
Tens uma aplicação de negócio a funcionar, construída de ponta a ponta. Daqui, cada peça tem um capítulo que vai muito mais fundo do que este guia pôde ir:
| Se queres… | Vai a |
|---|---|
| Ecrãs mais ricos — mais widgets, eventos, layouts por dispositivo | Construtor de ecrãs |
| Ligar a app a bases de dados que já existem | Datasources |
| Expor os dados a sistemas de fora | APIs & GraphQL e Chaves de API |
| Mais automação — dependências, ficheiros, o SDK completo | Scripts |
| Afinar tudo o que é da app — notificações, armazenamento, retenção | Definições da app |
| Levar esta app para outra instalação | Importar e exportar |
Porque não…?
- Porque é que o meu endereço não abre a app? O host está registado na
plataforma, mas o DNS desse endereço tem de apontar para o servidor.
Até isso estar feito, usa
/app/gestao-clientes. - Porque é que o endereço serve a versão errada? Cada host serve UMA versão, escolhida no momento da publicação. Despublica e volta a publicar com a versão certa.
- Porque é que o utilizador entra e não vê nada? Não tem role, ou o role dele não tem regras de Dados. Confirma pela lista de utilizadores (o aviso âmbar) e depois no separador Dados do role.
- Porque é que o utilizador vê o menu mas o ecrã diz que não tem acesso? O ecrã está Escondido para o role dele, no separador Ecrãs — e por dispositivo: pode estar aberto em web e escondido em telemóvel.
- Porque é que os dados que criei a testar não aparecem na versão publicada? Porque as versões não partilham dados. Criaste-os na versão de trabalho; o host está a servir outra.
- Porque é que a minha conta da plataforma não entra na app? Porque são populações diferentes. Para entrar na app precisas de uma conta de Utilizadores da app, mesmo sendo tu a construí-la.