Blog pessoal construído com Astro, publicado de graça no GitHub Pages.
URL publicada: https://vrcardoso.com.br
- ✅ Blog em Markdown/MDX com Content Collections (validação de schema)
- ✅ Feed RSS em
/rss.xml - ✅ Sitemap automático
- ✅ SEO: URLs canônicas e Open Graph
- ✅ Deploy automático via GitHub Actions
- ✅ Zero JavaScript no navegador (site estático super rápido)
- Node.js 22.12+
- Conta no GitHub
npm install
npm run devO dev server ajuda com o comando astro dev (veja AGENTS.md para o modo background).
-
Crie um repositório público (requisito do plano gratuito) chamado
blogno GitHub:https://github.com/NullPointer-9/blog.GitHub Pages no plano gratuito só é exibido para o público. Se precisar de um repositório privado, você precisará de um plano pago ou de outra hospedagem.
-
Suba o código:
git init git add . git commit -m "feat: blog astro inicial" git branch -M main git remote add origin https://github.com/NullPointer-9/blog.git git push -u origin main
-
No GitHub, vá em Settings → Pages e em Build and deployment selecione GitHub Actions (o workflow
.github/workflows/deploy.ymlfaz todo o resto). -
Aguarde a Action terminar. O site estará no GitHub Pages em
https://nullpointer-9.github.io/blog/.
O projeto já está pronto para servir em https://vrcardoso.com.br:
public/CNAMEcontémvrcardoso.com.brastro.config.mjsusasite: 'https://vrcardoso.com.br'(sembase)
No Registro.br, aponte o domínio (registros A) para os IPs do GitHub Pages:
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
Depois, em Settings → Pages, coloque vrcardoso.com.br no campo Custom domain e salve. O GitHub valida e emite o certificado TLS automaticamente.
Crie um arquivo em src/content/blog/ (.md ou .mdx):
---
title: 'Título do post'
description: 'Resumo exibido na listagem.'
pubDate: 'Sep 07 2026'
heroImage: '../../assets/minha-imagem.jpg' # opcional
---Faça o commit e push — o deploy acontece sozinho.
├── public/
├── src/
│ ├── assets/
│ ├── components/
│ ├── content/
│ ├── layouts/
│ └── pages/
├── astro.config.mjs
├── package.json
└── tsconfig.json