Referência v3
Voltar à plataforma

Fluxo Completo — Do Zero ao Módulo em Produção

Passo a passo completo para criar, testar e publicar um módulo funcional.

Visão geral do fluxo

1

Criar projeto

Acesse a IDE, clique em "Novo Projeto", preencha o nome e o nome do módulo.

2

Desenvolver

Edite os arquivos no editor Monaco. Use o terminal para testar código PHP.

3

Analisar

Clique em "Analisar código" para verificar erros antes de publicar.

4

Ativar

Clique em "Ativar". Instala deps, roda migrations e ativa as rotas imediatamente.

6

Testar

Use o API Route Tester (Ctrl+T) para testar as rotas diretamente na IDE.

Passo 1 — Criar o projeto

  1. Acesse /dashboard/ide
  2. Clique em "Novo Projeto"
  3. Preencha: Nome do projeto (ex: "Loja de Produtos") e Nome do módulo em PascalCase (ex: Produto)
  4. Marque "Gerar estrutura padrão"
  5. Clique em "Criar Projeto" — a IDE abre automaticamente

Passo 2 — Configurar o banco de dados

Abra Database/connection.php e defina qual banco usar:

<?php
return 'core'; // usa DB_* do .env

Abra Database/Migrations/ e edite a migration para criar sua tabela:

'up' => function (PDO $pdo): void {
    $driver = $pdo->getAttribute(PDO::ATTR_DRIVER_NAME);
    if ($driver === 'pgsql') {
        $pdo->exec("CREATE TABLE IF NOT EXISTS produtos (
            id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
            nome VARCHAR(255) NOT NULL,
            preco DECIMAL(10,2) NOT NULL DEFAULT 0,
            criado_em TIMESTAMPTZ NOT NULL DEFAULT NOW()
        )");
    } else {
        $pdo->exec("CREATE TABLE IF NOT EXISTS produtos (
            id CHAR(36) PRIMARY KEY,
            nome VARCHAR(255) NOT NULL,
            preco DECIMAL(10,2) NOT NULL DEFAULT 0,
            criado_em DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
    }
},

Passo 3 — Definir as rotas

Abra Routes/web.php e defina as rotas com os middlewares adequados:

<?php

use Src\Modules\Produto\Controllers\ProdutoController;
use Src\Kernel\Middlewares\AuthHybridMiddleware;
use Src\Kernel\Middlewares\AdminOnlyMiddleware;

/** @var \Src\Kernel\Contracts\RouterInterface $router */

$auth  = [AuthHybridMiddleware::class];
$admin = [AuthHybridMiddleware::class, AdminOnlyMiddleware::class];

$router->get('/api/produto',       [ProdutoController::class, 'listar'],    $auth);
$router->get('/api/produto/{id}',  [ProdutoController::class, 'buscar'],    $auth);
$router->post('/api/produto',      [ProdutoController::class, 'criar'],     $auth);
$router->put('/api/produto/{id}',  [ProdutoController::class, 'atualizar'], $auth);
$router->delete('/api/produto/{id}', [ProdutoController::class, 'deletar'], $admin);

Passo 4 — Analisar e corrigir

  1. No painel lateral da IDE, clique em "Analisar código"
  2. Se houver erros, clique em "Corrigir automaticamente"
  3. Corrija manualmente os erros que não têm correção automática
  4. Repita até não haver erros bloqueantes

Passo 5 — Ativar o módulo

O módulo já existe em src/Modules/Produto/ desde a criação — cada arquivo salvo é sincronizado automaticamente. Quando estiver pronto, clique em "Ativar" no painel lateral. O sistema:

  1. Instala dependências declaradas no composer.json do módulo
  2. Executa as migrations — a tabela produtos é criada
  3. Executa os seeders automaticamente
  4. Ativa as rotas — ficam disponíveis imediatamente na API

Passo 6 — Testar as rotas

  1. Pressione Ctrl + T para abrir o API Route Tester
  2. Na aba "Rotas", clique em GET /api/produto
  3. Na aba "Auth", selecione Bearer Token e cole seu token JWT
  4. Clique em "Enviar" — veja a resposta em tempo real
  5. Salve a requisição clicando em "Salvar" para reutilizar depois
Como obter o token JWT para testar

No API Route Tester, faça um POST para /api/login com {"login": "seu_usuario", "senha": "sua_senha"}. O campo access_token da resposta é o Bearer token para usar nas outras requisições.

Passo 6 — Conectar ao frontend (opcional)

Se precisar conectar uma aplicação frontend externa, envie um e-mail para [email protected] com a URL do seu frontend. O admin adicionará ao CORS e sua aplicação poderá fazer requisições à API.