start() — Configuração
O frontend tem dois pontos de entrada, dependendo de como você declara a Central:
| Função | Quando 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
| Campo | Tipo | Descrição |
|---|---|---|
id | string | ✅ Identificador único da Central |
name | string | ✅ Nome da Central |
title | string | Título da aba do browser |
logo | string | URL do logo (exibido na sidebar) |
favicon | string | URL do favicon |
version | string | Versão exibida na UI |
api — obrigatório
| Campo | Tipo | Descrição |
|---|---|---|
baseUrl | string | ✅ URL base do backend |
assistantBaseUrl | string | URL do serviço de assistentes |
meusAppsUrl | string | URL do portal Meus Apps |
versionPrefix | string | Prefixo de versão nas chamadas (ex.: /v1) |
timeout | number | Timeout em ms. Default: sem timeout |
auth
| Campo | Tipo | Descrição |
|---|---|---|
mode | "bearer" | "cookie" | "external-sso" | Modo de autenticação. Default: "bearer" |
loginUrl | string | URL de redirect para login (SSO) |
tokenParam | string | Nome do query param com o token. Default: "code" |
security
| Campo | Tipo | Descrição |
|---|---|---|
enableRouteGuard | boolean | Redireciona rotas privadas sem auth |
enablePermissionGate | boolean | Oculta elementos sem permissão |
disableConsoleInProduction | boolean | Remove 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.