npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@andreruperto/svg-pacman-contributions

v1.0.0

Published

Transforme o gráfico de contribuições do GitHub em uma animação de Pac-Man!

Readme

👻 SVG-Pacman-Contributions

Transforme seu gráfico de contribuições do GitHub em um jogo animado de Pac-Man! Veja como o Pac-Man devora suas contribuições enquanto desvia dos fantasmas em uma experiência nostálgica de arcade.

Esta versão se concentra especificamente na geração de animações SVG otimizadas, com melhorias significativas na jogabilidade e na aparência visual.

🎮 Funcionalidades

  • Integração com GitHub: Busca automaticamente seus dados de contribuição via API GraphQL
  • Jogabilidade do Pac-Man: Mecânicas clássicas do Pac-Man onde commits são pontos comestíveis
  • Animação SVG Aprimorada: Exporta um SVG animado com melhorias visuais e comportamentais
  • GitHub Action: Fácil de adicionar ao README do seu perfil ou site
  • Múltiplos Temas: Suporta temas GitHub claro/escuro e GitLab claro/escuro

🚀 Como Usar

GitHub Action

  • O arquivo YAML deve ser criado no caminho .github/workflows/pacman.yml
  • Você deve criar uma branch chamada output para o GitHub armazenar os SVGs gerados
name: Atualizar Pac-Man Contribution
on:
  schedule:
    - cron: "0 0 * * *"  # Executa diariamente à meia-noite
  workflow_dispatch:     # Permite execução manual
jobs:
  build:
    permissions:
      contents: write
    runs-on: ubuntu-latest
    timeout-minutes: 5
    steps:
      - uses: actions/checkout@v3
      
      - name: Gerar Gráfico de Contribuição Pac-Man
        uses: AndreRuperto/pacman-contribution-graph@main
        with:
          github_user_name: ${{ github.repository_owner }}
          github_token: ${{ secrets.PAT_TOKEN }}
          theme: github-dark
          
      - name: Publicar pacman-contribution-graph.svg na branch output
        uses: crazy-max/[email protected]
        with:
          target_branch: output
          build_dir: dist
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

⚠️ Token do GitHub (PAT_TOKEN)

O token de acesso pessoal do GitHub é necessário para o funcionamento correto da aplicação. Este token é usado para acessar a API GraphQL do GitHub, que fornece os dados detalhados das suas contribuições.

Por que é necessário?

  • A API GraphQL do GitHub exige autenticação
  • O token automático do GitHub Actions (GITHUB_TOKEN) tem limitações de taxa (apenas 1.000 pontos/hora vs. 5.000 pontos/hora para PATs)
  • Alguns tipos de tokens (como os de acesso refinado) não funcionam com a API GraphQL
  • Sem o token adequado, não é possível buscar o histórico de contribuições completo

Como configurar (passo a passo):

1. Criar o token no GitHub

  1. Acesse suas configurações no GitHub → Developer settings → Personal access tokens → Tokens (classic)

    • Ou acesse diretamente: https://github.com/settings/tokens
  2. Clique em "Generate new token (classic)"

  3. Dê um nome descritivo ao token, como "pacman-contributions"

  4. Defina uma data de expiração adequada (sugiro pelo menos 30 dias)

  5. Para escopo, selecione apenas:

    • repo (para acesso às contribuições em repositórios privados)
    • read:user (para informações básicas do perfil)
  6. Clique em "Generate token"

  7. IMPORTANTE: Copie o token gerado imediatamente e salve-o em local seguro. Você não poderá vê-lo novamente!

2. Adicionar o token como Secret no repositório

  1. No repositório onde você usará a GitHub Action, vá para Settings → Secrets and variables → Actions

  2. Clique em "New repository secret"

  3. Configure o secret:

    • Name: PAT_TOKEN (ou outro nome de sua preferência)
    • Value: Cole o token que você gerou e copiou anteriormente
  4. Clique em "Add secret"

LEMBRE-SE: Nunca compartilhe seu token pessoal ou o adicione diretamente no código. Sempre use o sistema de secrets do GitHub para manter seus tokens seguros.

⏳ Executar o Workflow Manualmente

Depois de configurar tudo:

Vá para a aba "Actions" no seu repositório Clique em "Atualizar Pac-Man Contribution" Clique em "Run workflow" > "Run workflow"

Isso iniciará o processo de geração do SVG e depois você poderá ver a animação funcionando no seu README! Essa implementação permitirá que seu gráfico de contribuições do Pac-Man seja atualizado automaticamente todos os dias, mantendo-o sempre atual com suas contribuições mais recentes.

