Git Product home page Git Product logo

pixel-profile's Introduction

Pixel Profile Pixel Profile: Generate pixel art profiles from your GitHub data

🎉🎉🎉 Halid has created an awesome UI for pixel-profile, which makes it a breeze to edit our own GitHub cards!

Check it out! ✨ https://pixel-profile-generator.vercel.app

This Pixel Profile project would not have been possible without these amazing projects:

Github Readme Stats: One of the best tools out there for generating awesome Github stats cards.

resvg-js: A high-performance SVG renderer and toolkit.

Satori: An enlightened library to convert HTML and CSS to SVG.

Jubilee A truly unmatched pixel artist! ❤️

Overview

You can easily generate a Github stats card with default styling using the following link:

<!--Replace <username> with your own GitHub username.-->
https://pixel-profile.vercel.app/api/github-stats?username=<username>

Default Github Stats Card

Of course, you can customize the styling to better suit your preferences. For example, here is a stats card designed for GitHub's Dark Theme::

https://pixel-profile.vercel.app/api/github-stats?username=<username>&screen_effect=true&theme=rainbow

This is what it looks like in use in a README:

Demo 1

If you want to include a GitHub stats card in your own README file and have it display the appropriate card for both the light and dark themes on GitHub, you can refer to the following configuration and configure your preferred theme, or fully customize elements like color, background, screen effects, etc:

<picture decoding="async" loading="lazy">
  <source media="(prefers-color-scheme: light)" srcset="https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=summer">
  <source media="(prefers-color-scheme: dark)" srcset="https://pixel-profile.vercel.app/api/github-stats?username=<username>&screen_effect=true&theme=blue_chill">
  <img alt="github stats" src="https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=summer">
</picture>

Here is a ready-made example configuration you can reference if you need inspiration for your own config.

Documentation

Themes

Below are some prebuilt themes to get started. However, cards are fully customizable by passing in background and color props. Feel free to ditch the premade themes and design unique cards by selecting your own colors and backgrounds!

1. Journey without pixelated avatar.

Journey

https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=journey&pixelate_avatar=false

With dithering.

The dithering=true configuration is a standalone setting that can be applied to any theme.

Journey

https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=journey&dithering=true&hide=avatar

2. Road trip without pixelated avatar.

Road Trip

https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=road_trip&pixelate_avatar=false

3. Fuji without pixelated avatar.

Fuji

https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=fuji&pixelate_avatar=false

4. Rainbow without pixelated avatar.

Rainbow

https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=rainbow&pixelate_avatar=false

5. Monica.

Monica

https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=monica

6. Summer.

Summer

https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=summer

7. Lax.

Lax

https://pixel-profile.vercel.app/api/github-stats?username=<username>&theme=lax

Github Stats Card Options

Name Description Default value
background Set background color/image. Supports a subset of CSS background property values #434343
color Set text color to any valid CSS color value white
hide Hide specific stats or elements by passing a comma-separated list. Valid keys: 'avatar', 'commits', 'contributions', 'issues', 'prs', 'rank', 'stars'
include_all_commits Count all commits false
pixelate_avatar Apply pixelation to avatar true
screen_effect Enable curved screen effect false
username GitHub username ''
theme Check out the built-in themes below ''
dithering Rendered the image using a 256-color palette with dithering false

Hiding individual stats

You can pass a query parameter &hide= to hide any specific stats with comma-separated values.

Options: &hide=avatar,commits,contributions,issues,prs,rank,stars

<!--Replace <username> with your own GitHub username.-->
https://pixel-profile.vercel.app/api/github-stats?username=<username>&hide=rank

Hiding individual stats

Deploy on your own

The GitHub API has a rate limit of 5k requests per hour. So my https://pixel-profile.vercel.app/api setup could potentially hit that cap. By self-hosting, you eliminate that concern.

Deploy on Vercel (Recommend)

1. Creating a Personal Access Token

