A full-stack web app to manage a summer rounders tournament.
The backend is written in Python using Flask and Jinja2 templating, and the frontend uses a small amount of htmx. The database is SQLite, and the SQLAlchemy Python library is used to interface with it.
Requires Python >= 3.11.
- Install required packages with
pip install -r requirements.txt
. - Create a
.env
file to define needed environment variables in the formatENV_VAR=...
.SECRET_KEY
-- generate according to the flask documentationADMIN_PASSWORD_HASH
-- generate usingwerkzeug.security.generate_password_hash
, docs here
- Run with a WSGI server (e.g. gunicorn) or debug with
flask --app rounders:app run --debug
.
-
GET
/
: The homepage -
GET
/rules/
: Rules of the game -
GET
/teams/
: Get a list of all teams -
*
GET
/teams/create/
: Get the form to create a team -
*
GET
/teams/<int:id>/
: Get a single team -
*
GET
/teams/<int:id>/edit/
: Get the form to edit a team -
*
POST
/teams/
: Create a team -
*
POST
/teams/<int:id>/edit/
: Edit a team -
*
POST
/teams/<int:id>/delete/
: Delete a team -
GET
/matches/
: Get all matches -
*
GET
/matches/create/
: Get the form to create a match -
*
GET
/matches/<int:id>/edit/
: Get the form to edit a match -
*
POST
/matches/
: Create a match -
*
POST
/matches/<int:id>/edit/
: Edit a match -
*
POST
/matches/<int:id>/delete/
: Delete a match -
GET
/photos/
: Get a view of all the posted photos -
*
POST
/photos/
: Create a photo entry -
*
POST
/photos/<int:id>/delete/
: Delete a photo entry
* Requires authentication as the administrator