/openbeta-graphql

The open source rock climbing API

Primary LanguageTypeScriptGNU Affero General Public License v3.0AGPL-3.0

Build License

All Contributors

Climbing Route Catalog API

What is this?

OpenBeta Graph API allows other applications to access the OpenBeta climbing database using any standard GraphQL clients.

Endpoint:

We recommend using an online playground to explore the API.

Learn more about GraphQL

Example query

Get all sub-areas at Smith Rock

query Example1 {
  areas(filter: {area_name: {match: "Smith Rock"}}) {
    area_name
    children {
      area_name
      metadata {
        lat
        lng
      }
    }
  }
}

# Result
{
  "data": {
    "areas": [
      {
        "area_name": "Smith Rock",
        "children": [
          {
            "area_name": "Aggro Gully",
            "metadata": {
              "lat": 44.36724,
              "lng": -121.14238
            }
          },
          {
            "area_name": "Angel Flight Crags",
            "metadata": {
              "lat": 44.5672,
              "lng": -122.1269
            }
          },
       ...
        ]
      }
    ]
  }
}

Development

Requirements:

  1. Add '127.0.0.1 mongodb' entry to your /etc/hosts file (or C:\Windows\System32\drivers\etc\hosts on Windows)
127.0.0.1       mongodb
  1. Launch mongodb dev stack: database server and mongo-express (web-based admin console for mongo):
docker compose up -d
  1. Seed your local database with data from staging environment
yarn install
yarn seed-db   # May take a few minutes to download a large database file
  1. Start the GraphQL server
yarn serve

Navigating the codebase

These links explain the structure and key abstractions of our codebase. It's a good place to start before you go spelunking in the code.

Troubleshooting

  • Fix "permissions on /opt/keyfile/keyfile are too open" error This error appears because the keyfile is required to be read-only

    chmod 400 keyfile
  • Fix "error opening file: /opt/keyfile/keyfile: bad file" error This may appear after you update the keyfile to read-only access. The file needs to be owned by the same owner of the mongodb process

    chown 999:999 keyfile

Tips

Questions?

This project is under active development. Join us on Discord!

License

The source code is licensed under the Affero GPL v3.0 license.

Contributors ✨

Thanks goes to these wonderful people (emoji key):

Kendra Gibbons
Kendra Gibbons

💻 🤔
Paul Phillips
Paul Phillips

🤔
admanny
admanny

💻
Colin Gale
Colin Gale

💻 🤔
Brendan Downing
Brendan Downing

💻 🤔
Darren Lew
Darren Lew

🤔 💻
Sundev
Sundev

💻 🤔
Siman Shrestha
Siman Shrestha

💻 🤔
Silthus
Silthus

🤔 💻
Bradley Lignoski
Bradley Lignoski

💻 🤔
zkao
zkao

💻 🤔
Nathan Musoke
Nathan Musoke

💻 🤔
Bill Huang
Bill Huang

💻
Klaus
Klaus

💻 🤔
Iacami Gevaerd
Iacami Gevaerd

💻

This project follows the all-contributors specification. Contributions of any kind welcome!