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.
dashboard-sheets
Projeto Streamlit para ler planilhas, proteger credenciais fora da imagem e publicar imagem multi-arch via GitHub Actions/GHCR.
Leitura técnica
Leitura rápida do case
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.
Streamlit · Google Sheets API · Docker multi-arch · GitHub Actions
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
Fluxo em etapas
Código do diagrama (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 --> imageStack 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.