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

@hangtime/climbing-boards

v1.0.11

Published

Auto-updating GeoJSON dataset of Aurora Climbing board locations: Kilter, Tension, Grasshopper, Decoy, So iLL, Touchstone and Aurora.

Readme

Climbing Boards

A GeoJSON dataset tracking all climbing training/system boards worldwide, including MoonBoard, Kilter Board, Tension Board, Grasshopper Board, Decoy Board, So iLL Board, Touchstone Board, Aurora Board, and 12Climb Board. This dataset is automatically updated daily through GitHub Actions.

Explore all system boards on GeoJSON.io

Climbing Boards

Data Sources

The repository collects data from multiple climbing board applications and converts it to GeoJSON, a lightweight, open standard format that's perfect for mapping applications and geographic data visualization. Explore individual boards on GeoJSON.io:

Data Structure

The /data directory contains:

  • Raw JSON location data from each source
  • Scraped data from various Aurora Climbing API endpoints

The /geojson directory contains:

  • Individual GeoJSON files for each climbing board type
  • A combined GeoJSON file with all locations

The /api directory contains:

  • API client implementations for each climbing board service
  • Authentication and data fetching logic

The /interfaces directory contains:

  • TypeScript type definitions and interfaces
  • Data model specifications for the application

The /models directory contains:

  • Client models for API interactions and data handling
  • Data transformation and validation models

Automation

This repository uses GitHub Actions to:

  • Scrape the latest location data daily
  • Convert the data to GeoJSON format
  • Combine all sources into a single GeoJSON file
  • Automatically commit, push and publish updates

Development

Prerequisites

  • Node.js 22 / Deno / Bun

Install

npm i @hangtime/climbing-boards

Available Scripts

# Install dependencies
npm ci

# Scrape data from board APIs
npm run scrape

# Convert scraped data to GeoJSON
npm run convert

# Combine all GeoJSON files
npm run combine

# Run the complete build process
npm run build

# Watch for TypeScript changes during development
npm run dev

Authentication

Required to get MoonBoard and Kilter Board locations. To get detailed information about Aurora Boards such as (Tension, Grasshoper etc.) including the gym's address, board angle, or rotatability status, you need to provide your credentials through environment variables. Each climbing board app requires its own set of login credentials. The scraper will only fetch additional details for the specific apps where you provide valid login details.

Important Legal Notice: Before using this scraper with credentials, you must:

  1. Have a valid account and have explicitly accepted the Terms of Use for each platform.
  2. Ensure your use of this tool complies with the platform's terms of service
  3. Be aware that this tool makes authenticated API requests to these services

Setup Instructions:

  1. Copy the .env.example file to .env:
cp .env.example .env
  1. Fill in your credentials in the .env file:
# Aurora Climbing Boards (Tension, Grasshoper etc.)
TENSIONBOARDAPP_USERNAME=your_username
TENSIONBOARDAPP_PASSWORD=your_password

# Kilter Boards (requires authentication for location data)
KILTERBOARDAPP_USERNAME=your_username
KILTERBOARDAPP_PASSWORD=your_password

# MoonBoard (requires authentication for location data)
MOONBOARD_USERNAME=your_username
MOONBOARD_PASSWORD=your_password

# Add credentials for other boards as needed

API Usage Safeguards: The scraper includes built-in protections:

  • Rate limiting (30 requests per minute per board)
  • Automatic request throttling
  • Retry mechanism with exponential backoff for rate limit errors
  • High usage warnings (triggers at 80% of rate limit)
  • Error handling for authentication and API issues

Note: While the scraper implements rate limiting and other safeguards, you are still responsible for ensuring your usage complies with each service's terms of use.

Publications

The Kilter Board App Disappeared Overnight. It Wasn't an Accident.

Credits

Forked from Georift/climbing-board-locations

License

Unlicense