📄 Adicionando o SVG ao README

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/AndreRuperto/AndreRuperto/output/pacman-contribution-graph-dark.svg">
  <source media="(prefers-color-scheme: light)" srcset="https://raw.githubusercontent.com/AndreRuperto/AndreRuperto/output/pacman-contribution-graph.svg">
  <img alt="Pac-Man contribution graph" src="https://raw.githubusercontent.com/AndreRuperto/AndreRuperto/output/pacman-contribution-graph.svg">
</picture>

Desenvolvimento Local

  1. Clone o repositório:

    git clone https://github.com/AndreRuperto/svg-pacman-contributions.git
    cd svg-pacman-contributions
  2. Instale as dependências:

    npm install
    # ou
    pnpm install
  3. Gere um SVG para um nome de usuário do GitHub:

    # Crie um arquivo .env com GITHUB_TOKEN=seu_token_aqui (OBRIGATÓRIO)
    pnpm run svg
  4. O SVG será gerado na pasta dist

🎯 Como Funciona

A aplicação usa seus dados de contribuição do GitHub para:

  1. Criar uma grade onde cada célula representa um dia de contribuição
  2. Utilizar os níveis de intensidade de contribuição fornecidos pela API do GitHub:
  • NONE: Dias sem contribuições (espaços vazios no jogo)
  • FIRST_QUARTILE: Dias com poucas contribuições (pontos pequenos, 1 ponto no jogo)
  • SECOND_QUARTILE: Dias com contribuições moderadas (pontos médios, 2 pontos)
  • THIRD_QUARTILE: Dias com muitas contribuições (pontos grandes, 5 pontos)
  • FOURTH_QUARTILE: Dias com contribuições excepcionais (power pellets que ativam o modo de comer fantasmas)

Esses níveis são relativos ao padrão de contribuições de cada usuário e calculados automaticamente pelo GitHub, portanto a densidade de elementos no jogo refletirá o perfil único de cada um.

  1. Pac-Man navega pela grade usando algoritmos de pathfinding
  2. Fantasmas perseguem o Pac-Man com comportamentos únicos (como no jogo original)
  3. Toda a jogabilidade é gravada e exportada como um SVG animado

📋 Opções de Configuração

| Opção | Descrição | Padrão | |--------|-------------|---------| | username | Nome de usuário do GitHub | (obrigatório) | | theme | Tema de cores | github-dark | | outputDirectory | Pasta de saída do SVG | dist | | githubToken | Token do GitHub para acesso à API | (obrigatório) |

🧩 Melhorias Implementadas

Esta versão inclui várias melhorias em relação à implementação original:

  • Fantasmas Aprimorados: Novas imagens e animações mais fiéis ao jogo original
  • Olhos Direcionais: Os olhos dos fantasmas se movem de acordo com a direção em que estão indo
  • Power-up Aperfeiçoado: Melhor lógica e feedback visual durante o modo de power-up
  • Casa dos Fantasmas: Design melhorado para a área inicial dos fantasmas
  • Otimização SVG: Geração de SVG mais eficiente e com animações mais suaves

👻 Fantasmas atualizados

Cada fantasma ganhou novas imagens e personalidades fiéis aos do jogo.

| Fantasma | Pré-visualização | |:--------:|:----------------:| | Blinky (vermelho) | | | Pinky (rosa) | | | Inky (ciano) | | | Clyde (laranja) | |

🔧 Desenvolvimento

Construído com TypeScript e Node.js, o projeto consiste em:

  • src/: Lógica principal do jogo e renderização
  • scripts/: Ferramentas para gerar SVGs
  • github-action/: Integração com GitHub Action

🙏 Créditos

Este projeto é uma versão especializada baseada no Pac-Man Contribution Graph criado por abozanona. Enquanto o projeto original oferece tanto visualizações SVG quanto Canvas, esta versão foca exclusivamente em melhorias à renderização SVG e na experiência de jogabilidade automatizada.

🤝 Como contribuir

Ficou com vontade de adicionar um novo tema, melhorar a IA dos fantasmas ou otimizar o SVG?
Pull requests são muito bem-vindos!

  1. Fork o repositório
  2. Crie sua branch: git checkout -b feat/minha-melhoria
  3. Faça commits claros e concisos
  4. Abra um PR explicando o que mudou e por quê

Se tiver dúvidas, abra uma issue. 👊