TypeScript icon, indicating that this package has built-in type declarations

1.0.4 • Public • Published

Jiujitsu Belt Graduation

This repository contains TypeScript code for modeling and validating jiujitsu belt graduations. It includes two modules: Colors and Jiujitsu Belt Type.


Colors exports an enumeration List of all valid jiujitsu belt colors, including white, gray, yellow, orange, green, blue, purple, brown, black, red, and their variations (e.g. gray-white, yellow-black, etc.). It also exports a function createSchema that returns a zod schema for validating a given belt color.

Jiujitsu Belt Type

Jiujitsu Belt Type exports a type Interface representing a jiujitsu belt with a color and degree of proficiency. It also exports a function createSchema that returns a zod schema for validating a given jiujitsu belt, and a function compare for comparing two belts by color and degree.

Additionally, it exports a list object mapping each belt color to an array of valid degrees, as well as degreeList, an array of all possible jiujitsu belts sorted by color and degree.


To use these modules in your TypeScript code, simply import them as needed:

import { List, createSchema as createColorSchema } from '@goodfellas/graduation/colors';
import { Interface, createSchema as createBeltSchema } from '@goodfellas/graduation';

const colorSchema = createColorSchema();
const beltSchema = createBeltSchema();

const whiteBelt: Interface = { color: List.White, degree: 1 };
const yellowBelt: Interface = { color: List.Yellow, degree: 2 };

const validWhiteBelt = beltSchema.parse(whiteBelt); // OK
const invalidYellowBelt = beltSchema.parse(yellowBelt); // Throws an error


This code is released under the MIT License. See LICENSE for more information.

Package Sidebar


npm i @goodfellas/graduation

Weekly Downloads






Unpacked Size

16.2 kB

Total Files


Last publish


  • lfvaamorim