Pular para o conteúdo principal

start() — Configuração

O frontend tem dois pontos de entrada, dependendo de como você declara a Central:

FunçãoQuando usar
startFromManifest(manifest, runtime)Scaffold padrão — usa central.ui.json
start(config)Quando você quer configuração full TypeScript

startFromManifest (padrão do scaffold)

startFromManifest recebe o manifesto JSON gerado pelo scaffold e um objeto runtime com as URLs de ambiente. É a forma mais simples de iniciar.

src/main.tsx
import { startFromManifest } from "@oondemand/oon-core-front";
import manifest from "../central.ui.json";

startFromManifest(manifest, {
apiBaseUrl: import.meta.env.VITE_API_URL ?? "http://localhost:4000",
meusAppsUrl: import.meta.env.VITE_MEUS_APPS_URL,
});

Formato do central.ui.json

central.ui.json
{
"name": "Minha Central",
"slug": "minha-central",
"backend": { "metadataUrl": "/core/metadata" },
"navigation": { "mode": "auto" },
"collections": [
{ "model": "Pessoa", "mode": "dynamic" }
],
"pipelines": [],
"documents": []
}

start() — Configuração TypeScript

start(config) é o ponto de entrada completo quando você quer controle total via TypeScript.

Assinatura

import { start } from "@oondemand/oon-core-front";
import type { OonCoreFrontConfig } from "@oondemand/oon-core-front";

start(config: OonCoreFrontConfig)

Exemplo completo

central.ui.ts
import { start, defineCollectionView } from "@oondemand/oon-core-front";

start({
app: {
id: "gestao-servicos",
name: "Gestão de Serviços",
title: "Gestão de Serviços",
logo: "/logo.svg",
favicon: "/favicon.ico",
version: "1.0.0",
},
api: {
baseUrl: import.meta.env.VITE_API_URL,
timeout: 30000,
},
auth: {
mode: "bearer",
loginUrl: "https://meusapps.oondemand.com.br/login",
},
security: {
enableRouteGuard: true,
enablePermissionGate: true,
disableConsoleInProduction: true,
},
ui: {
views: [
defineCollectionView({ model: "Servico", label: "Serviços" }),
defineCollectionView({ model: "Cliente", label: "Clientes" }),
],
},
});

Referência de OonCoreFrontConfig

app — obrigatório

CampoTipoDescrição
idstring✅ Identificador único da Central
namestring✅ Nome da Central
titlestringTítulo da aba do browser
logostringURL do logo (exibido na sidebar)
faviconstringURL do favicon
versionstringVersão exibida na UI

api — obrigatório

CampoTipoDescrição
baseUrlstring✅ URL base do backend
assistantBaseUrlstringURL do serviço de assistentes
meusAppsUrlstringURL do portal Meus Apps
versionPrefixstringPrefixo de versão nas chamadas (ex.: /v1)
timeoutnumberTimeout em ms. Default: sem timeout

auth

CampoTipoDescrição
mode"bearer" | "cookie" | "external-sso"Modo de autenticação. Default: "bearer"
loginUrlstringURL de redirect para login (SSO)
tokenParamstringNome do query param com o token. Default: "code"

security

CampoTipoDescrição
enableRouteGuardbooleanRedireciona rotas privadas sem auth
enablePermissionGatebooleanOculta elementos sem permissão
disableConsoleInProductionbooleanRemove console.log em produção

ui

ui: {
views: OonViewDefinition[]
}

Atalho para declarar views sem criar um módulo inteiro. Veja defineViews.

modules

Array de OonModule para registrar módulos customizados com rotas e menus próprios.