sulfite.app
JSON → PDF, HTML, CSV, Excel
Defina relatórios como JSON, alimente com dados, renderize no formato que precisar.
Como funciona
Defina
Escreva o layout em JSON.
Processe
Parser e processador mapeiam os dados para páginas.
Exporte
Renderize em PDF, HTML, CSV ou Excel.
5 formatos de saída
Gera PDF, HTML, CSV, Excel e ZPL — tudo a partir do mesmo JSON.
12 tipos de elementos
Text, Field, Aggregate, Image, Table, Chart, Barcode, Line, Rect, Circle, RichText e Spacer.
Editor visual
Sulfite Studio — canvas com drag & drop, zoom, undo/redo e preview em tempo real.
CLI nativo
Gere PDFs via linha de comando. Compilável para binário nativo com dart compile.
Chat IA
Descreva o relatório em linguagem natural. O agente LLM gera o JSON, valida o schema e auto-corrige em até 3 tentativas.
Para quem é o Sulfite?#
Se você já usou FastReport, JasperReports ou Crystal Reports, sabe o poder de um motor de relatórios de verdade. O Sulfite traz essa mesma ideia para o ecossistema Dart e Flutter — e, no futuro, para servidores backend também.
O problema real#
Você vendeu seu primeiro app de vendas. O cliente pede um relatório de faturamento mensal. Você programa, entrega, funciona. Aí vem o segundo cliente — e quer o mesmo relatório, mas com colunas diferentes, outro logo, outra ordem. O terceiro quer um relatório que nem existia. Sem um motor de relatórios, cada pedido vira demanda de desenvolvimento: mexer no código, compilar, publicar uma nova versão. Com o Sulfite, o layout é um JSON. Você muda o template, alimenta com os dados do cliente e gera o PDF — sem recompilar nada.
Aplicações comuns#
| Caso de uso | Como o Sulfite resolve |
|---|---|
| Relatórios sob medida por cliente | Cada cliente tem seu próprio template JSON. Mude o layout sem tocar no código do app. |
| Notas fiscais e recibos | Monte o layout uma vez no Studio, alimente com dados do seu ERP e gere PDFs idênticos para cada venda. |
| Relatórios gerenciais | Vendas por período, estoque, fluxo de caixa — com agrupamento, totais e gráficos. Exporte em PDF ou Excel. |
| Etiquetas e códigos de barras | Imprima etiquetas de produto com código de barras (Code128, EAN13, QR Code) direto do app Flutter. |
| Laudos e fichas técnicas | Relatórios com imagens, tabelas e campos dinâmicos para clínicas, laboratórios e indústria. |
| Catálogos de produtos | Gere catálogos com foto, descrição e preço a partir de um JSON com centenas de itens. |
| Boletos e carnês | Layout fixo com dados variáveis — perfeito para gerar documentos em lote. |
| Dashboards exportáveis | O mesmo relatório que aparece na tela do app pode ser exportado como PDF ou HTML com gráficos. |
| Servidor de relatórios | Use o sulfite_core no backend (Dart Frog, Shelf) para gerar PDFs sob demanda via API REST. |
Onde o Sulfite roda#
| Ambiente | Como usar |
|---|---|
| App Flutter (mobile/desktop/web) | Importe sulfite_core e gere relatórios dentro do app. |
| Editor visual | Use o Sulfite Studio para desenhar o layout sem escrever JSON na mão. |
| Linha de comando | Compile o CLI como binário nativo e gere PDFs em scripts e pipelines. |
| Servidor backend |
Use o
sulfite_server
para gerar relatórios via API REST — armazenamento, autenticação, geração síncrona/assíncrona, conexões criptografadas.
|
Ecossistema#
| Pacote | O que faz |
|---|---|
| sulfite_core | Engine de processamento e renderização. Modelos, parser, processador de dados, renderers (PDF, HTML, CSV, Excel, ZPL), parâmetros com lookups dinâmicos e validação. |
| sulfite_studio | Editor visual Flutter. Canvas com drag & drop, zoom, undo/redo, filtros dinâmicos, preview em tempo real. |
| sulfite_datasources | Resolvers para fontes externas — REST, PostgreSQL e PostgREST/Supabase. Lookups de banco com paginação e cache. |
| sulfite_report_manager | Widget Flutter completo de gerenciamento de relatórios — CRUD, busca, permissões granulares, visualizador integrado, gerenciador de conexões. |
| sulfite_chat | Integração com IA para geração de relatórios. Agente LLM gera JSON a partir de linguagem natural, com auto-correção. |
| sulfite_cli | Ferramenta de linha de comando. Recebe JSON, gera PDF. Compilável para binário nativo. |
Exemplo rápido#
import 'dart:io';
import 'package:sulfite_core/sulfite_core.dart';
void main() async {
final engine = SulfiteEngineImpl();
final report = await engine.parseReport(File('report.json').readAsStringSync());
final data = jsonDecode(File('data.json').readAsStringSync());
final context = await engine.processData(report, data);
final pdfBytes = await engine.renderToPdf(context);
await File('output.pdf').writeAsBytes(pdfBytes);
// Ou HTML, CSV, Excel, ZPL:
final htmlBytes = await engine.renderToHtml(context);
final csvBytes = await engine.renderToCsv(context);
final xlsxBytes = await engine.renderToExcel(context);
final zplBytes = await engine.renderToZpl(context);
}