@hangtime/climbing-boards

中文文档
1.0.135发布于 2026/11/01UnlicenseES Module构建来源已验证

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

原始使用文档
文档目录11 节
  1. Data Sources
  2. Data Structure
  3. Automation
  4. Development
  5. Prerequisites
  6. Install
  7. Available Scripts
  8. Authentication
  9. Publications
  10. Credits
  11. License

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.

Update 05-2026: MoonBoard stopped updating since GetMapMarkers got removed.

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

版本与发布记录

@hangtime/climbing-boards 共发布 136 个版本,首次发布于 2026/03/30;过去 12 个月发布了 136 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.0.135latest2026/11/012 天前
1.0.1342026/10/313 天前
1.0.1332026/10/304 天前
1.0.1322026/10/295 天前
1.0.1312026/10/286 天前
1.0.1302026/10/277 天前

关于 @hangtime/climbing-boards 的常见问题

@hangtime/climbing-boards 是什么?

自动更新Aurora攀岩板位置GeoJSON数据集:Kilter, Tension, Grasshopper, Decoy, So iLL, Touchstone和Aurora。

如何安装 @hangtime/climbing-boards?

在项目目录运行 npm install @hangtime/climbing-boards,或使用 pnpm add / yarn add / bun add。

@hangtime/climbing-boards 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/hangtime__climbing-boards 是否存在。

@hangtime/climbing-boards 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@hangtime/climbing-boards 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.18。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@hangtime/climbing-boards 可以商用吗?

@hangtime/climbing-boards 使用 Unlicense 许可。作者将代码贡献到公共领域,可不受限制地使用。以上为概括,不构成法律意见,请以许可原文为准。

@hangtime/climbing-boards 还在维护吗?

最新版本 1.0.135 发布于 2026/11/01(2 天前);至今共发布 136 个版本,其中过去 12 个月发布了 136 个;首次发布于 2026/03/30。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。