Um formato aberto e uma engine embarcável para relatórios relacionais — onde cada relatório é um grafo de consulta portável, uma tabela SQLite materializada e um layout paramétrico.
O MAD é uma plataforma embarcada de relatórios relacionais para consultas ad hoc, geração de relatórios e design: os aplicativos MAD Designer e MAD Viewer para iOS e macOS nativo (AppKit), a engine headless que os executa em Linux e macOS, e o formato aberto de documento .mad. Um arquivo .mad armazena toda a definição de um relatório — o snapshot do esquema do banco de dados, o grafo de consulta (tabelas, joins, predicados, agrupamentos) e o layout em bandas de seus elementos — em menos de 100 KB, claramente separado da tabela SQLite materializada (.maddb + .mdcache) que ele produz ao atualizar os dados.
O código está em github.com/mthomason/MAD, sob licença MIT; os nomes e a arte visual dos aplicativos não são cobertos por essa licença (consulte o NOTICE).
Experimente o MAD Designer no macOS (macOS 12.0+, Apple Silicon):
- Homebrew:
brew install --cask mthomason/tap/mad-designer
Download Direto: MAD-Designer-macOS.dmg MAD-Designer-macOS.zip (para downloads diretos, execute xattr -cr "/Applications/MAD Designer.app"uma vez após copiar para/Applications)
MAD Designer para macOS — aplicativo desktop nativo em AppKit (NSDocument, canvas visual de tabelas/joins para consultas, minimapa interativo de seções e designer de relatórios em bandas, além de visualizador paginado de relatórios em PDF/HTML/CSV/JSON):


MAD Designer para iOS, da escolha de uma fonte de dados até a leitura do relatório finalizado no MAD Viewer:
A mesma engine rodando em modo headless no Linux: inspect, schema, query, refresh e
export através da CLI mad, sem servidor de banco de dados e sem credenciais:

O relatório exportado da gravação é HTML puro, podendo ser aberto em qualquer navegador.
.mad empacota o
contrato do esquema, a AST da consulta e o layout de apresentação em um único
artefato inspecionável e comparável via diff, que gera SQL e exportações idênticos byte a byte
entre plataformas Apple e Linux.libpq, SQLite — além de
libarchive/bzip2 e zint para códigos de barras. Nenhum SDK proprietário de relatórios está sendo
revendido.refresh) lê o conjunto de resultados uma única vez
para um cache de linhas em SQLite (MADDataTableFast) e calcula agrupamentos e agregações em duas passagens
a partir dali, mantendo a renderização paginada rápida mesmo dentro da memória de um
celular..mad é um arquivo tar comprimido com bzip2 contendo um store SQLite portável;
nenhum framework da Apple é necessário para abri-lo..madA especificação aberta, um capítulo por arquivo:
O que é um documento ·
O contêiner ·
O armazenamento (store) ·
Leitura e escrita ·
Arquivos complementares ·
Riscos e armadilhas ·
v1 normativa ·
Questões em aberto ·
Verificação
AppKit:
canvas visual de consultas, designer de relatórios em bandas com minimapa e inspetor,
visualizador paginado e instruções de como compilar ou empacotar a partir do código-fonte.mad — inspecione,
atualize e exporte um .mad via Docker em uma única linha de comando..mad versionado no GitHub Actions e envie a exportação como artefato; mthomason/mad-action@v1.MADDatabase, registre o
driver e retorne linhas.Visão — relatórios como tabelas de banco de dados componíveis, consultas
multifonte em um único relatório, views nativas em UIKit além do paradigma do papel
e conversão de arquivos legados do Crystal Reports (.rpt) para arquivos .mad abertos.
O aplicativo MAD Designer — o designer de relatórios construído sobre esta engine — possui seu próprio site em mad.everydayapps.com.
Esta página é uma tradução para o português do Brasil do original em inglês; em caso de divergência, prevalece a versão original em inglês.