# O que é o OonCore > A base para criar Centrais operacionais sob demanda — padronizadas, seguras e evolutivas — em que o seu código é apenas o domínio. O **OonCore** é o SDK da Oon para construir **Centrais operacionais**: sistemas internos orientados a dados, como centrais de compras, financeiro, eventos, contratos, tickets ou integrações. Ele é distribuído como três pacotes npm coordenados e é a fundação de todo App publicado na **Plataforma Oon**. A ideia central é simples: uma Central não deve nascer como um sistema completo do zero. Ela nasce como uma **camada de domínio** que consome os recursos do Core. ```txt Central (seu código) ├── backend/src/models/Cliente.js ← defineModel(...) ├── backend/src/validations/... ← defineValidation(...) ├── backend/central.domain.json ← models, fórmulas e validações declarativas ├── backend/central.process.json ← esteiras, bindings e invariantes └── frontend/src/app/app.tsx ← defineOonApp(...) @oondemand/oon-core-back ← CRUD, auth, RBAC, paginação, auditoria @oondemand/oon-core-front ← shell, router, tabelas, forms, SDK REST ``` Em menos de cinco minutos você tem um sistema com CRUD, autenticação, RBAC e interface pronta — sem escrever uma linha de infraestrutura. ## Os três pacotes | Pacote | Papel | |---|---| | `@oondemand/oon-core-back` | Runtime Express/Mongoose: CRUD automático, metadata, RBAC, manifestos de domínio e processo, capabilities (PDF, e-mail, segredos), arquivos, métricas de uso e delivery. | | `@oondemand/oon-core-front` | Shell React: providers, roteamento, guards, temas, componentes `Core*` (coleções, esteiras, documentos, dashboards, UI Kit) e cliente HTTP autenticado. | | `@oondemand/create-central-oon` | CLI: gera uma Central completa, sincroniza a documentação canônica para Agents e executa `doctor`, `conformance`, `dev` e `example`. | > [!IMPORTANT] > Os três pacotes são **versionados juntos**. Sempre use a mesma versão em backend, frontend e gerador — a versão atual é a **0.7.43**, da linha `0.7.x`. ## O que você recebe pronto - **CRUD metadata-driven** — declare uma model e ganhe rotas REST paginadas, busca, import/export, metadata e formulários derivados. - **Autenticação e sessão** — integração com a Central de Ativações na plataforma e sessão local segura no desenvolvimento. - **RBAC no backend** — perfis e permissões declarados em `central.app.json`; o frontend apenas reflete. - **Isolamento por tenant** — escopo aplicado no servidor a partir do contexto autenticado. - **Auditoria** — mutações do CRUD registradas automaticamente. - **Domínio declarativo** — fórmulas, validações, transições de etapa, agregações e invariantes sem `eval`. - **UI operacional** — coleções, modal com abas, grids editáveis inline, esteiras, documentos, dashboards e um kit de componentes. - **Capabilities gerenciadas** — e-mail transacional, PDF e segredos cifrados, sem configurar infraestrutura no App. - **Documentação para Agents** — guias canônicos versionados em `.ooncore/`, prontos para Codex, Claude, ChatGPT e outros. ## Princípios 1. **Dados e regras ficam no backend.** A metadata operacional é exposta pelo backend e o frontend renderiza a partir dela. 2. **Permissões são decididas no backend.** Esconder um botão nunca é proteção. 3. **Prefira declaração a código.** Use manifesto e metadata quando houver contrato; escreva código apenas nos pontos de extensão documentados. 4. **Use somente exports públicos.** Caminhos internos dos pacotes não têm estabilidade garantida. 5. **A Plataforma é homologada.** Identidade, acesso, tenancy, licenciamento e delivery são consumidos — nunca reimplementados no App. ## Modelo mini-monolítico Cada Central começa como um **mini-monólito de negócio**: pequeno, coeso, isolado e capaz de entregar valor rapidamente. Quando uma parte do domínio se tornar reutilizável, crítica ou independente, ela pode evoluir para conector, serviço compartilhado ou micro-serviço. ## Próximos passos ```cards [ { "title": "Quickstart", "href": "/docs/introducao/quickstart", "description": "Gere, rode e abra sua primeira Central em minutos." }, { "title": "Arquitetura", "href": "/docs/introducao/arquitetura", "description": "Como backend, frontend e Plataforma se dividem." }, { "title": "Primeira jornada", "href": "/docs/introducao/primeira-jornada", "description": "Página, ação, endpoint e permissão de ponta a ponta." }, { "title": "Plataforma Oon", "href": "/plataforma", "description": "Publicação, ambientes, licenças e operação." } ] ``` Fonte: https://sdk.oonapps.com/docs/introducao/o-que-e-ooncore