Peça o sistema. A IA monta, testa e põe no ar.
Descreva em português o que você precisa. O agente cria o banco, as telas e as regras, e você ajusta o que quiser no editor visual.
- Testado pelo agente, que preenche, salva e confere cada tela
- Permissão por tela, 2FA e histórico de alterações de fábrica
- O sistema é seu: se trocar de fornecedor, ele vai junto
Já vem pronto, sem começar do zero
- Login com 2FA
- Permissão por ação
- Histórico de alterações
- Dashboards
- Kanban e agenda
- Frente de caixa
- PDF com QR code
- Pix, cartão e boleto
- Site público
- Quatro idiomas
Quer um sistema inteiro já montado? O MadFood é um sistema de delivery para pizzaria e restaurante pronto, com pagamento único.
Veja o agente montar um sistema inteiro.
Gravação real, com narração: o pedido em português, o agente criando e testando, um ajuste no editor visual e o sistema rodando com listagem, dashboard e PDF.
Seu navegador não conseguiu reproduzir este vídeo. Abrir o arquivo do vídeo
Ler a transcrição
E se você pudesse descrever o sistema da sua empresa em português, e ver ele funcionando em minutos? Aqui, o dono de uma assistência técnica pede ao agente do MadBuilder um sistema completo: clientes, técnicos, equipamentos e ordens de serviço, com dashboard e a ordem de serviço em PDF. Primeiro, ele monta um roadmap com fases e tarefas, e pede sua aprovação antes de começar.
Aí ele cria as tabelas no banco e gera cada tela: formulários, listagens e o dashboard. Tudo em código Laravel de verdade, sem você escrever uma linha.
Depois, ele mesmo sobe o sistema no Teste Online, entra com o usuário administrador e confere as telas que criou. E você não fica preso ao que a IA fez. Tudo abre no editor visual. Aqui, o campo técnico vira uma lista com os nomes da equipe, em poucos cliques.
Cada ajuste vira código na hora, no Blade e no PHP do seu projeto. No documento da ordem de serviço, cada campo é ligado aos dados do cliente e do equipamento, direto no painel.
Pronto. Este é o sistema rodando, com duzentas e vinte e nove ordens de serviço cadastradas. A listagem tem busca, filtros e paginação, prontos para o dia a dia da equipe. O formulário mostra o equipamento e o técnico pelo nome, com valor e datas no formato certo.
No dashboard, o faturamento, as ordens por status, o trabalho de cada técnico e o faturamento por marca.
E a ordem de serviço sai em PDF, pronta para imprimir e entregar ao cliente.
Do pedido ao sistema rodando, com um código Laravel que é seu. Teste agora em madbuilder ponto dev.
Do diagrama ao deploy, no mesmo projeto.
Modelar, montar, testar e publicar mexem nos mesmos arquivos. Nada é exportado no meio do caminho.
Modelagem de dados
Tabelas e relacionamentos num diagrama, com a equipe junto. Cada mudança vira migration incremental.
Agente de IA que monta
Peça em português. Ele lê o banco, cria as tabelas que faltam e gera as telas com componentes prontos, em vez de escrever tudo do zero. Por isso gasta de 65% a 75% menos tokens.
Você 14:05
Crie um CRUD de venda com itens (mestre-detalhe): venda tem cliente, data e valor total; cada item tem produto, quantidade e valor unitário. Gere a listagem e o formulário.
Agente 14:08
- Vou criar o CRUD mestre-detalhe de venda. Primeiro preciso verificar o banco de dados e criar as tabelas que ainda não existem.
mad_db_inspect list_tables17 tabelas no modelo, nenhuma de venda- Preciso criar produto, venda e venda_item. Deixarei pessoa como cliente.
mad_db_table create produtonome, preco_venda, unidade, ativo e o model Produtomad_db_table create vendacliente_id, data_venda, valor_total e o model Vendamad_db_table create venda_itemvenda_id, produto_id, quantidade, valor_unitario, valor_total e o model VendaItem- Tabelas criadas. Agora vou carregar a skill do framework MAD e gerar o CRUD mestre-detalhe.
skill mad-frameworkskill carregadacrud_generate venda + detalhe venda_item2 telas criadas: VendaList e VendaForm
Teste Online
Um clique sobe o sistema num ambiente isolado, com o PHP e o banco que você escolher.
Deploy onde quiser
Por SSH no seu servidor, push no seu Git ou ZIP. O código vai junto, e qualquer dev assume.
MadCloud
Publique sem montar servidor: domínio próprio, HTTPS e banco gerenciado.
- Regiões
- Atlanta, ou São Paulo no servidor privado
- Backup
- diário, de 7 a 60 dias conforme o plano
- Banco
- PostgreSQL gerenciado
- Ambientes
- staging e produção
Traga o seu agente
Claude Code, Cursor ou qualquer cliente MCP cria telas, modela dados e publica. Um token por projeto, cada chamada registrada.
$ claude mcp add madbuilder \
--token mgw_•••••••• \
--project 1042 Operação inclusa
Erros e performance rastreados sem contratar ferramenta à parte, 2FA, auditoria e um copiloto de IA com a sua marca dentro do sistema.
- MadTraceerros e APM
- Auditoriainclusive do que a IA faz
- Copilotowhitelabel, no app publicado
Tipos de tela prontos pra partir.
Escolha o tipo, aponte a tabela e a tela sai pronta. Todas estas são do app de exemplo, rodando.
-
Formulário Criar, editar e excluir registros, em 5 variações: cadastro, mestre-detalhe, wizard, consulta e livre.
-
Listagem Tabelas paginadas com busca, filtro por coluna, ordenação e exportação.
-
Relatório Dados agrupados com subtotais, filtro por período e exportação para PDF ou Excel.
-
Planilha de lançamento Lançamento em lote como numa planilha: cole do Excel, valide e grave tudo numa só transação.
-
Dashboard Indicadores e gráficos que leem os números direto do seu banco.
-
Timeline Qualquer tabela com data vira uma linha do tempo de eventos.
-
Calendário Agenda de eventos com visão por dia, semana, mês ou em lista.
-
Organograma Árvore hierárquica com zoom e busca, em que arrastar um nó troca o pai dele.
-
Kanban Quadro com uma coluna por status e cards que você arrasta entre elas.
-
Fila de Aprovação As pendências dos fluxos de aprovação, para aprovar, devolver ou rejeitar.
-
Documento Ordem de serviço, nota ou contrato montados com os dados do registro.
-
Wizard multi-etapas Formulário em etapas, com uma tabela por seção, que salva a cada etapa ou só no final.
-
Gantt Cronograma com tarefas, fases e dependências, mais o cadastro de tarefas ligado a ele.
Raio-X de uma tela
O que vem por baixo de cada tela.
O agente de IA monta as telas com componentes prontos, em vez de escrever tudo do zero. Por baixo de cada uma, já vem tudo isto.
-
A tela
Uma tela de verdade, de um app gerado.
A listagem de vendas do projeto de exemplo, do jeito que sai do MadBuilder. Agora, o que vem por baixo dela.
-
Camada 1
Componentes prontos.
São 91 na paleta, em 9 categorias, com mais de 40 tipos de campo, como CEP, CNPJ, moeda e assinatura. Cada um se liga às colunas do seu banco.
-
Camada 2
Regras em PHP, num Laravel comum.
Model Eloquent, controller, view Blade, rota e migration num projeto padrão. Não existe um motor nosso rodando por trás.
-
Camada 3
Segurança que já vem configurada.
Perfis definem, tela por tela, quem pode ver, incluir, editar, excluir e exportar. Tem 2FA e auditoria, inclusive do que a IA faz.
-
Camada 4
Banco com migrations por etapas.
O banco não é recriado a cada mudança: só as alterações são aplicadas, e os dados de produção ficam onde estão. São seis bancos, do MySQL ao Firebird.
-
Camada 5
Deploy onde quiser.
Por SSH no seu servidor, push no seu Git ou na MadCloud. Cada publicação por SSH faz um backup datado antes.
-
Camada 6
Erros e desempenho, sem ferramenta à parte.
O app gerado já registra erros, mede o desempenho, acha consultas N+1 e manda alertas, no MadTrace.
Uma tela. Tudo isso já vem junto.
Componentes, regras, segurança, banco, deploy e observabilidade saem prontos em cada projeto, e o código é seu.
Para devs e CTOs
O código é seu. Abra e confira.
Cada tela vira arquivos de um projeto Laravel comum. Passe o mouse num campo e veja as linhas que ele gerou, do jeito que saem no download.
Gera código pra stack que o seu time já usa
- Laravel
- Eloquent
- Blade
- Alpine
- MySQL
- MariaDB
- PostgreSQL
- SQL Server
- Oracle
- Firebird
- SQLite
resources/views/venda-form.blade.php
<mad-form submit="onSave" data-mad-entity-id="693"><mad-form-section title="Cadastro de Venda" icon="file-text"><mad-form-grid :cols="2"><mad-dbcombo-field data-mad-column-id="4533" data-mad-entity-id="693" data-mad-ref-entity-id="691" data-mad-ref-column-id="4521" data-mad-ref-display-column-id="4522" name="pessoa_id" label="Pessoa" database="app" model="Pessoa" key="id" display="{nome}" order-by="nome" order="asc" :required="true" /><mad-date-field data-mad-column-id="4534" data-mad-entity-id="693" name="data" label="Data" :required="true" /></mad-form-grid><mad-form-grid :cols="2"><mad-money-field name="total" label="Total" prefix="R$" :decimals="2" :readonly="true" /><mad-input-field data-mad-column-id="4536" data-mad-entity-id="693" name="status" label="Status" /></mad-form-grid></mad-form-section><mad-form-actions><mad-btn variant="primary" type="submit" icon="save">Salvar</mad-btn></mad-form-actions></mad-form> app/Models/App/Venda.php
<?phpnamespace App\Models\App;use Illuminate\Database\Eloquent\Model;use Illuminate\Database\Eloquent\Relations\BelongsTo;use Illuminate\Database\Eloquent\Relations\HasMany;use Mad\Database\Concerns\HasIdPolicy;use Mad\Database\Concerns\HasMadAudit;class Venda extends Model{use HasIdPolicy, HasMadAudit;protected $connection = 'app';protected $table = 'venda';// Colunas de auditoria/soft-delete desta tabela (chave ausente = desligada).protected array $madAudit = ['created_at' => 'created_at','updated_at' => 'updated_at',];protected $fillable = ['pessoa_id','data','total','status',];public static function rules($id = null): array{return ['pessoa_id' => 'required|integer','data' => 'required','total' => 'nullable|numeric','status' => 'nullable|max:20',];}public function pessoa(): BelongsTo{return $this->belongsTo(Pessoa::class, 'pessoa_id');}public function vendaItems(): HasMany{return $this->hasMany(VendaItem::class, 'venda_id');}protected static function booted(): void{static::deleting(function (self $model) {if (VendaItem::where('venda_id', '=', $model->id)->exists()) {throw new \Exception('Não é possível deletar este registro pois ele está sendo utilizado em outra parte do sistema');}});}} app/Control/VendaForm.php
<?phpuse Mad\Component\MadComponent;use Mad\Form\MadForm;use Mad\Form\MadValidationException;use Mad\Http\MadResponse;use Mad\Ui\MadMessage;use App\Models\App\Venda;use Illuminate\Support\Facades\DB;// use App\Control\VendaList;// @mad-block:user:uses {// @mad-block:user:uses }/*** @mad-generated* @mad-entity-id 693*/class VendaForm extends MadComponent{// @mad-block:config:properties {protected static string $wrapper = self::DRAWER;protected static string $title = 'Cadastro de Venda';protected static string $size = '600px';protected static string $side = 'right';public MadForm $form;// int|string: tabela cuja PK é varchar/char (código, matrícula) tem chave// de texto — `int` transformaria 'ABC-1' em 0 e salvaria no registro errado.public int|string|null $recordId = null;// @mad-block:config:properties }// @mad-block:user:properties {// @mad-block:user:properties }// @mad-block:lifecycle:mount {public function mount(array $params = []): void{$this->form = new MadForm('form');if (! empty($params['id'])) {$this->onEdit($params['id']);}}// @mad-block:lifecycle:mount }// @mad-block:lifecycle:onEdit {public function onEdit(int|string $id): void{// @mad-block:locked:onEdit:master {$venda = Venda::findOrFail($id);$this->recordId = $venda->getKey();// @mad-block:locked:onEdit:master }// @mad-block:detail-load-hooks {// @mad-block:detail-load-hooks }$this->form->fill($venda);}// @mad-block:lifecycle:onEdit }// @mad-block:lifecycle:onSave {public function onSave(): MadResponse{try {$this->form->validate(Venda::rules($this->recordId));$venda = DB::connection('app')->transaction(function () {// @mad-block:locked:onSave:master {$venda = Venda::findOrNew($this->recordId);// @mad-block:locked:onSave:master }// @mad-block:detail-save-hooks {// @mad-block:detail-save-hooks }$this->form->save($venda);$this->recordId = $venda->getKey();return $venda;});// @mad-block:combo-origin {// Tela aberta por um combo ("Sem resultados → Cadastrar novo"):// devolve a option nova selecionada e fecha o overlay. Fora desse// caso returnToCombo() responde null e o fluxo normal segue.if (($__combo = $this->returnToCombo($this->recordId)) !== null) {return $__combo;}// @mad-block:combo-origin }// @mad-block:after-save {return (new MadResponse())->toast('Registro salvo com sucesso!', 'success')->closeDrawer()->manageRow($this->recordId, VendaList::class);// @mad-block:after-save }} catch (MadValidationException $e) {return $e->asInline();} catch (\Throwable $e) {return MadMessage::error('Erro ao salvar', $e->getMessage());}}// @mad-block:lifecycle:onSave }// Caminho da view gerado pela plataforma a partir da PASTA DO MÓDULO.// Bloco byte-exact: NÃO edite — trocar o módulo regenera este path sozinho.// @mad-block:locked:view-name {protected function viewName(): string{return 'venda-form';}// @mad-block:locked:view-name }// @mad-block:lifecycle:view {protected function view(): string|array{$replaces = [];return [$this->viewName(), $replaces];}// @mad-block:lifecycle:view }// @mad-block:user:functions {// @mad-block:user:functions }} - app
- Control
- VendaForm.php
- VendaList.php
- PessoaForm.php+ 5 telas
- Models/App
- Venda.php
- Pessoa.php+ 2 models
- Control
- database/migrations
- …_create_app_tables.php
- …_add_app_foreign_keys.php
- resources/views
- venda-form.blade.php
- venda-list.blade.php+ 6 views
- routes/modules/generated.php
- composer.jsonlaravel/framework ^13.8
Laravel de verdade
Model Eloquent, controller, view Blade, rota e migration num projeto padrão. Não existe um motor nosso rodando por trás.
Seu código sobrevive
As linhas @mad-block marcam onde o seu código mora. Quando a tela muda e o arquivo é gerado de novo, o que está dentro delas fica como você deixou.
Sem ficar preso
O framework que roda o sistema tem código aberto, sob licença MIT, e entra pelo Composer como qualquer pacote PHP.
No sistema que você entrega
O sistema já sai sabendo trabalhar.
Copilot, kanban, caixa, documentos, permissões e cobrança vêm prontos no sistema que o MadBuilder entrega, ligados ao seu banco.
Pergunte ao sistema, receba o gráfico.
Seu cliente pergunta em português e o Copilot consulta o banco do próprio sistema para responder, sem ninguém falar em tabela.
Copilot e dashboards
Cada perfil faz só o que pode.
Ver, incluir, editar, excluir e exportar, tela por tela. O servidor recusa a ação, não só esconde o botão.
Administração e segurança
A OS vira PDF com QR code.
Itens, totais e assinatura, com link próprio e o mesmo controle de acesso das telas.
PDV, documentos e financeiro
Caixa aberto no navegador.
Código de barras, vários pagamentos com troco e comprovante não fiscal. A venda baixa o estoque.
PDV, documentos e financeiro
Arrastou o card, está gravado.
O kanban já vem ligado às suas tabelas, com contagem e soma por etapa. Agenda, Gantt e relatórios também.
Telas prontas
Venda o sistema por assinatura.
Planos por módulo e mensalidade por Pix, cartão ou boleto, com régua de inadimplência e painel das assinaturas.
SaaS e multiempresa
Feito para empresassoftware housesdevs e CTOs
Peça o primeiro sistema hoje.
Crie a conta, descreva o que precisa e veja o agente montar e testar no Teste Online. Beta aberto, sem cartão.
- Crie a contaBeta aberto, sem cartão.
- Monte uma telaNo visual, no código ou pedindo à IA.
- Baixe o .zipUm projeto Laravel que roda onde você quiser.