To use this tool to retrieve user statistics, you'll need to generate a Personal Access Token (PAT) with the proper scopes.

Click here to create a new PAT.

Under "Select scopes" check the box for "repo" and "user" like in the image below:

Image of selecting repo scope for PAT

Copy the generated PAT for use in the config file or as an environment variable.

2. Deploy to Vercel

Deploy to Vercel

3. Using the PAT with Vercel

Once you have generated a Personal Access Token (PAT) from your GitHub account, you'll need to add it to your Vercel project configuration in order to authenticate API requests.

To add the PAT to Vercel:

Image of adding env step 1

Image of adding env step 2

Other platforms or self-hosted

In addition to Vercel, you can also deploy to other PaaS platforms (e.g. zeabur.com, heroku.com, fly.io) or hosted on your own server!

Deploy on Zeabur

First you need to have a zeabur account.

Fork this repository and log in to Zeabur.

"Create a Project (or select an existing one)" - "Add Service" - "Git" - "Select the forked pixel-profile repository".

Image of deploy on zeabur

Don't forget to add your "Personal Access Token (PAT) " in "Variable".

Image of add variable on service

Finally, go to "Networking" and generate a domain (or bind your own).

Image of generate a domain on service

Running on docker

Warning

When hosting on Docker, caching is not available, which can quickly cause the API rate limits to be exceeded. It is recommended to use Nginx or a CDN as a proxy to provide caching functionality and optimize performance.

# Clone repository
git clone https://github.com/LuciNyan/pixel-profile.git

# Go to the directory to build the Docker image
cd pixel-profile
docker build -t pixel-profile .

# Create and start the container
docker run -d \
  --name pixel-profile \
  -p 3000:3000 \
  -e PAT_1=ghp_xxxxxx \ # Please change it to your "Personal Access Token (PAT) "
  -e PORT=3000 \
  --restart always \
  pixel-profile

# The service has successfully started on port 3000!

Contribute

The layout in this project is entirely done with JSX, so developing it is almost no different than a normal React project. This means anyone can easily create new cards with very little effort. If you have any ideas, feel free to contribute them here! ❤️

Running Locally

Follow these 4 easy steps to get pixel-profile running on your local machine:

1. Install dependencies

pnpm install

2. Generate a Personal Access Token (PAT)

Refer to the "Creating a Personal Access Token" section above.

3. Create a .env file

Use .env.example as a guide to set your environment variables.

PAT_1=xxxxxxx

4. Run! 🚀

pnpm start

TODO

  • Github stats card.
  • Github repo card.
  • Leetcode stats card.

Author

 

pixel-profile's People

Contributors

eluyuy avatar liby avatar lucinyan avatar yisibl avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

pixel-profile's Issues

Add info on required env vars

Cool project – really love the approach!

It looks like the PAT_1 env var is required in order to run the api locally or on vercel. Otherwise, you'll get a blank image resulting from a "No GitHub API tokens found" error. Prolly would be a good idea to support a cleaner env var name like GITHUB_API_TOKEN or something.

I had to generate a new github personal auth token w/ read user scope in order to get it to work.

Maybe consider using dotenv-safe with a .env.example file to throw an error right away if missing env vars instead of throwing a 500 at the api level?

Cheers && thanks 🙏

Here's my profile from my deployed version:

github stats

Total commits number

Bug report

Description / Observed Behavior

The shown total commits number is not for the current year as displayed in the card.
github-stats

Expected Behavior

The expected number for my profile is 1.3k.
total-commits

Additional Context

I skimmed through the code, I've noticed you're using the GraphQL API.
I don't know if that would help but the api provides a from variable which could be passed to the contributionCollection

contributionsCollection(from: "2024-01-01T00:00:00Z") {
  totalCommitContributions
  startedAt
}

when passing the start of the year it would return the expected number of contributions

"contributionsCollection": { 
   "totalCommitContributions": 1337,
   "startedAt": "2024-01-01T00:00:00Z"
},

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.