Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

iTechGuides is reader-supported. When you buy through links on our site, we may earn an affiliate commission. As an Amazon Associate I earn from qualifying purchases. Learn more

Quarkus Contribution City turns GitHub’s contribution calendar into an SVG skyline: each week becomes a building, and each day’s contribution level determines its windows. You can publish the generated image to a profile repository and embed it in your README, or run the Java project locally to customize the design. The implementation details below are from Markus’s October 6, 2026 project tutorial; its version-specific claims have not been independently verified against the repository.

How the contribution calendar becomes a city

The project fetches contribution calendar data with a GitHub GraphQL request, converts the response into Java records, builds a scene from weeks and days, then renders that scene as SVG. The resulting file can be published as a profile image.

  • Each week becomes one building made of two character cells.
  • The weekly contribution total controls building height. A logarithmic scale keeps lower-activity weeks visible beside busier ones.
  • Daily contribution categories determine window colors.
  • The newest week appears at the right. The busiest displayed week receives an antenna; if weeks tie, the newest tied week gets it.

For illustration, the tutorial describes a maximum of 20 contributions and a height limit of 14: a week with three contributions gets seven window rows, the busiest gets 14, and a week with none keeps one row. These are example calculation inputs and outputs, not measurements of GitHub activity.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Choose the calendar window and appearance

The published action exposes the weeks, height, and theme settings. The tutorial’s example uses 53 weeks, height 14, and the github-dark theme.

  • 53 weeks: gives a year-like view of the returned calendar. Weekly totals still represent the full calendar GitHub returns.
  • 12 weeks: shows a shorter, recent view. The height scale is recalculated against the maximum in that displayed window, so a week can look taller here than it does in the longer view.
  • Height: sets the height limit used to scale buildings.
  • Themes: the tutorial identifies github-dark and mono as built-in choices, for a dark GitHub-style palette or monochrome appearance.

The workflow example is configured for 53 weeks; choose a shorter setting if the profile image should focus on recent activity.

Publish the SVG on a GitHub profile

The example assumes a public repository named exactly after the account, which GitHub uses as its profile repository. It checks out that repository and the action, supplies the repository owner as the username, and publishes the generated file to an output branch.

  1. Add the workflow: copy the publishing workflow into .github/workflows/contribution-city.yml in the profile repository.
  2. Check permissions: the workflow needs repository write permission to publish to the output branch.
  3. Configure the inputs: use the account name as the username; the example sets weeks to 53, height to 14, and the theme to github-dark.
  4. Run it manually: after a successful job, the tutorial says the workflow creates contribution-city.svg on the output branch.
  5. Embed the image: add a raw GitHub content URL for that SVG in the profile README. The exact raw URL depends on the account and output branch.

The example schedules a daily run at 03:17 UTC. Its workflow commits only when the generated SVG changes; identical contribution data and options produce identical file contents.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Understand which contributions the image can show

The calendar returned by GitHub depends on the token’s permissions and the account’s contribution visibility settings. The example starts with GITHUB_TOKEN for visible contribution data and permits an optional CONTRIBUTION_TOKEN secret when additional access is needed. A token does not guarantee that private or otherwise hidden activity appears: the image can only reflect the calendar data GitHub returns under those permissions and settings.

Run the Java project locally

The tutorial describes v1.0.0 with Quarkus 3.33.1 and Java 21. Its local prerequisites are JDK 21, JBang, Git, Bash, and the repository’s Maven wrapper.

  1. Clone the project repository and open a Bash shell in the project directory.
  2. Run ./mvnw verify.
  3. Review the generated previews: the tutorial says tests use local data and a local GraphQL server, and generate full-calendar, recent-12-week, and empty-calendar SVGs without requiring GitHub credentials.

The version and test details above are those reported in the tutorial, rather than independently verified repository specifications.

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Customize the city beyond the built-in settings

The released action’s documented customization surface in the tutorial is weeks, height, and the two built-in themes. A custom shape requires changing the Java source in a fork. The tutorial’s example adds a DEV letter-mask landmark above the buildings, centers it, inserts a spacer row, and uses a monochrome theme. The landmark is decorative: it does not change contribution dates, counts, or ordering.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

The author also reports that the calendar returned for their account on October 6, 2026 contained 534 contributions. That is a dated, account-specific snapshot, not a general statistic about GitHub users.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.