Logosulfite.app
rafagazani/sulfite 999999

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 usoComo 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#

AmbienteComo 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#

PacoteO 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);
}