Portal oficial do ecossistema DBA BRABO — mentoria técnica para administradores de banco de dados. Site estático, sem framework em runtime, publicado no GitHub Pages.
https://acaciolr.github.io/dba-brabo-site/
| Camada | Escolha | Por quê |
|---|---|---|
| Marcação e estilo | HTML5 + CSS puro | Sem dependência em runtime; Lighthouse alto por construção |
| Interação | JavaScript ES2022, sem bibliotecas | Busca, filtros, accordions, tema e QR cabem em um arquivo |
| Conteúdo | JSON em data/ |
Adicionar mentoria não encosta em HTML |
| Páginas de mentoria | Geradas por tools/build.mjs (Node) |
URLs amigáveis com <title>, Open Graph e schema.org próprios — impossível numa SPA estática |
| Imagens | WebP gerado de Banners/ |
10,9 MB → 1,4 MB, 87% menor |
| Publicação | GitHub Actions → GitHub Pages | git push publica |
Node é necessário apenas para gerar as páginas. O site publicado não carrega nada além de HTML, CSS, JS e imagens.
DBA BRABO PORTAL/
├── index.html home
├── style.css design system completo (tokens, componentes, temas)
├── script.js render dos JSON + busca, filtros, accordions, tema, QR
│
├── data/ ← toda a edição de conteúdo acontece aqui
│ ├── site.json marca, mentor, links, metodologia, investimento
│ ├── mentorias.json as 19 mentorias, com pilares e cores
│ ├── projetos.json ORA BRABO, MySQL Super DBA, SQL BRABO, PG BRABO…
│ ├── tecnologias.json stack por grupo
│ ├── roadmap.json a jornada do DBA
│ ├── faq.json perguntas frequentes
│ └── modulos/
│ └── mysql.json módulos e tópicos detalhados da mentoria MySQL
│
├── mentorias/ GERADO — não editar à mão
│ ├── index.html catálogo
│ └── <slug>/index.html uma pasta por mentoria
│
├── assets/
│ ├── logo/ avatar em 4 tamanhos + favicon.ico
│ ├── banners/ <slug>.webp e <slug>-card.webp
│ └── qr/ QR dos canais, SVG com currentColor
│
├── Banners/ originais, alta resolução — fonte da verdade, nunca alterados
│
├── tools/
│ ├── build.mjs gera mentorias/, sitemap.xml e robots.txt
│ ├── build-assets.py recorta o logo e converte os banners para WebP
│ └── build-qr.py gera os QR a partir das URLs de data/site.json
│
├── docs/
│ └── dominio-proprio.md como apontar www.dbabrabo.com.br
│
├── .github/workflows/deploy.yml
├── sitemap.xml GERADO
└── robots.txt GERADO
O site lê os JSON por fetch, então não funciona abrindo o index.html direto do disco — o navegador bloqueia por CORS. Suba um servidor:
python3 -m http.server 8080
# ou
npx serve .
Depois abra http://localhost:8080.
Banners/ (formato retrato, mesma diagramação dos existentes).tools/build-assets.py, no dicionário MAP, associando ao slug.python3 tools/build-assets.py para gerar os WebP.data/mentorias.json. Campos obrigatórios:
slug, nome, categoria (tecnica ou programa), desc, accent, nivel, tags, tecnologias, pilares.
O bloco banner é derivado do slug automaticamente pelo build.node tools/build.mjs.git add . && git commit && git push.O card na home, o filtro, a busca, o sitemap e a página individual aparecem sozinhos.
Hoje o site mostra “Sob consulta” em todo lugar — nenhum valor foi inventado.
Para publicar valores, em data/mentorias.json, na mentoria desejada:
"investimento": { "valor": "R$ 1.200", "condicao": "à vista ou em 3x" }
E em data/site.json, ligue a exibição:
"investimento": { "exibirPrecos": true, "fallback": "Sob consulta" }
Mentorias que continuarem com "valor": null seguem mostrando o texto de fallback.
Só data/site.json, bloco links. Campo com url vazia simplesmente não renderiza card.
Depois de mexer em qualquer URL que tenha "qr": true, rode:
python3 tools/build-qr.py
Crie data/modulos/<slug>.json seguindo o formato de data/modulos/mysql.json.
Cada tópico aceita: conceito, comoFunciona[], naPratica[], troubleshooting[{sintoma,causa,acao}], tecnologias[], comandos[{desc,lang,code}], nivel.
Tópicos sem esses campos aparecem como lista simples — sem quebrar nada.
data/projetos.json. Se links.github estiver vazio, o botão não aparece.
node tools/build.mjs # regenera as páginas
git add .
git commit -m "Atualiza portal"
git push
O GitHub Actions valida, regenera e publica. Acompanhe em Actions no repositório.
Uma configuração única: em Settings → Pages, mude Source para GitHub Actions. Enquanto isso não for feito, o Pages continua servindo os arquivos da branch — que também estão corretos, já que o build roda antes do commit.
Veja docs/dominio-proprio.md.
Este repositório está dentro de iCloudDrive. Isso já corrompeu o git uma vez: o iCloud renomeou .git/index para .git/index 2, e o git passou a enxergar todos os banners como deletados — um git add . && git push teria apagado a pasta Banners/ do GitHub.
Recomendação: mover o repositório para fora do iCloud.
git clone https://github.com/acaciolr/dba-brabo-site.git C:\Users\acaci\dev\dba-brabo-site
Se for manter no iCloud, antes de cada commit confira que a árvore está sã:
git status --short # nenhuma deleção inesperada deve aparecer
ls .git/index # tem que existir; se só houver "index 2", rode: git reset
Conteúdo e identidade visual por Acácio Lima Rocha (@acaciolr) — DBA BRABO.