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
defineModele 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() lê 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/metadatae monta as rotas automaticamente - SDK REST (
useOonResource,useOonApi) — sem precisar escreverfetch/axios - Componentes
Core*—CoreCollection,CoreDocument,CorePipeline, etc. - RBAC no frontend via
PermissionGateeRouteGuard
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
| Responsabilidade | Back | Front |
|---|---|---|
| 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) |