Skip to main content

Gere dashboards visuais como imagens usando HTML/CSS e Playwright.

Project description

Dashgen

📊 Gere dashboards visuais como imagens (PNG) diretamente do Python com HTML, Tailwind CSS e Chart.js.


✨ O que é?

dashgen é um micro-framework que permite criar dashboards dinâmicos e exportá-los como imagens de alta qualidade.

Ideal para gerar relatórios diários, KPIs, resumos visuais e compartilhar automaticamente via e-mail, WhatsApp, sistemas internos etc.


🛠 Instalação

pip install dashgen
playwright install

🚀 Exemplo Completo

from dashgen import Dashboard
from dashgen.core.layout import Row, Column

# Criar o dashboard com altura automática, título estilizado e tema
db = Dashboard(
    title="📊 Relatório de Desempenho Comercial",
    title_style="text-3xl font-bold text-emerald-700",
    logo_path="logo.png",
    size=(1080, None),
    auto_size=True,
    theme={
        "primary": "#0f766e",
        "accent": "#22d3ee",
        "bg": "#f0fdfa",
        "text": "#082f49"
    }
)

# Linha com dois cards
db.add(Row(
    Column(6).add_card("Receita Acumulada", 9000000, 10000000),
    Column(6).add_card("Unidades Vendidas", 430, 500)
))

# Linha com tabela e gráfico de barras
dados = [
    {"Nome": "Projeto A", "Meta": "R$ 3M", "Realizado": "R$ 2.4M", "Variação": "-20%"},
    {"Nome": "Projeto B", "Meta": "R$ 5M", "Realizado": "R$ 5.2M", "Variação": "+4%"}
]

db.add(Row(
    Column(6).add_table("Desempenho por Projeto", dados, ["Nome", "Meta", "Realizado", "Variação"]),
    Column(6).add_chart(
        "bar",
        "Vendas por Mês",
        [
            {"label": "Jan", "value": 120},
            {"label": "Fev", "value": 135},
            {"label": "Mar", "value": 160},
            {"label": "Abr", "value": 110},
            {"label": "Mai", "value": 190}
        ],
        options={
            "height": 300,
            "show_data_labels": True,
            "show_legend": False,
            "show_x_axis": True,
            "show_y_axis": True,
            "autosize_x": True,
            "bar_color": "#0f766e"
        }
    )
))

# Linha com gráfico de linha (largura total)
db.add(Row(
    Column(12).add_chart(
        "line",
        "Receita Total (R$)",
        [
            {"label": "Jan", "value": 1200000},
            {"label": "Fev", "value": 1450000},
            {"label": "Mar", "value": 1600000},
            {"label": "Abr", "value": 1800000},
            {"label": "Mai", "value": 2100000}
        ],
        options={
            "height": 460,
            "show_legend": False,
            "show_x_axis": True,
            "show_y_axis": True,
            "autosize_x": True,
            "tension": 0.4,
            "fill": False,
            "border_color": "#22d3ee"
        }
    )
))

# Gerar imagem
db.generate("output_dashboard.png")
print("✅ Dashboard gerado com sucesso!")

🧱 Componentes Disponíveis

📐 Layout

  • Row(...): Agrupa colunas
  • Column(width=...): Define largura (1 a 12)

📦 Card (KPI)

Column(6).add_card("Título", valor, meta, style={ ... })

Suporta personalização com:

  • title_color, title_size, text_size
  • bar_color, card_class

📊 Tabela

Column(6).add_table("Título", data, headers)
  • data: lista de dicionários
  • headers: nomes das colunas a exibir

📈 Gráfico (Chart.js)

Column(6).add_chart("bar" ou "line", "Título", data, options={...})
  • data: lista com label e value

  • options:

    • height: altura do canvas
    • fill: preencher área sob a linha
    • tension: suavidade das curvas
    • autosize_x / autosize_y: expandir horizontal/vertical
    • show_legend: mostrar legenda
    • show_x_axis / show_y_axis: mostrar eixos
    • show_data_labels: mostrar valores sobre as barras

🎨 Tema Personalizado

theme = {
    "primary": "#005f73",  # Barras e títulos
    "accent": "#94d2bd",   # Detalhes
    "bg": "#fefae0",       # Fundo da imagem
    "text": "#001219"      # Cor do texto
}

🧠 Funcionalidades Especiais

  • auto_size=True: ajusta altura da imagem com base no conteúdo
  • Responsivo com Tailwind
  • Gráficos com Chart.js
  • Rótulos de valores (chartjs-plugin-datalabels)
  • Estilização por componente (style, options)

📚 API Referência

📘 Dashboard(...)

Parâmetro Tipo Descrição
title str Título do dashboard
logo_path str (opcional) Caminho da logo
size (int, int) Tamanho fixo da imagem
auto_size bool Ajuste automático de altura
theme dict Cores do tema

✅ Requisitos

  • Python 3.7+
  • playwright
  • jinja2
pip install dashgen
playwright install

🖼 Gere imagens de dashboards com visual moderno, responsivo e exportável – em uma linha de código.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dashgen-0.2.2.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dashgen-0.2.2-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file dashgen-0.2.2.tar.gz.

File metadata

  • Download URL: dashgen-0.2.2.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for dashgen-0.2.2.tar.gz
Algorithm Hash digest
SHA256 a0d545a20451519c5d7f89fec3b6c958c30b82bc5a25ae6ea84dc3dc29b81b77
MD5 a404e89bb323687f0b93ad26200ba093
BLAKE2b-256 6d0028643958db7e3e55600985bfb56928cc552636871b26f547ff3e2eb3d125

See more details on using hashes here.

File details

Details for the file dashgen-0.2.2-py3-none-any.whl.

File metadata

  • Download URL: dashgen-0.2.2-py3-none-any.whl
  • Upload date:
  • Size: 11.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for dashgen-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7c7f54e0326ebe5f33523235843a6d5e29236ea46f620d889d93877d195efee2
MD5 4f66186f11ffc3f50ecf5d67b1336914
BLAKE2b-256 158d81138d816dbc6d13da310f0c2730ab43a915bed0c2c86eb24fb56f18bcc6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page