openbeta-graphql
openbeta-graphql copied to clipboard
The open source rock climbing API
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:
- Production: https://api.openbeta.io
- Development: https://stg-api.openbeta.io
We recommend using an online playground to explore the API.
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
- Docker
- Node.js (v16.14.0 or later)
- yarn
mongorestorecommand-line utility (you have to install the entire MongoDB Database Tools)- wget (used for retrieving the remote file for seeding your local database)
- Add '127.0.0.1 mongodb' entry to your
/etc/hostsfile (or C:\Windows\System32\drivers\etc\hosts on Windows)
127.0.0.1 mongodb
- Launch mongodb dev stack: database server and mongo-express (web-based admin console for mongo):
docker compose up -d
- 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
- 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.
- Layers
- Testing
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
-
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 ofyarn serve)# Run this in open-tacos project yarn serve-devThis allows the current user to run any
QueryorMutation(irrespective of the current userβs UUID)(How it works:
auth/middleware.tsandauth/permissions.tsare conditionally swapped out on server initialization (server.ts), based on whether the env varLOCAL_DEV_BYPASS_AUTHis 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
.jswhen importing other files:... import { getClimbModel } from '../db/ClimbSchema.js' // .js is required ...Why? See this issue for an explanation.
-
MongoDB playground: https://mongoplayground.net/
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 π» π€ |
Paul Phillips π€ |
admanny π» |
Colin Gale π» π€ |
Brendan Downing π» π€ |
Darren Lew π€ π» |
Sundev π» π€ |
Siman Shrestha π» π€ |
Silthus π€ π» |
Bradley Lignoski π» π€ |
zkao π» π€ |
Nathan Musoke π» π€ |
Bill Huang π» |
Klaus π» π€ |
Iacami Gevaerd π» |
This project follows the all-contributors specification. Contributions of any kind welcome!