Pular para o conteúdo principal

Core Back vs Core Front

Os dois pacotes têm papéis distintos e se comunicam via HTTP — nunca há acoplamento direto de código entre eles.

oon-core-back

Pacote Node.js / Express / Mongoose. Responsável por:

  • Registrar models via defineModel e gerar schemas Mongoose
  • Expor CRUD automático (GET /modelo, POST /modelo, PUT /modelo/:id, DELETE /modelo/:id)
  • Servir GET /core/metadata — contrato entre back e front
  • Validar requisições com as funções de defineValidation
  • Executar hooks de domínio via defineTrigger (pre/post save)
  • Controlar acesso com JWT + RBAC por role
  • Registrar rotas customizadas via defineRoutes
  • Carregar módulos opinativos: Omie, Currencies, Assistants, Pipelines, Documents

O backend sobe com uma linha:

backend/index.js (gerado pelo scaffold)
const { start } = require("@oondemand/oon-core-back");
start();

O start()central.config.js + pasta src/, registra tudo e sobe o Express.


oon-core-front

Pacote React / TypeScript / Vite. Responsável por:

  • Shell completo: layout, sidebar, breadcrumb, loading, error states
  • Providers: QueryClient, AuthProvider, ApiProvider, ChakraUI
  • Roteamento por metadata — lê /core/metadata e monta as rotas automaticamente
  • SDK REST (useOonResource, useOonApi) — sem precisar escrever fetch/axios
  • Componentes Core*CoreCollection, CoreDocument, CorePipeline, etc.
  • RBAC no frontend via PermissionGate e RouteGuard

O frontend sobe com uma linha:

frontend/src/main.tsx (gerado pelo scaffold)
import { start } from "@oondemand/oon-core-front";
import { appConfig } from "../central.ui";
start(appConfig);

Fluxo de dados

Browser

│ 1. GET /core/metadata

oon-core-back ──► retorna models, fields, menus, features

│ 2. renderiza views baseado na metadata

oon-core-front ──► monta rotas + sidebar automaticamente

│ 3. usuário interage → GET /clientes?page=1&search=...

oon-core-back ──► retorna { results: [...], pagination: {...} }

│ 4. DataGrid renderiza os dados

oon-core-front ──► tabela paginada com colunas do tipo correto

Separação de responsabilidades

ResponsabilidadeBackFront
Schema / Mongoose
Validação de negócio
Autenticação (JWT)
RBAC✅ (middleware)✅ (PermissionGate)
Metadata / contrato✅ (expõe)✅ (consome)
Componentes de UI
Formulários / tabelas
Estado / cache✅ (React Query)