Skip to content

๐Ÿ”ฎ Visualize your Developer Soul. Turn your GitHub stats into beautiful Generative Art (SVG).

Notifications You must be signed in to change notification settings

minx-nie/git-aura

ย 
ย 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

11 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŒŒ Git-Aura

Git-Aura Banner License Python GitHub Actions

Transform your GitHub activity into a unique, mathematically-derived piece of generative art.

Git Aura Example

Your code has a soul. This is its aura. โœจ


๐ŸŽฏ What is Git-Aura?

Git-Aura analyzes your GitHub statistics and creates a beautiful, animated SVG visualization โ€” your coding "aura". No more boring bar charts. This is art derived from math.

โœจ Features

Feature Description
๐ŸŽจ Unique Identity Each aura is deterministically generated from your GitHub user ID
๐ŸŒˆ Language Colors Color palette derived from your top programming languages
๐ŸŒ€ Particle Flow Organic curves using Simplex noise algorithms
๐Ÿ’ซ Activity Glow Commit streaks influence the glow intensity
๐ŸŒ™ Dark Mode Designed for GitHub's dark theme
๐Ÿ”„ Auto Updates GitHub Action keeps your aura fresh daily

๐Ÿš€ Quick Start

โš ๏ธ Prerequisites (IMPORTANT!)

You MUST complete this step first, or the workflow will fail!

๐Ÿ”‘ Step 1: Create Personal Access Token (PAT)

The default GITHUB_TOKEN cannot read user contribution data. Create a PAT:

  1. ๐Ÿ”— Go to github.com/settings/tokens/new
  2. โœ๏ธ Note: git-aura
  3. โฐ Expiration: 90 days (or custom)
  4. โ˜‘๏ธ Select scope: read:user
  5. ๐ŸŸข Click "Generate token"
  6. ๐Ÿ“‹ Copy the token (starts with ghp_...)
๐Ÿ” Step 2: Add Token to Your Repository
  1. Go to your forked repository
  2. Click Settings โ†’ Secrets and variables โ†’ Actions
  3. Click "New repository secret"
  4. Fill in:
    Field Value
    Name GH_PAT
    Secret paste your token
  5. Click "Add secret" โœ…

๐Ÿด Option 1: Fork & Use (Recommended)

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  1๏ธโƒฃ  Fork this repository                                   โ”‚
โ”‚       โ””โ”€โ”€โ–ถ Click "Fork" button above                        โ”‚
โ”‚                                                             โ”‚
โ”‚  2๏ธโƒฃ  Add GH_PAT secret (see Prerequisites โ˜๏ธ)               โ”‚
โ”‚       โ””โ”€โ”€โ–ถ Settings โ†’ Secrets โ†’ Actions โ†’ New secret        โ”‚
โ”‚                                                             โ”‚
โ”‚  3๏ธโƒฃ  Run the workflow                                       โ”‚
โ”‚       โ””โ”€โ”€โ–ถ Actions โ†’ "Generate Git Aura" โ†’ "Run workflow"   โ”‚
โ”‚                                                             โ”‚
โ”‚  4๏ธโƒฃ  Done! Your aura.svg is generated ๐ŸŽ‰                    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

๐Ÿ“ Add to Your Profile README:

