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.
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
}
},
...
]
}
]
}
}
mongorestore
command-line utility (you have to install the entire MongoDB Database Tools)/etc/hosts
file (or C:\Windows\System32\drivers\etc\hosts on Windows)127.0.0.1 mongodb
docker compose up -d
yarn install
yarn seed-db # May take a few minutes to download a large database file
yarn serve
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.
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
Browse the database: http://localhost:8081
GraphQL online playground: https://graphiql-online.com/
Bypassing auth when developing locally
Start up your local server with yarn serve-dev
(instead of yarn serve
)
# Run this in open-tacos project
yarn serve-dev
This allows the current user to run any Query
or Mutation
(irrespective of the current userβs UUID)
(How it works: auth/middleware.ts
and auth/permissions.ts
are conditionally swapped out on server initialization (server.ts
), based on whether the env var LOCAL_DEV_BYPASS_AUTH
is set)
Full stack development
Connect your frontend dev env to this local server
# Run this in open-tacos project
yarn dev-local
Make sure to include .js
when importing other files:
...
import { getClimbModel } from '../db/ClimbSchema.js' // .js is required
...
Why? See this issue for an explanation.
MongoDB playground: https://mongoplayground.net/
This project is under active development. Join us on Discord!
The source code is licensed under the Affero GPL v3.0 license.
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!