"Computer… display the captain's log." — Jean-Luc Picard
Um engineering social feed em estilo Tumblr para commits do GitHub, totalmente estático e pronto para GitHub Pages.
O projeto consome feeds Atom diretamente no navegador, transforma cada entrada em um post e abre o conteúdo completo dentro da própria UI — incluindo Markdown renderizado com headings, listas, blockquotes e code blocks.
- ⚛️ React + Vite para uma SPA rápida e leve
- 🎨 Tailwind CSS com visual dark / Tumblr técnico
- 🌍 Sem backend: tudo roda no frontend
- 📡 Consumo de Atom feed no browser com fallback de proxy CORS
- 🧠 Parser próprio para limpar o payload do GitHub Atom
- 📝 Renderização Markdown com
react-markdown+remark-gfm - 🔎 Página interna de detalhe para cada post/commit
- 🧭 Navegação por hash (
#/post/...) compatível com GitHub Pages - 🔁 Auto-refresh do feed a cada 5 minutos
- 🚀 Deploy automático no GitHub Pages via GitHub Actions
GitHub commits.atom
↓
proxy CORS (fallback)
↓
DOMParser + limpeza do conteúdo
↓
extração de title / body / issueLink / markdown
↓
timeline React + página interna do post
↓
dist/
Sidebar → filtros por repositório + refresh
Timeline → cards com preview do conteúdo
Post detail page → renderização completa do markdown
Ao clicar em um card, o usuário abre o conteúdo completo dentro da própria SPA, em vez de ir direto para o commit no GitHub.
npm installnpm run devnpm run buildnpm run previewfeed-rss-commit/
├── .github/
│ ├── prompts/
│ └── workflows/
│ └── deploy-pages.yml
├── config/
│ └── feeds.yaml
├── src/
│ ├── components/
│ │ ├── CommitCard.jsx
│ │ ├── PostDetail.jsx
│ │ └── Sidebar.jsx
│ ├── services/
│ │ └── rssParser.js
│ ├── App.jsx
│ ├── index.css
│ └── main.jsx
├── index.html
├── package.json
├── README.md
└── vite.config.js
Edite config/feeds.yaml para adicionar ou remover feeds Atom:
feeds:
- name: dev-diaries
url: https://github.com/DevComputaria/dev-diaries/commits/main.atom
- name: outro-repo
url: https://github.com/username/repo/commits/main.atomO GitHub Atom pode trazer mensagens de commit com conteúdo rico, como:
Issue link:Body:- Markdown com
##, listas, code spans e separadores---
O serviço em src/services/rssParser.js faz:
- leitura do XML via
DOMParser - extração do
<pre>do feed - normalização de whitespace e indentação
- separação entre cabeçalho e corpo
- extração de
issueLink - geração de
excerptpara o card - envio do conteúdo completo para a página de detalhe
O detalhe do post usa:
react-markdownremark-gfm
Com isso, a UI renderiza corretamente:
- headings
#,##,### - listas ordenadas e não ordenadas
- blockquotes
- code blocks e inline code
- links
- divisores
--- - negrito e itálico
Este projeto usa GitHub Actions para publicar a pasta dist/.
- Vá em Settings → Pages
- Em Source, selecione GitHub Actions
- Faça push para a branch principal
O workflow irá:
- instalar dependências
- gerar a build com Vite
- publicar
dist/no GitHub Pages
- A build usa
base: "./"para funcionar em subdiretórios do GitHub Pages sem depender do nome do repositório. - A navegação interna usa hash routing para evitar problemas de refresh em hospedagem estática.
- O consumo do feed depende de proxies CORS públicos, com fallback para mais de uma opção.
- O GitHub Atom pode mudar o formato do conteúdo; por isso o parser foi feito para ser tolerante a variações comuns.
npm run dev— servidor local com Vitenpm run build— build de produçãonpm run preview— pré-visualização da build gerada
- Infinite scroll
- Filtro por autor
- Busca textual nos posts
- Feed de releases / PRs / issues
- Cards com preview de diff
- Rotas amigáveis por slug
- Tipografia editorial mais rica para os posts
MIT
Engineering Social Feed — diário de bordo de commits, sem backend, com Markdown de verdade e com menos drama orbital.