This is the source code for a web app to track matches in IBJJF tournaments and rank athletes with the Elo rating system.
The URL for the production app is https://ibjjfrankings.com/
If you wish to contribute to this project, please see the Issues page for a list of outstanding feature requests, or you can donate.
This app is built with the following technologies:
- The frontend is React with Typescript, with a build system created by Vite.
- Frontend CSS provided by Bulma.
- The backend is a Python web app using Flask.
- We use Flask-Migrate for database migrations.
- The database can be either PostgreSQL or SQLite.
-
Clone this repository
-
Install Python packages (create a virtual environment first):
$ pip install -r requirements.txt
- Run database migrations:
$ cd app
/app $ flask db upgrade
This will create a SQLite database in app/instance/app.db
- Run Python web app:
/app $ flask run --debug
- In another terminal, install NPM packages and run the Vite dev server:
/app $ cd frontend
/app/frontend $ npm install
/app/frontend $ npm run dev
Now you can open the URL that npm prints to the terminal to use the app.
-
Scripts are in the
scripts/directory. The most useful isload_csv.py, which loads match data from a CSV file into the database. -
Please avoid running the
pull_bjjcompsystem.pyscript unless you are actively developing it, as we don't want to stress the IBJJF's servers. Instead, if you want to help develop the app and you need sample data, contact us at ibjjfrankings on Instagram and we will sort you out.