![My Git Aura](https://raw.githubusercontent.com/YOUR_USERNAME/git-aura/main/aura.svg)

๐Ÿ’ป Option 2: Run Locally

# 1. Clone the repository
git clone https://github.com/ThanhNguyxn/git-aura.git
cd git-aura

# 2. Install dependencies
pip install -r requirements.txt

# 3. Set your GitHub token (with read:user scope)
export GITHUB_TOKEN="ghp_your_token_here"

# 4. Generate your aura! ๐ŸŽจ
python main.py YOUR_USERNAME -o my-aura.svg

๐Ÿ“– How It Works

๐Ÿงฎ The Math Behind Your Aura

Your GitHub activity is treated as a feature vector and transformed through mathematical functions:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”     โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚  ๐Ÿ“Š GitHub Data โ”‚ โ”€โ”€โ–ถ โ”‚  ๐Ÿ”ข Normalize    โ”‚ โ”€โ”€โ–ถ โ”‚  ๐ŸŽจ Visual      โ”‚
โ”‚                 โ”‚     โ”‚                  โ”‚     โ”‚                 โ”‚
โ”‚ โ€ข Commits       โ”‚     โ”‚ โ€ข Log scaling    โ”‚     โ”‚ โ€ข Particle      โ”‚
โ”‚ โ€ข Streak        โ”‚     โ”‚ โ€ข Sigmoid        โ”‚     โ”‚   density       โ”‚
โ”‚ โ€ข Languages     โ”‚     โ”‚ โ€ข Entropy        โ”‚     โ”‚ โ€ข Glow effect   โ”‚
โ”‚ โ€ข Commit times  โ”‚     โ”‚ โ€ข Color blend    โ”‚     โ”‚ โ€ข Flow chaos    โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜     โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
Metric Formula Visual Effect
Total Commits $\rho = \log(commits)$ Particle density
Max Streak $I = \sigma(streak/365)$ Glow intensity
Commit Times $\chi = H(distribution)$ Flow turbulence
Languages Weighted RGB average Color palette

Legend:

  • $\sigma$ = Sigmoid function for smooth normalization
  • $H$ = Shannon entropy for chaos measurement

๐ŸŒ€ The Generative Engine

     ๐ŸŒฑ Initialize                    ๐ŸŒŠ Flow Field
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ Fibonacci โ”‚                  โ”‚ Simplex Noise โ”‚
    โ”‚  Spiral   โ”‚ โ”€โ”€โ”€โ”€ drives โ”€โ”€โ”€โ–ถโ”‚   Vectors     โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚                               โ”‚
          โ–ผ                               โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚ Particles โ”‚ โ—€โ”€โ”€ guided by โ”€โ”€โ”‚ Force Field   โ”‚
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
          โ”‚
          โ–ผ
    โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
    โ”‚   SVG Paths   โ”‚ โ”€โ”€โ–ถ ๐ŸŽจ Final Aura
    โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โš™๏ธ Configuration

๐Ÿ–ฅ๏ธ CLI Options

python main.py [USERNAME] [OPTIONS]
Argument Default Description
USERNAME $GITHUB_ACTOR GitHub username
-o, --output aura.svg Output file path
-w, --width 800 SVG width (px)
-H, --height 800 SVG height (px)
--no-animation false Disable CSS animation
--check-changes false Only save if changed
-v, --verbose false Debug logging

๐Ÿ” Environment Variables

Variable Required Description
GITHUB_TOKEN โœ… PAT with read:user scope
GITHUB_ACTOR โŒ Default username (auto-set in Actions)

๐Ÿ”ง GitHub Action

โฐ Schedule

The workflow runs daily at midnight UTC. Customize in .github/workflows/aura.yml:

on:
  schedule:
    - cron: '0 0 * * *'  # โ† Modify schedule here

๐Ÿ”’ Required Secrets

Secret Name Required How to Get
GH_PAT โœ… Create token with read:user

๐Ÿšซ Preventing History Bloat

The workflow compares file hashes before committing:

  • โœ… Changed โ†’ Commit & push
  • โญ๏ธ Same โ†’ Skip commit

๐ŸŽจ Customization

๐Ÿ“ Canvas Sizes

# Square (default)
python main.py username -w 800 -H 800

# Wide banner
python main.py username -w 1200 -H 400

# Vertical
python main.py username -w 400 -H 800

๐Ÿ–ผ๏ธ Profile README Example

<div align="center">
  <img src="https://raw.githubusercontent.com/YOUR_USERNAME/git-aura/main/aura.svg" width="400" />
  <br/>
  <i>My coding aura โœจ</i>
</div>

๐Ÿ“ Project Structure

git-aura/
โ”œโ”€โ”€ ๐Ÿ“‚ .github/
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ workflows/
โ”‚       โ””โ”€โ”€ ๐Ÿ“„ aura.yml          # ๐Ÿ”„ Daily generation workflow
โ”œโ”€โ”€ ๐Ÿ“‚ src/
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ __init__.py           # ๐Ÿ“ฆ Package init
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ data_loader.py        # ๐Ÿ”Œ GitHub GraphQL API
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ generative_engine.py  # ๐ŸŒ€ Particle system & noise
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ renderer.py           # ๐ŸŽจ SVG generation
โ”œโ”€โ”€ ๐Ÿ“„ main.py                   # ๐Ÿš€ Entry point
โ”œโ”€โ”€ ๐Ÿ“„ requirements.txt          # ๐Ÿ“‹ Dependencies
โ”œโ”€โ”€ ๐Ÿ“„ README.md                 # ๐Ÿ“– You are here!
โ””โ”€โ”€ ๐Ÿ–ผ๏ธ aura.svg                  # โœจ Generated output

๐Ÿ› ๏ธ Tech Stack

Technology Purpose
Python Core language
NumPy Vector mathematics
svgwrite SVG generation
OpenSimplex Noise functions
requests GitHub API calls

โ“ Troubleshooting

๐Ÿ”ด Workflow fails with "GraphQL errors" or exit code 1

Cause: Missing or invalid GH_PAT secret.

Solution:

  1. โœ… Check if GH_PAT secret exists: Settings โ†’ Secrets โ†’ Actions
  2. โœ… Ensure your token has read:user scope
  3. โœ… Token might be expired โ€” regenerate if needed
  4. โœ… Re-run the workflow after adding the secret
๐Ÿ”ด No aura.svg generated

Cause: Workflow completed but file not committed.

Solution:

  1. Check Actions log for errors
  2. Verify contents: write permission in workflow
  3. Try running workflow manually
๐Ÿ”ด Aura looks empty or minimal

Cause: Low GitHub activity or new account.

Solution: This is expected! Your aura grows with your contributions. Keep coding! ๐Ÿ’ช


๐Ÿ“„ License

MIT License - feel free to fork, modify, and share!

๐Ÿ™ Credits

Created with ๐Ÿ’œ by @ThanhNguyxn

Inspired by the beauty of mathematical visualization and the art of code.


โญ Star this repo if you like it! โญ

Report Bug ยท Request Feature

About

๐Ÿ”ฎ Visualize your Developer Soul. Turn your GitHub stats into beautiful Generative Art (SVG).

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%