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 🙏

© 2026 – Pkg Stats / Ryan Hefner

maeul-in-the-sky

v1.4.0

Published

Transform GitHub contributions into animated terrain SVGs

Downloads

88

Readme

Maeul in the Sky

Transform your GitHub contributions into an animated isometric terrain

npm version npm downloads License: MIT Node.js GitHub Actions 한국어 日本語 中文

Your contribution graph as a living village — with seasonal weather, flowing rivers, and animated clouds.

What is Maeul in the Sky?

Maeul in the Sky (천공의 마을) turns your GitHub contribution history into an animated isometric terrain SVG. Maeul (마을) is Korean for "village" — your contribution graph becomes a living village floating in the sky. Each day's contribution level becomes a terrain block — from deep water (no activity) to towering city buildings (peak activity). The terrain transitions through four seasons with 48 unique seasonal assets, biome generation (rivers, ponds, forests), and ambient animations.

Highlights

  • Isometric 3D terrain — 100-level elevation system mapped to your contribution data
  • 4-season cycle — Winter, Spring, Summer, Autumn with smooth transitions and 48 seasonal assets
  • Biome generation — Procedural rivers, ponds, and forest clusters via seeded noise
  • 118 terrain asset types — Trees, buildings, windmills, snowmen, cherry blossoms, and more
  • Animated SVG — Clouds drift, water shimmers, flags wave — pure SVG, no JavaScript
  • Dark & Light mode — Generates both variants; auto-switches via <picture> tag
  • Hemisphere support — Northern or Southern hemisphere seasonal mapping
  • GitHub Action — Drop into any workflow for automated daily updates

More Previews

| Sparse (Archipelago) | Maximum Density (Civilization) | |:---:|:---:| | | |

Quick Start

GitHub Action (recommended)

Add this workflow to .github/workflows/maeul-sky.yml:

name: Generate Maeul in the Sky Terrain
on:
  schedule:
    - cron: '0 0 * * *'  # daily
  workflow_dispatch:

permissions:
  contents: write

jobs:
  generate:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - uses: t1seo/maeul-in-the-sky@v1
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}

      - uses: stefanzweifel/git-auto-commit-action@v5
        with:
          commit_message: 'chore: update maeul-in-the-sky terrain'

Then add this to your profile README:

<picture>
  <source media="(prefers-color-scheme: dark)" srcset="./maeul-in-the-sky-dark.svg">
  <source media="(prefers-color-scheme: light)" srcset="./maeul-in-the-sky-light.svg">
  <img alt="GitHub contribution terrain" src="./maeul-in-the-sky-dark.svg" width="100%">
</picture>

Action Inputs

| Input | Description | Default | |-------|-------------|---------| | github_token | GitHub token for API access | ${{ github.token }} | | theme | Theme name | terrain | | title | Custom title text | GitHub username | | output_dir | Output directory | ./ | | year | Target year | Current year | | hemisphere | Seasonal mapping (north or south) | north | | density | Building density 1-10 (higher = buildings at lower activity) | 5 |

Customization Examples

# Southern hemisphere (Australia, Brazil, etc.)
- uses: t1seo/maeul-in-the-sky@v1
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    hemisphere: south

# Custom title
- uses: t1seo/maeul-in-the-sky@v1
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    title: "My Coding Journey"

# Specific year
- uses: t1seo/maeul-in-the-sky@v1
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    year: 2025

# More buildings even with moderate activity
- uses: t1seo/maeul-in-the-sky@v1
  with:
    github_token: ${{ secrets.GITHUB_TOKEN }}
    density: 8

How Does the Terrain Work?

Each square on your GitHub contribution graph becomes a terrain block. The more you contribute on a given day, the more developed that block becomes.

| Your activity | Terrain | What you'll see | |:---:|:---:|:---| | No commits | 🌊 Water | Ocean tiles — the empty sea | | A few commits | 🏖️ Sand & Grass | Flat land begins to form | | Regular commits | 🌲 Forest | Trees and vegetation grow | | Above average | 🌾 Farmland | Fields, barns, windmills | | Very active day | 🏘️ Village | Houses and small buildings | | Peak activity | 🏙️ City | Tall buildings and towers |

It's relative to you, not absolute. If you usually commit 2-3 times a day, then a 3-commit day already reaches village or city level. Someone who commits 20 times a day would need ~20 to reach the same level. The terrain reflects your personal rhythm.

Two things shape your terrain:

  • Commit every day → Less ocean, more land appears across the map
  • Commit more on a given day → That day's land upgrades from grass to forest to buildings

A consistent contributor who codes daily will have a lush island full of villages. A burst contributor who codes intensely a few days a week will have scattered but tall cities rising from the sea.

What does density do?

Your terrain levels are calculated relative to your own activity — your busiest days become the peak, and everything else scales accordingly. This means buildings (villages, towns, cities) appear on your most active days, but "average" days tend to stay in the forest or farm range.

This is especially noticeable if your commit pattern is uneven. For example, if your busiest day has 10 commits but you usually do 1-2, those normal days only reach the forest level (~30-45 out of 99) — buildings start at level 79. The density setting shifts this threshold lower so your everyday commits can produce villages too.

Think of it as a "civilization boost." It doesn't change your terrain's elevation or colors — only which assets (trees vs. houses vs. towers) appear on each block.

Recommended settings:

| Your commit pattern | Recommended density | Why | |:---|:---:|:---| | Consistent daily commits | 5 (default) | Most days are already near your peak, so buildings appear naturally | | Daily commits, but occasional burst days | 67 | Burst days push the baseline up — this helps normal days show buildings too | | A few days per week, similar volume each day | 78 | Active days are high-level but sparse; boost helps them reach village range | | Sporadic bursts with long gaps | 89 | Big gap between peak and average days; a higher boost bridges it | | Just getting started or very occasional | 910 | Maximizes buildings so even light activity feels rewarding |

Setting density to 14 does the opposite — it raises the bar, making buildings rarer. Use this if your terrain feels too urban and you want more nature.

Why this exists: Maeul in the Sky is about making your contribution graph delightful. Seeing your terrain grow from forests into a thriving village can motivate you to keep coding every day — and density makes sure that feeling is accessible to everyone, not just those with perfectly even commit patterns.

License

MIT © t1seo