SpeedLeague is a Flask leaderboard application to rank the scores of people competing at speedrunning. SpeedLeague uses a MongoDB NoSQL database, accessed via the Flask-PyMongo extension. SpeedLeague was developed as a favour for a friend and as a practice project to improve and expand my skills with the Flask framework.
The live site is deployed using Railway and can be viewed here.
To view the admin panel features, login here with the following credentials:
Username: demouser
Password: demopass
Note that this is a restricted account which cannot add, edit or delete data.
- Leaderboards are generated for different games and categories.
- Player scores are automatically ranked and only a player's fastest time per category is shown.
- The leaderboard calculates and displays the gap between positions (i.e. how much faster a score is than the score below it).
- Up to three external links can be added to each player profile.
- A full-featured admin interface allows logged in users to manage site content.
- Logged in users can add, update and delete players and player scores.
- Logged in users can also add, update and delete games and categories.
- Logged in users can update their own passwords.
- The nav menu links are automatically updated when games and categories are created, updated or deleted.
- An admin account with special priviledges is included.
- Only the admin account has the ability to add or remove user accounts. There is no open registration system, as editing the database is intended to be restricted to approved users.
- Python
- HTML
- CSS
- Flask, Jinja and Werkzeug - Used to build the main application structure, page templates (Jinja) and account security (Werkzeug).
- MongoDB - Used for the application's database.
- PyMongo - Used to connect Python with MongoDB.
- Railway - Used to deploy the site.
- Bootstrap 5 - Used to create layout and styling of site.
- Bootswatch Darkly - Used as basis for dark-mode design, with custom styles applied on top.
- Affinity Designer - Used to design logo and illustrations.
- Google Fonts - Used for site fonts (Quicksand and Signika Negative)
- Iconian Fonts - Source of 'Paladins' font used in logo.