English version: README.en.md
Dashboard de produtividade para GitHub com autenticação OAuth, métricas de atividade dos últimos 30 dias e geração de relatório detalhado com exportação em PDF.
O GitPulse permite que desenvolvedores visualizem rapidamente o próprio ritmo de contribuição no GitHub, com foco em:
- volume de commits no período;
- consistência diária e variação semanal;
- distribuição por linguagens;
- repositórios mais ativos;
- recomendações objetivas de melhoria.
- Login com GitHub via NextAuth.
- Dashboard com métricas agregadas dos últimos 30 dias.
- Gráfico de frequência de commits e heatmap diário.
- Breakdown de linguagens por participação.
- Lista de repositórios recentes com estrela e visibilidade.
- Geração de relatório textual completo com plano de evolução.
- Exportação do relatório em PDF (via print flow do navegador).
- Next.js 15 (App Router)
- React 18
- TypeScript
- Tailwind CSS
- NextAuth.js v4 (GitHub Provider)
- GitHub REST API
.
├── app/
│ ├── api/auth/[...nextauth]/route.ts # Handler HTTP do NextAuth
│ ├── dashboard/page.tsx # Página server-side protegida
│ ├── globals.css # Estilos globais
│ ├── layout.tsx # Layout raiz
│ ├── page.tsx # Landing e login
│ └── providers.tsx # SessionProvider
├── components/
│ ├── CommitChart.tsx # Barras + heatmap
│ ├── DashboardClient.tsx # UI principal + relatório/PDF
│ └── LanguageBar.tsx # Distribuição de linguagens
├── lib/
│ ├── auth.ts # Configuração do NextAuth
│ └── github.ts # Coleta e agregação de dados GitHub
├── public/
│ └── back.png # Background da landing/login
├── types/
│ └── index.ts # Tipos de domínio e augmentations
├── .env.local.example
├── package.json
└── README.md
- Usuário autentica com GitHub.
- Sessão recebe access token OAuth.
- Backend consulta API do GitHub e agrega dados de produtividade.
- Dashboard exibe métricas e visualizações.
- Usuário pode gerar relatório completo e exportar para PDF.
- Node.js 18+
- npm 9+
- Conta GitHub com OAuth App configurado
No GitHub Developers Settings:
- Application name:
GitPulse(ou equivalente) - Homepage URL:
http://localhost:3000 - Authorization callback URL:
http://localhost:3000/api/auth/callback/github
Crie o arquivo local a partir do template:
cp .env.local.example .env.localPreencha o .env.local:
GITHUB_CLIENT_ID=seu_client_id
GITHUB_CLIENT_SECRET=seu_client_secret
NEXTAUTH_SECRET=gere_uma_chave_forte
NEXTAUTH_URL=http://localhost:3000Gerar NEXTAUTH_SECRET (exemplo):
openssl rand -base64 32npm install
npm run devAplicação local: http://localhost:3000
npm run dev # desenvolvimento
npm run build # build de produção
npm run start # iniciar build local
npm run lint # lintNo projeto da Vercel, configure:
| Variável | Descrição |
|---|---|
GITHUB_CLIENT_ID |
Client ID do OAuth App |
GITHUB_CLIENT_SECRET |
Client Secret do OAuth App |
NEXTAUTH_SECRET |
Segredo forte para sessão/jwt |
NEXTAUTH_URL |
URL canônica da aplicação (ex.: https://seu-projeto.vercel.app) |
No GitHub OAuth App:
- Homepage URL:
https://seu-projeto.vercel.app - Authorization callback URL:
https://seu-projeto.vercel.app/api/auth/callback/github
npx vercel --prod- Nunca versionar
.enve.env.local. - O projeto usa
.gitignorepara proteger variáveis locais. - Utilize secrets diferentes para local e produção.
- Rotacione
GITHUB_CLIENT_SECRETeNEXTAUTH_SECRETem caso de exposição.
Causas comuns:
- deploy não publicado corretamente;
- projeto/domínio/alias apontando para outro escopo;
- token da Vercel inválido na CLI;
- URL acessada diferente de
NEXTAUTH_URL.
Checklist rápido:
npx vercel lse confirmar deployReady.- Validar domínio alias ativo.
- Confirmar
NEXTAUTH_URLem Production. - Confirmar callback URL no OAuth App.
- Reexecutar
npx vercel --prodapós ajustes.
- Verifique
NEXTAUTH_URL. - Verifique callback URL no GitHub.
- Confirme que
GITHUB_CLIENT_IDeGITHUB_CLIENT_SECRETestão no ambiente correto.
- A API do GitHub possui rate limits.
- Commits de forks e cenários específicos podem ter variação de contagem.
- A exportação em PDF utiliza diálogo de impressão do navegador.
- Exportação em PDF com template visual avançado.
- Histórico de relatórios por usuário.
- Filtros por período customizado.
- Métricas adicionais por pull requests e review.