Dashboard operacionalOpen-source

dashboard-sheets

Projeto Streamlit para ler planilhas, proteger credenciais fora da imagem e publicar imagem multi-arch via GitHub Actions/GHCR.

StreamlitGoogle Sheets APIDocker multi-archGitHub Actions

Leitura técnica

Leitura rápida do case

Problema

Planilhas viram operação manual quando ninguém transforma os dados em tela. O deploy também precisa evitar credencial dentro de imagem e rodar em AMD64/ARM64.

Solução

O dashboard lê Google Sheets por credencial montada read-only, roda como usuário não-root, publica imagem multi-arch e inclui healthcheck sem depender de curl.

Stack

Streamlit · Google Sheets API · Docker multi-arch · GitHub Actions

Status

Open-source

Arquitetura

Planilha vira painel sem colocar segredo na imagem

O Compose monta `credentials.json` como read-only e controla recursos via env. A imagem usa base Python slim multi-arch.

Fluxo técnico

  • Entrada
  • Processamento
  • Persistência
  • Saída
Fluxograma
Renderizando fluxograma…

Fluxo em etapas

01Entrada
Google SheetsPlanilha como fonte de dados
02Acesso
Credenciais/APICredencial read-only montada fora da imagem
03Processamento
StreamlitLeitura e renderizacao do app
04Processamento
Transformacao/cacheCache TTL e preparacao visual
05Saida
Dashboard webPainel operacional
06Operacao
Docker/GHCRImagem multi-arch pronta para deploy
Código do diagrama (Mermaid)
Cole em qualquer renderizador Mermaid
flowchart LR
  sheets["Google Sheets"]
  credentials["Credenciais/API"]
  streamlit["Streamlit"]
  transform["Transformacao/cache"]
  dashboard["Dashboard web"]
  image["Docker/GHCR"]
  sheets --> credentials
  credentials --> streamlit
  streamlit --> transform
  transform --> dashboard
  dashboard --> image
1. Google Sheets (Entrada) → Credenciais/API. 2. Credenciais/API (Acesso) → Streamlit. 3. Streamlit (Processamento) → Transformacao/cache. 4. Transformacao/cache (Processamento) → Dashboard web. 5. Dashboard web (Saida) → Docker/GHCR. 6. Docker/GHCR (Operacao).

Stack e responsabilidades

  • Streamlit

    Interface rápida para dados operacionais.

  • Google Sheets API

    Fonte de dados externa.

  • Docker buildx

    Build multi-arch AMD64/ARM64.

  • GitHub Actions / GHCR

    Publicação automática de imagem.

Decisões técnicas

  • Sem Alpine

    README escolhe `python:3.12-slim` para evitar builds nativos dolorosos de dependências científicas.

  • Segredo fora da imagem

    `credentials.json` entra por bind mount read-only, não no build.

  • Container com menor privilégio

    Usuário não-root, filesystem read-only, tmpfs e no-new-privileges documentados.

Operação

  • documentadoPortainer

    Guia com stack por imagem pronta ou build do Git.

  • documentadoHealthcheck

    Health via Python dentro do container.

  • documentadoGHCR

    Workflow publica `ghcr.io/gabedsam01/dashboard-sheets:latest`.

Status e próximos passos

  • Adicionar exemplos de telas quando houver dados públicos seguros.
  • Documentar variações de autenticação por ambiente.

Contato

Quer algo parecido para seu processo?

Se existe uma entrada repetida, uma etapa manual e uma saída esperada, provavelmente dá para desenhar um sistema.

Falar sobre um projeto