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

as-the-body-falls

v1.0.1

Published

make art from falling planets

Readme

☄️ as the body falls 🌀

Welcome to the repository for as the body falls, a node applicaton for your terminal that generates images based on falling planets. It supports custom palettes, planets, and parameters, and there's endless possibilities and permutations!

So how does this all work? Basically, you get to choose the number and position of "gravity points" on your image that have mass. Then for each pixel, it drops a little planet that falls toward the points. The point that it falls into determines the color of the pixel!

Example 1

How do I use it?

Clone this repository in your terminal with git clone or download it from this page and unzip it. Next, install Node.js and run npm i from that folder. This will set up the correct packages you need automatically! Now you can create images in your terminal with node ..

Example 2

Parameter index

  • Width | The width of the image
  • Height | The width of the image
  • Gravity | The precision of the image, lower number = more precise
  • Drag | The simplicity of the image, lower number = more complex
  • Radius | Collision radius of each gravity point, lower number = slower calculation, more precise
  • Number of Points | Number of gravity points in the image, higher number = more colors, faster, more chaotic
  • Manual Point Positions? | Choose whether to have the points randomly placed or choose their placement manually. Both choices can make beautifully organized or chaotic pictures :)
  • Show Points? | Choose whether to render the points in the image or have them invisible. Render size affected by Radius
  • Palette | Choose the palette to render the image in. Depending on Number of Points, some palettes may not have enough colors. Also see Custom Palettes!
  • Random Colors? | Choose whether to shuffle the colors in the palette randomly or keep them in order. Only appears if Manual Point Positions is Yes
  • Give Up Timer | Number of physics steps the renderer takes before it calls it a day and marks a pixel with the failure color, higher number = slower calculation, possibly more complete images

Example 3

Custom Palettes

The included palettes.txt has lots of palettes for you to try, but feel free to edit it and add your own! Palette names can have spaces and as many colors as you want. The first color is the failure color and might not show up on some high-drag images.

Example 4