Skip to main content

Draw words on your GitHub contribution graph with backdated commits

Project description

GitHub Contribution Writer

A command-line tool that draws words and text on your GitHub contribution graph by generating commits with strategically backdated timestamps.

How It Works

GitHub's contribution graph is a 7-row by 52-column grid representing your commit activity over the past year. Each cell corresponds to a specific day, with the color intensity reflecting the number of contributions made on that day.

This tool maps text characters to a 5x7 pixel font grid, calculates the corresponding calendar dates, and generates Git commits with backdated timestamps. When pushed to GitHub, these commits render as readable text on your contribution graph.

█   █ █████ █     █      ███
█   █ █     █     █     █   █
█   █ █     █     █     █   █
█████ ████  █     █     █   █
█   █ █     █     █     █   █
█   █ █     █     █     █   █
█   █ █████ █████ █████  ███

Installation

From PyPI

pip install github-contribution-writer

From Source

git clone https://github.com/dinesh-git17/github-contribution-writer.git
cd github-contribution-writer
pip install -e .

Usage

Basic Usage

Preview what commits will be generated:

contribution-writer "HELLO" --year 2025 --dry-run

Generate commits for a word:

contribution-writer "HELLO" --year 2025

Command Line Options

Option Description Default
word The text to render (A-Z, 0-9, space) Required
--year Target year for the commits 2025
--dry-run Preview without creating commits False
--no-center Align text to start of year False (centered)
--intensity Commits per pixel (1-10) 5

Examples

Render text centered on 2025:

contribution-writer "DINESH" --year 2025

Render text at the beginning of the year with maximum intensity:

contribution-writer "HI" --year 2025 --no-center --intensity 10

Preview the output before generating:

contribution-writer "CODE" --year 2025 --dry-run

Pushing to GitHub

After generating commits, push them to a GitHub repository:

# Create a new repository on GitHub first, then:
git remote add origin git@github.com:USERNAME/REPO.git
git branch -M main
git push -u origin main

The contribution graph updates within a few minutes of pushing.

Technical Details

Font Specifications

  • Character dimensions: 5 pixels wide, 7 pixels tall
  • Character spacing: 1 pixel
  • Supported characters: A-Z, 0-9, space
  • Maximum text length: approximately 8 characters (limited by 52-week display)

Commit Generation

Commits are created using Git's GIT_AUTHOR_DATE and GIT_COMMITTER_DATE environment variables to set custom timestamps. Each "pixel" in the rendered text corresponds to one or more commits on that date, with the intensity parameter controlling the exact count.

Date Mapping

The contribution graph displays:

  • Rows: Days of the week (Sunday at top, Saturday at bottom)
  • Columns: Weeks of the year (oldest on left, newest on right)

Text is rendered by mapping each pixel position to a calendar date and generating the appropriate number of commits for that date.

Project Structure

github-contribution-writer/
├── src/
│   └── contribution_writer/
│       ├── __init__.py
│       ├── __main__.py
│       ├── cli.py
│       └── font.py
├── pyproject.toml
├── README.md
└── .gitignore

Requirements

  • Python 3.10 or higher
  • Git installed and configured
  • A GitHub account with a public repository

Limitations

  • Only uppercase letters A-Z, digits 0-9, and spaces are supported
  • Text longer than 8 characters may not fit within the 52-week display window
  • The contribution graph only shows the past year, so backdated commits must fall within this range
  • Private repositories do not contribute to the public contribution graph by default

License

MIT License. See LICENSE file for details.

Contributing

Contributions are welcome. Please open an issue to discuss proposed changes before submitting a pull request.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

github_contribution_writer-1.0.0.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

github_contribution_writer-1.0.0-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file github_contribution_writer-1.0.0.tar.gz.

File metadata

File hashes

Hashes for github_contribution_writer-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4ce41604545b95d5fe1adfe0d84ae03fedd93ff5c171b244a98e21cae0880815
MD5 784bd0796f2e328c37b1102098c04a62
BLAKE2b-256 453b926ed5e6c7ab0ed2e24f5820c8cdd36d60650a5cba9ef0009ed1a1579556

See more details on using hashes here.

File details

Details for the file github_contribution_writer-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for github_contribution_writer-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e098d47a832953077bf8dc8008ec383fc21b9db0d1f06c05c224399a25eb6e65
MD5 3407483e072bef5e804266e8e82606ea
BLAKE2b-256 4835abde56d65a8a91db4a835b606d56103c5cbf47edec2aaaa6df6520ef5d5a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page