OpenTopo Japan is an open-source bouldering topo project for Japan. The goal is to make climbing area information easy to find, easy to maintain, and easy to contribute to without paid memberships or closed editorial workflows.
Beta/testing note: OpenTopo Japan is still early and actively being tested. We are working through UI kinks, improving the browsing experience, and continuing to assemble reliable crag data.
The project starts with three principles:
- Fast discovery: search by area, problem name, grade, prefecture, approach time, season, style, and access status.
- Respectful access: access notes, local ethics, closures, parking, toilets, public transport, and landowner guidance are first-class data.
- Open contribution: topo data is stored in versioned files, reviewed publicly, and licensed clearly so the community can improve it over time.
OpenTopo Japan uses a split license:
- Code: GNU Affero General Public License v3.0. See LICENSE.
- Content and resources: Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International. See LICENSE-CC-BY-NC-SA-4.0.
See LICENSES.md for the full licensing policy and which files each license applies to. The non-code content/resource license is non-commercial; commercial reuse of area data, topo data, photos, maps, and other resources requires separate permission.
OpenTopo is now organized around editable source content and generated static output:
content/ contributor-edited area and boulder JSON
assets/ source photos and map images, organized by area
public/ generated runtime data and copied public assets
src/ static browser app
scripts/ validation, content build, and static build scripts
dist/ generated GitHub Pages output
Area source files live under folders such as content/areas/mitake. Each boulder has one JSON file containing boulder metadata, photos, problems, and topo lines. Source photos live under area-first paths such as assets/areas/mitake/boulders/ninja-iwa.
Generated app data is written to public/data, including areas.index.json, areas.json, and one bundle per area. GitHub Pages serves the generated dist/ directory.
The local app is dependency-light and can be run with Node:
npm run build
npm run devUseful scripts:
npm run validate # validate content IDs, grades, landings, and photo refs
npm run optimize:photos # archive raw masters and cap area photos at 1200px JPEG
npm run build:content # generate public/data and public/assets
npm run build:static # generate dist for GitHub Pages
npm run check # syntax-check browser scripts- Validate the information architecture with climbers in Japan.
- Continue refining the canonical data format and contribution workflow.
- Keep tightening runtime image delivery (WebP/AVIF thumbs via the content build).
- Add map search, image topo annotations, and offline-friendly pages.
- Create a review workflow for access-sensitive updates.
- Replacing guidebooks without permission.
- Publishing sensitive or restricted areas without local consent.
- Requiring users to log in just to read public topo data.