Disclaimer: This article assumes you have a basic understanding of the sport of tricking. If not, read this or watch this first!
If you’re less interested in the techy stuff, there’s a more ~philosophical~ follow-up to this on the way.
Small Recap: What is Tricking?
Tricking (or martial arts tricking) is a non-combative, dynamic sport that incorporates elements of martial arts kicking, gymnastics flipping, and breakdancing and combines them into a single, performance-focused art form.
Why an open-source API?
Over the years, countless trickers have attempted to build tricking apps like combo generators, video games, catalogs, etc. One pain point they all share in the development process is expressing the Tricking Vocabulary in code. This API hopes to remove the friction of building tricking-based applications by providing a common API model for developers to use and build on.
What is the Tricking Vocabulary?
The tricking vocabulary is the terminology used to describe movement concepts within the sport. This includes:
Tricks
Landing Stances
Transitions
Categories of Tricks
Project State (as of 02/05/2023)
The TrickingAPI is hosted on GitHub and is comprised of four projects:
trickingapi - a gin-gonic-based Go server hosted at api.trickingapi.dev with endpoints for retrieving tricks by their name and categories.
{
"id": "pop360",
"name": "Pop 360",
"aliases": [],
"categories": [
"VERT_KICK"
],
"prereqs": [],
"nextTricks": [
"Pop 360 Shuriken",
"Pop 720",
"Swing 360",
"Illusion Twist",
"Backside 1080 Shuriken",
"Pop 360 Gyro",
"Doubleleg",
"Corkscrew Shuriken"
],
"description": "The Pop 360 starts in Frontside stance, leaves the ground off of both feet, rotates 180° in the air, then lands and finishes with an outside crescent kick towards the target and lands in turbo (both feet). This trick is also a hyper, because Pop 180 Hook (TKT) is not often used in tricking. This trick is vitally important for Illusion Twist and other similar tricks that end in turbo."
}
tricking-ts - a typescript package, published on npm, for importing types and HTTP client wrappers for accessing the public instance of TrickingApi
import { TricksClient } from '@trickingapi/tricking-ts'; const client = new TricksClient(); const tricks: Trick[] = await client.getAllTrick(); tricks.forEach((trick) => console.log(trick.name));
trickingapi.dev - the frontend site for the API, imports tricking-ts and tricks-core-data to request tricks data
tricks-core-data - a package for importing the entire tricks.json file as well as individual per-trick files
// importing all tricks
import * as Tricks from '@trickingapi/tricks-core-data/tricks';
// importing individual tricks
import { tr540Gyroknife } from '@trickingapi/tricks-core-data/tricks';
Interested in Contributing?
Visit the TrickingAPI organization page or each individual repo to learn more!