v3.0 Template Engine, plugins autocontidos e zero dependências. Ver novidades

Docs
Voltar ao blog
Novidades

25 de August de 2026

Maker Universe v3.0: Novo Template Engine, Plugins Autocontidos e Zero Dependências

Conheça a v3.0 do Maker Universe CRM: arquitetura 100% autoral, compilador de templates próprio, plugins modulares e alta performance para seu servidor.

MUCRM v3.0 — Nova Arquitetura

A evolução do ecossistema Maker Universe CRM dá um salto definitivo com o lançamento da Versão 3.0 (v3).

Esta atualização representa uma reformulação arquitetural completa do core: um micro-runtime 100% autoral, enxuto e projetado para oferecer carregamento instantâneo, zero lag e máxima facilidade no desenvolvimento de temas e extensões para servidores e comunidades gamer.


1. Novo Template Engine Próprio

A v3 introduz um compilador de templates nativo, direto e sem sobrecarga de processamento.

A nova sintaxe adota diretivas limpas iniciadas por dois-pontos (:), organizando a estrutura do layout sem poluir o HTML.

Estrutura do Layout Principal

Arquivo:

layouts/app.php

<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <title>Maker Universe CRM</title>

    <!-- CSS Global -->
    <link rel="stylesheet" href="{{ src('css/app.css') }}">

    <!-- Injeção dos estilos específicos da view/plugin -->
    :include_styles
</head>
<body>

    <main>
        :content
    </main>

    <!-- Scripts globais -->
    <script src="{{ src('js/app.js') }}"></script>

    <!-- Injeção dos scripts da view/plugin no fim do body -->
    :include_scripts
</body>
</html>

Uso nas Telas e Componentes

As views podem declarar seus próprios estilos e scripts utilizando as diretivas :styles e :scripts.

<div class="painel-container">
    <h1>Painel do Jogador</h1>
</div>

:styles
    <link rel="stylesheet" href="{{ theme_src('css/painel.css') }}">
:endstyles

:scripts
    <script src="{{ theme_src('js/painel.js') }}"></script>
:endscripts

Essa estrutura permite manter os recursos específicos de cada tela organizados, enquanto o layout principal controla a posição de carregamento dos estilos e scripts.


2. Sistema de Assets em Três Camadas

A gestão de arquivos estáticos foi estruturada em três camadas, separando claramente a raiz pública, o tema ativo e os módulos independentes.

src()

Aponta diretamente para a pasta pública padrão:

{{ src('caminho/arquivo') }}

Exemplo:

<link rel="stylesheet" href="{{ src('css/app.css') }}">

Os arquivos são resolvidos a partir da pasta:

public/

theme_src()

Carrega arquivos estáticos do tema atualmente ativo:

{{ theme_src('caminho/arquivo') }}

Exemplo:

<link rel="stylesheet" href="{{ theme_src('css/painel.css') }}">

Isso permite que cada tema mantenha seus próprios arquivos CSS, JavaScript, imagens e demais recursos.

plugin_src()

Resolve arquivos diretamente dentro da estrutura de assets do próprio plugin:

{{ plugin_src('NomePlugin', 'caminho/arquivo') }}

Exemplo:

<script src="{{ plugin_src('RoletaDaSorte', 'js/roleta.js') }}"></script>

A estrutura pode ser organizada da seguinte maneira:

app/
└── Plugins/
    └── NomePlugin/
        └── assets/
            ├── css/
            ├── js/
            └── images/

3. Plugins 100% Autocontidos

Com o novo plugin_src(), a instalação de novos sistemas — como Roletas, Rankings, Lojas e Caixas Premiadas — torna-se verdadeiramente modular.

Os plugins podem distribuir seus próprios:

  • CSS;
  • JavaScript;
  • imagens;
  • fontes;
  • arquivos estáticos necessários para seu funcionamento.

Tudo permanece dentro da própria estrutura do plugin, sem a necessidade de copiar arquivos manualmente para a pasta pública da aplicação.

Exemplo de Estrutura

