Otavio Xavier
Montei meu portfólio na VPS, lutei com o GitHub e sobrevivi
Devlog da noite em que o blog ganhou cara, os apps ganharam vídeo, o OAuth quase me venceu e eu publiquei tudo no ar.
Comecei querendo um blog bonito e simples. Terminei com Node 22 na VPS, três variáveis de ambiente com nomes parecidos e a certeza de que favicon é coisa séria.
Este é o primeiro post — um registro do que rolou, com vídeos nos lugares certos.
Antes: triângulo verde e menu demais
O blog tinha paleta própria (verde, creme, latão) e um header cheio de links. Pedido simples: mesmas cores do portfólio e só meu nome no topo.
Ficou preto, branco e cinza, igual ao resto do site. O menu sumiu; a barra de baixo (dock) continua cuidando da navegação. Menos ruído, mais leitura.
Deploy na VPS (porque OAuth não perdoa localhost)
Para o login do painel Escrever funcionar de verdade, o app precisava de uma URL pública estável. Subi o portfólio na VPS, com HTTPS no estilo dos outros projetos:
Node 12 do sistema? Nem brincando. Instalei Node 22, systemd, nginx na frente, certificado Let's Encrypt. Clássico.
OAuth: quatro variáveis e um redirect URI
A página /blog/escrever pede:
AUTH_SECRETAUTH_GITHUB_IDeAUTH_GITHUB_SECRET(OAuth App)ADMIN_GITHUB_LOGIN(só minha conta entra)
No GitHub, o callback é:
/api/auth/callback/github
Ou seja, na produção:
https://otavioxavier.com.br/api/auth/callback/github
GITHUB_TOKEN é outra história: token de escrita no repositório para gravar os .md dos posts. OAuth entra; PAT grava. Confundi os dois uma vez. Não recomendo.
Depois de copiar o .env para /etc/portifolio/portifolio.env na VPS e reiniciar o serviço, o botão Entrar com GitHub finalmente levou… ao GitHub. Milagre.
Cards de projeto com vídeo (o Instagram do dev)
Gravei a tela dos apps e coloquei nos cards — loop mudo, estilo demo de produto.
Estudar+
Plataforma de estudo com IA: tema, resumos, questões, correção. O link de produção mudou para a VPS:
https://estuda-mais.143-95-220-102.sslip.io/
Acompanhador (FinTrack)
Controle financeiro: saldo do mês, categorias, transações, metas, calendário. O vídeo no card é deste app — não misturei com o Estudar+.
Detalhes que parecem pequenos (mas não são)
Favicon: troquei o da Vercel por óculos do Lucide — preto no modo claro do sistema, branco no escuro. Não é o toggle do site; é o tema do macOS. Detalhe nerd aprovado.
Steve Jobs: nova foto ao lado de “Design é como funciona.” A antiga saiu; a do biógrafo entrou.
Currículo: Escola SAGA agora aparece de 2021 a 2023.
Meta: este post
Ironia boa: o primeiro artigo do blog documenta como o blog foi parar no ar. Escrevi em Markdown em content/blog/, com mídia em public/blog/. Links que terminam em .mp4 viram player embutido — truque novo no renderer.
Se você chegou até aqui, provavelmente:
- curte overengineering honesto, ou
- está debugando OAuth às 01h, ou
- os dois.
De qualquer forma, bem-vindo. O próximo post promete ser menos systemctl restart e mais código — mas não garanto nada.
Comentários
Comentários ainda não configurados.