Pide el sistema. La IA lo arma, lo prueba y lo publica.
Describe en español lo que necesitas. El agente crea la base de datos, las pantallas y las reglas, y tú ajustas lo que quieras en el editor visual.
- Probado por el agente, que llena, guarda y verifica cada pantalla
- Permisos por pantalla, 2FA e historial de cambios de fábrica
- El sistema es tuyo: si cambias de proveedor, se va contigo
Ya viene listo, sin empezar de cero
- Login con 2FA
- Permisos por acción
- Historial de cambios
- Dashboards
- Kanban y agenda
- Punto de venta
- PDF con código QR
- Pix, tarjeta y boleto
- Sitio público
- Cuatro idiomas
¿Quieres un sistema completo ya armado? MadFood es un sistema de delivery para pizzería y restaurante listo, con pago único.
Mira al agente armar un sistema completo.
Grabación real, con narración: el pedido en español, el agente creando y probando, un ajuste en el editor visual y el sistema funcionando con listado, dashboard y PDF.
Tu navegador no pudo reproducir este video. Abrir el archivo del video
Leer la transcripción (en portugués)
¿Y si pudieras describir el sistema de tu empresa con tus palabras, y verlo funcionando en minutos? Aquí, el dueño de un servicio técnico le pide al agente de MadBuilder un sistema completo: clientes, técnicos, equipos y órdenes de servicio, con dashboard y la orden de servicio en PDF. Primero, arma un roadmap con fases y tareas, y pide tu aprobación antes de empezar.
Luego crea las tablas en la base de datos y genera cada pantalla: formularios, listados y el dashboard. Todo en código Laravel de verdad, sin que escribas una sola línea.
Después, él mismo levanta el sistema en la Prueba online, entra con el usuario administrador y revisa las pantallas que creó. Y no te quedas atado a lo que hizo la IA. Todo se abre en el editor visual. Aquí, el campo técnico se convierte en una lista con los nombres del equipo, en pocos clics.
Cada ajuste se vuelve código al instante, en el Blade y el PHP de tu proyecto. En el documento de la orden de servicio, cada campo está vinculado a los datos del cliente y del equipo, directo en el panel.
Listo. Este es el sistema funcionando, con doscientas veintinueve órdenes de servicio registradas. El listado tiene búsqueda, filtros y paginación, listos para el día a día del equipo. El formulario muestra el equipo y el técnico por nombre, con valores y fechas en el formato correcto.
En el dashboard: la facturación, las órdenes por estado, el trabajo de cada técnico y la facturación por marca.
Y la orden de servicio sale en PDF, lista para imprimir y entregar al cliente.
Del pedido al sistema funcionando, con un código Laravel que es tuyo. Pruébalo ahora en madbuilder punto dev.
Del diagrama al deploy, en el mismo proyecto.
Modelar, armar, probar y publicar tocan los mismos archivos. Nada se exporta a mitad de camino.
Modelado de datos
Tablas y relaciones en un diagrama, con el equipo a la par. Cada cambio se vuelve una migration incremental.
Agente de IA que arma
Pide en español. Lee la base de datos, crea las tablas que faltan y genera las pantallas con componentes listos, en vez de escribir todo desde cero. Por eso gasta de 65% a 75% menos tokens.
Tú 14:05
Crea un CRUD de venta con ítems (maestro-detalle): la venta tiene cliente, fecha y valor total; cada ítem tiene producto, cantidad y valor unitario. Genera el listado y el formulario.
Agente 14:08
- Voy a crear el CRUD maestro-detalle de venta. Primero necesito revisar la base de datos y crear las tablas que todavía no existen.
mad_db_inspect list_tables17 tablas en el modelo, ninguna de venta- Necesito crear produto, venda y venda_item. Dejaré pessoa como cliente.
mad_db_table create produtonome, preco_venda, unidade, ativo y el model Produtomad_db_table create vendacliente_id, data_venda, valor_total y el model Vendamad_db_table create venda_itemvenda_id, produto_id, quantidade, valor_unitario, valor_total y el model VendaItem- Tablas creadas. Ahora voy a cargar la skill del framework MAD y generar el CRUD maestro-detalle.
skill mad-frameworkskill cargadacrud_generate venda + detalhe venda_item2 pantallas creadas: VendaList y VendaForm
Prueba online
Un clic sube el sistema a un entorno aislado, con el PHP y la base de datos que elijas.
Deploy donde quieras
Por SSH a tu servidor, push a tu Git o ZIP. El código va incluido y cualquier dev lo puede tomar.
MadCloud
Publica sin montar un servidor: dominio propio, HTTPS y base de datos gestionada.
- Regiones
- Atlanta, o São Paulo en el servidor privado
- Backup
- diario, de 7 a 60 días según el plan
- Base de datos
- PostgreSQL gestionado
- Entornos
- staging y producción
Trae tu propio agente
Claude Code, Cursor o cualquier cliente MCP crea pantallas, modela datos y publica. Un token por proyecto, cada llamada registrada.
$ claude mcp add madbuilder \
--token mgw_•••••••• \
--project 1042 Operación incluida
Errores y rendimiento rastreados sin contratar una herramienta aparte, 2FA, auditoría y un copiloto de IA con tu marca dentro del sistema.
- MadTraceerrores y APM
- Auditoríaincluso lo que hace la IA
- Copilotowhitelabel, en la app publicada
Tipos de pantalla listos para arrancar.
Elige el tipo, apunta a la tabla y la pantalla sale lista. Todas estas son de la app de ejemplo, funcionando.
-
Formulario Crear, editar y eliminar registros, en 5 variantes: registro, maestro-detalle, wizard, consulta y libre.
-
Listado Tablas paginadas con búsqueda, filtro por columna, ordenación y exportación.
-
Informe Datos agrupados con subtotales, filtro por período y exportación a PDF o Excel.
-
Hoja de captura Captura por lotes como en una hoja de cálculo: pega desde Excel, valida y guarda todo en una sola transacción.
-
Dashboard Indicadores y gráficos que leen las cifras directo de tu base de datos.
-
Timeline Cualquier tabla con fecha se convierte en una línea de tiempo de eventos.
-
Calendario Agenda de eventos con vista por día, semana, mes o en lista.
-
Organigrama Árbol jerárquico con zoom y búsqueda, donde arrastrar un nodo cambia a su padre.
-
Kanban Tablero con una columna por estado y tarjetas que arrastras entre ellas.
-
Cola de aprobación Los pendientes de los flujos de aprobación, para aprobar, devolver o rechazar.
-
Documento Orden de servicio, factura o contrato armados con los datos del registro.
-
Wizard de varios pasos Formulario por pasos, con una tabla por sección, que guarda en cada paso o solo al final.
-
Gantt Cronograma con tareas, fases y dependencias, más el registro de tareas conectado a él.
Rayos X de una pantalla
Lo que hay debajo de cada pantalla.
El agente de IA arma las pantallas con componentes listos, en vez de escribir todo desde cero. Debajo de cada una, ya viene todo esto.
-
La pantalla
Una pantalla real, de una app generada.
El listado de ventas del proyecto de ejemplo, tal como sale de MadBuilder. Ahora, lo que hay debajo.
-
Capa 1
Componentes listos.
Son 91 en la paleta, en 9 categorías, con más de 40 tipos de campo, como CEP (código postal de Brasil), CNPJ (identificador de empresas de Brasil), moneda y firma. Cada uno se conecta a las columnas de tu base de datos.
-
Capa 2
Reglas en PHP, en un Laravel común.
Modelo Eloquent, controller, vista Blade, ruta y migration en un proyecto estándar. No hay un motor nuestro corriendo por detrás.
-
Capa 3
Seguridad que ya viene configurada.
Los perfiles definen, pantalla por pantalla, quién puede ver, crear, editar, eliminar y exportar. Incluye 2FA y auditoría, también de lo que hace la IA.
-
Capa 4
Base de datos con migrations por etapas.
La base de datos no se recrea en cada cambio: solo se aplican las modificaciones, y los datos de producción se quedan donde están. Son seis bases de datos, de MySQL a Firebird.
-
Capa 5
Deploy donde quieras.
Por SSH en tu servidor, push a tu Git o a MadCloud. Cada publicación por SSH hace antes un backup con fecha.
-
Capa 6
Errores y rendimiento, sin una herramienta aparte.
La app generada ya registra errores, mide el rendimiento, detecta consultas N+1 y envía alertas, con MadTrace.
Una pantalla. Todo esto viene incluido.
Componentes, reglas, seguridad, base de datos, deploy y observabilidad salen listos en cada proyecto, y el código es tuyo.
Para devs y CTOs
El código es tuyo. Ábrelo y compruébalo.
Cada pantalla se vuelve archivos de un proyecto Laravel común. Pasa el mouse sobre un campo y mira las líneas que generó, tal como salen en la descarga.
Genera código para el stack que tu equipo ya 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 verdad
Model Eloquent, controller, view Blade, ruta y migration en un proyecto estándar. No hay un motor nuestro corriendo por detrás.
Tu código sobrevive
Las líneas @mad-block marcan dónde vive tu código. Cuando la pantalla cambia y el archivo se genera de nuevo, lo que está dentro queda como lo dejaste.
Sin quedar atado
El framework que corre el sistema es de código abierto, con licencia MIT, y entra por Composer como cualquier paquete PHP.
En el sistema que entregas
El sistema ya sale sabiendo trabajar.
Copilot, kanban, caja, documentos, permisos y cobro vienen listos en el sistema que MadBuilder entrega, conectados a tu base de datos.
Pregúntale al sistema, recibe el gráfico.
Tu cliente pregunta en español y Copilot consulta la base de datos del propio sistema para responder, sin que nadie hable de tablas.
Copilot y dashboards
Cada perfil hace solo lo que puede.
Ver, agregar, editar, eliminar y exportar, pantalla por pantalla. El servidor rechaza la acción; no solo esconde el botón.
Administración y seguridad
La orden se vuelve un PDF con código QR.
Ítems, totales y firma, con enlace propio y el mismo control de acceso de las pantallas.
Punto de venta, documentos y finanzas
Caja abierta en el navegador.
Código de barras, varios pagos con vuelto y comprobante no fiscal. La venta descuenta el inventario.
Punto de venta, documentos y finanzas
Arrastras la tarjeta, queda guardado.
El kanban ya viene conectado a tus tablas, con conteo y suma por etapa. Agenda, Gantt e informes también.
Pantallas listas
Vende el sistema por suscripción.
Planes por módulo y mensualidad por Pix, tarjeta o boleto, con régua de morosidad y panel de las suscripciones.
SaaS y multiempresa
Pide tu primer sistema hoy.
Crea la cuenta, describe lo que necesitas y mira al agente armar y probar en la Prueba online. Beta abierta, sin tarjeta.
- Crea la cuentaBeta abierta, sin tarjeta.
- Arma una pantallaEn el editor visual, en código o pidiéndoselo a la IA.
- Descarga el .zipUn proyecto Laravel que corre donde quieras.