Template repository para criar aplicações Streamlit na Plataforma DGB (Destaques do Governo Brasileiro).
Este é um template pronto para uso que fornece a estrutura básica para desenvolver e deployar aplicações Streamlit na infraestrutura DGB no Google Cloud Platform.
- Python 3.11+
- pip
-
Clone este repositório (ou use "Use this template" no GitHub):
git clone https://github.com/destaquesgovbr/streamlit-boilerplate.git cd streamlit-boilerplate -
Instale as dependências:
pip install -r requirements.txt
-
Execute o app localmente:
streamlit run app/main.py
-
Acesse
http://localhost:8501no navegador
- Código da aplicação:
app/main.py - Componentes reutilizáveis:
app/components/ - Funções auxiliares:
app/utils/ - Configuração do Streamlit:
.streamlit/config.toml - Metadados do app:
.streamlit-app.yaml
# Instalar dependências de desenvolvimento
pip install -r requirements-dev.txt
# Rodar testes
pytest
# Rodar testes com cobertura
pytest --cov=app tests/-
Abra um issue no repositório destaquesgovbr-infra
-
Preencha os dados da aplicação:
- Nome do app (slug, ex:
budget-analysis) - Nome do repositório
- Descrição
- Resource tier (small/medium/large)
- Tipo de service account (compartilhada/dedicada)
- Nome do app (slug, ex:
-
Aguarde a aprovação e merge do PR automático
Após o merge e apply do Terraform, você receberá os valores para configurar os seguintes secrets no seu repositório:
GCP_WORKLOAD_IDENTITY_PROVIDERGCP_SERVICE_ACCOUNT
Para adicionar secrets:
- Vá em Settings → Secrets and variables → Actions
- Clique em "New repository secret"
- Adicione os dois secrets acima
Edite o arquivo .github/workflows/build-deploy.yml e altere a variável APP_NAME para o nome registrado no passo 1:
env:
APP_NAME: seu-app-name # Altere aquiEdite o arquivo .streamlit-app.yaml com as informações da sua aplicação:
name: "Nome da Sua Aplicação"
description: "Descrição clara do que o app faz"
owner:
name: "Seu Nome/Time"
email: "seu-email@exemplo.com"
# ... outros camposFaça push para a branch main:
git add .
git commit -m "Configure app for DGB platform"
git push origin mainO GitHub Actions irá automaticamente:
- Construir a imagem Docker
- Fazer push para o Artifact Registry
- Fazer deploy no Cloud Run
- Exibir a URL pública do app
Se seu app precisa acessar secrets do Secret Manager:
- Abra um issue em destaquesgovbr-infra
- Especifique quais secrets seu app precisa acessar
- Aguarde aprovação e apply do Terraform
Para usar secrets no código:
from google.cloud import secretmanager
client = secretmanager.SecretManagerServiceClient()
secret_name = f"projects/inspire-7-finep/secrets/my-secret/versions/latest"
response = client.access_secret_version(request={"name": secret_name})
secret_value = response.payload.data.decode("UTF-8")streamlit-boilerplate/
├── .github/
│ └── workflows/
│ └── build-deploy.yml # CI/CD workflow
├── app/
│ ├── __init__.py
│ ├── main.py # Aplicação principal
│ ├── components/ # Componentes reutilizáveis
│ │ └── __init__.py
│ └── utils/ # Funções auxiliares
│ └── __init__.py
├── tests/
│ ├── __init__.py
│ └── test_app.py # Testes
├── .streamlit/
│ └── config.toml # Configuração do Streamlit
├── .streamlit-app.yaml # Metadados para catálogo
├── Dockerfile # Container definition
├── requirements.txt # Dependências Python
├── requirements-dev.txt # Dependências de desenvolvimento
├── .dockerignore
├── .gitignore
└── README.md
Escolha o tier adequado para sua aplicação:
| Tier | CPU | Memória | Max Instâncias | Uso Recomendado |
|---|---|---|---|---|
| small | 1 | 512MB | 3 | Apps leves, dashboards simples |
| medium | 1 | 1GB | 5 | Apps moderados, processamento leve |
| large | 2 | 2GB | 10 | Apps pesados, ML, processamento intenso |
Para problemas ou dúvidas:
- Consulte a documentação da plataforma
- Abra um issue em destaquesgovbr-infra
AGPL-3.0 License - veja LICENSE para detalhes.