app/
└── Plugins/
    └── RoletaDaSorte/
        ├── assets/
        │   ├── css/
        │   │   └── roleta.css
        │   ├── js/
        │   │   └── roleta.js
        │   └── images/
        │       └── background.png
        │
        ├── Controllers/
        ├── Models/
        ├── Views/
        └── routes.php

Dentro da view do plugin:

<link rel="stylesheet" href="{{ plugin_src('RoletaDaSorte', 'css/roleta.css') }}">

<script src="{{ plugin_src('RoletaDaSorte', 'js/roleta.js') }}"></script>

<img src="{{ plugin_src('RoletaDaSorte', 'images/background.png') }}">

Essa arquitetura permite que cada extensão seja distribuída como uma unidade independente, facilitando instalação, manutenção e atualização.


4. Entrada, Validação e Respostas Fluídas (I/O)

O tratamento de requisições no backend foi simplificado através do método $req->check() e do serviço Responder, disponibilizado através do helper $res.

Validação de Dados

URI::post('/shop/comprar', function ($req, $res) {

    // Validação e sanitização direta
    $dados = $req->check([
        'item_id' => 'required|numeric',
        'cupom'   => 'string'
    ]);

    // Resposta encadeada com redirecionamento limpo
    return $res
        ->success('Item adquirido com sucesso!')
        ->to('shop.inventario');
});

O método $req->check() permite validar e obter os dados da requisição de maneira direta, mantendo o código do endpoint limpo e objetivo.

Respostas Fluídas

O serviço Responder permite construir respostas através de métodos encadeados:

return $res
    ->success('Item adquirido com sucesso!')
    ->to('shop.inventario');

Isso facilita operações que precisam retornar mensagens de sucesso e realizar redirecionamentos.


5. Roteamento Declarativo com URI e Helper to()

A declaração de rotas utiliza a fachada URI, permitindo definir os endpoints da aplicação de forma declarativa.

O helper to() permite gerar URLs a partir do nome da rota, evitando links fixos (hardcoded) dentro das views.

Declaração

URI::get(
    '/ranking',
    [RankingController::class, 'index']
)->name('ranking.geral');

A rota recebe o nome:

ranking.geral

Uso no Template

<a href="{{ to('ranking.geral') }}">
    Ver Ranking
</a>

Dessa forma, o template trabalha com o nome da rota, e não diretamente com o caminho da URL.

Caso o endereço da rota seja alterado:

URI::get(
    '/ranking-geral',
    [RankingController::class, 'index']
)->name('ranking.geral');

O template continua utilizando:

<a href="{{ to('ranking.geral') }}">
    Ver Ranking
</a>

Isso mantém as views desacopladas da estrutura física das URLs.


6. Módulo de Segurança Crypt

Para proteger tokens de pagamento, credenciais e integrações sensíveis, a v3 incorpora o módulo nativo Crypt.

O objetivo é disponibilizar métodos diretos para operações de criptografia dentro da própria arquitetura da MUCRM, sem depender de pacotes externos.

Exemplo:

$valorCriptografado = Crypt::encrypt($valor);

$valorOriginal = Crypt::decrypt($valorCriptografado);

O módulo centraliza as operações de proteção de informações sensíveis, mantendo esse recurso integrado ao core da aplicação.


Como Começar

A MUCRM v3.0 representa uma nova etapa na evolução da arquitetura do framework.

Com um micro-runtime próprio, um novo Template Engine, sistema de assets em três camadas, plugins autocontidos, validação simplificada, respostas fluídas, roteamento declarativo e o módulo nativo Crypt, o desenvolvimento de aplicações, temas e extensões torna-se ainda mais rápido, organizado e modular.

A documentação completa, novos tutoriais passo a passo e o material de migração já estão disponíveis.

Atualize seus módulos e aproveite toda a velocidade da nova arquitetura MUCRM v3.0!

Pronto para colocar o servidor no ar?

Licença Master a partir de R$ 24,99/mês.

Ver planos

Presente exclusivo

7 dias grátis

Crie sua conta agora e ganhe acesso completo por 7 dias.

Ao criar sua conta, você concorda com nossos Termos e Políticas.