Site estático de página única da comunidade Python de Minas Gerais. Usa apenas HTML, CSS e JavaScript vanilla — não há dependências, etapa de build ou gerador de site.
python3 -m http.server 8000Abra http://localhost:8000. Também funciona em qualquer hospedagem de
arquivos estáticos, incluindo GitHub Pages.
Os arquivos abaixo são copiados para o site sem transformação. Não é preciso editar HTML, CSS ou JavaScript para alterar as listas:
data/events.json— agenda de eventos;data/members.json— pessoas colaboradoras;data/posts.json— posts do blog (opcional);data/site.json— textos institucionais, links, projetos e código de conduta.
Depois de mudar um JSON, valide a sintaxe:
python3 -m json.tool data/events.json >/dev/null
python3 -m json.tool data/members.json >/dev/null{
"title": { "pt": "Nome do encontro", "en": "Event name" },
"date": "2026-10-10",
"time": "19:00",
"place": { "pt": "Belo Horizonte", "en": "Belo Horizonte" },
"href": "https://exemplo.org/evento",
"kind": "palestra"
}Use a data no formato AAAA-MM-DD. Eventos a partir de hoje aparecem em
Próximos; os demais ficam em Eventos anteriores.
{
"name": "Nome da pessoa",
"github": "usuario-github",
"twitter": "@usuario",
"instagram": "usuario",
"linkedin": "usuario",
"telegram": "usuario",
"bluesky": "usuario.bsky.social",
"threads": "usuario",
"mastodon": "@usuario@mastodon.social",
"email": "pessoa@exemplo.org",
"site": { "nome": "Meu site", "href": "https://exemplo.org" }
}Todos os campos, exceto name, são opcionais. Com github, o cartão usa o
avatar público do GitHub. Sem github, um perfil linkedin é usado como
fallback de avatar. Também é possível informar "avatar" com uma URL de imagem,
que sempre tem prioridade. Os campos de rede social aceitam um usuário (com ou
sem @) ou a URL completa do perfil. Para mastodon, use a URL completa ou o
formato @usuario@servidor.
Com autorização do Meetup, a POC em scripts/sync_meetup_events.py faz uma
única requisição manual à página pública do grupo e exporta os eventos para o
mesmo formato do site. Ela não usa credenciais, navegador automatizado ou
agendamento.
# Inspeciona a agenda, sem alterar arquivos.
python3 scripts/sync_meetup_events.py --dry-run
# Grava uma cópia para revisão.
python3 scripts/sync_meetup_events.py --output data/events.meetup.json
# Depois de revisar, substitui a agenda publicada.
python3 scripts/sync_meetup_events.py --output data/events.jsonPor padrão, a POC exporta somente eventos a partir da data atual. Use
--include-past apenas para uma exportação histórica pontual.
O workflow .github/workflows/sync-meetup-events.yml executa toda segunda-feira
às 12:17 UTC e também pode ser disparado em Actions → Sync Meetup events → Run
workflow. Ele atualiza data/events.json no ambiente de execução e abre — ou
atualiza — o PR automation/meetup-events somente quando houver diferença.
Antes do primeiro uso, habilite em Settings → Actions → General → Workflow permissions a opção de leitura e escrita e permita que o GitHub Actions crie pull requests. Não há segredo ou credencial do Meetup no workflow.
O workflow .github/workflows/deploy-pages.yml publica index.html, assets/
e data/ quando mudanças desses arquivos chegam à main; ele também pode ser
executado manualmente. O JSON aprovado no PR de eventos, portanto, é publicado
no próximo merge sem exigir uma cópia local do repositório.
Antes da primeira publicação, configure em Settings → Pages → Build and
deployment a origem como GitHub Actions. Para este repositório, a URL
padrão será https://pythonmg.github.io/site-pythonmg/. O domínio
pythonmg.github.io exige uma configuração de domínio personalizado ou um
repositório de usuário/organização com esse nome.