Por que criar um blog? #
Atualmente temos mais maneiras do que nunca de publicar nossas ideias, seja no Medium, Twitter/X, Instagram, etc. Essa democratização é ótima, mas pessoalmente eu prefiro ter controle sobre o que publico e como é publicado.
Como este artigo explica muito bem, plataformas podem deixar de existir algum dia, assim como MySpace ou Orkut já foram as maiores redes sociais e agora são relíquias esquecidas.
Por essa razão, decidi criar um blog simples para postar sobre coisas que gosto enquanto mantenho controle total sobre onde e como armazeno esses posts. Além disso, pensei que seria um projeto legal 🙂.
Pré-requisitos #
Abaixo estão alguns pré-requisitos que guiaram minha escolha de stack para construir este blog, usando as razões exploradas acima como base:
Suporte para arquivos de texto #
Para armazenar os posts decidi usar arquivos de texto, já que serão os mais fáceis de portar para qualquer plataforma se necessário. Isso significa que qualquer stack que eu escolha deve facilmente converter esses arquivos para páginas HTML.
Configuração inicial simples #
Não é fácil implementar do zero essa conversão de arquivos de texto para HTML. Além disso, não sou exatamente bom em web design 👀.
Por essas razões, a stack deve fornecer uma configuração inicial simples para começar a servir essas paginas web.
Flexibilidade para expandir #
Mesmo querendo uma configuração inicial simples, é importante que a stack ofereça maneiras de personalizar o blog conforme necessário para refletir mudanças que eu possa querer fazer no futuro.
Componentes #
Com os requisitos em mente, decidi usar os seguintes componentes para criar o blog:
Hugo #
Hugo é um framework construído em Go voltado para geração de sites estáticos com foco em velocidade e flexibilidade.
Ele usa templates para organizar conteúdo e recursos em páginas HTML estáticas. O conteúdo pode ser escrito em vários formatos de texto simples, mas para este blog estou usando Markdown pela sua flexibilidade para trabalhar em múltiplas plataformas e acessibilidade para ser lido por si só.
Blowfish #
Blowfish é um tema Hugo que oferece templates pré-prontos muito flexíveis, tendo muitas configurações disponíveis e até permitindo personalizar completamente as páginas com layouts customizados.
Github #
Eu uso o Github para armazenar tudo relacionado ao projeto, desde o conteúdo escrito em Markdown até o código necessário para o Hugo.
Cloudflare Pages #
Cloudflare Pages é usado para servir as páginas estáticas.
Outra opção que considerei foi o Github Pages, mas como já estava usando o Cloudflare para gerenciar o domínio do blog, fazia mais sentido continuar no mesmo ecossistema.
Uma vantagem de usar essa abordagem é que posso deixar o repositório como privado, o que é bom para fazer upload de posts que ainda estão em rascunho para o repositório.
Como tudo funciona #
Colocando a stack acima para funcionar, temos algo assim:
- Escrever o post em um arquivo markdown, usando Hugo para verificar em tempo real como fica convertido para uma página HTML;
- Abrir um PR e verificar o deployment de preview do Cloud Flare Pages;
- Se tudo funcionar como esperado, fazer merge das alterações para a branch principal, o que automaticamente acionará o deployment do blog;