DreamRankr

DreamRankr Used AI

11 devlogs
40h 48m
•  Ship certified
Created by M-Mrk

Demo might take a while to load. Password for viewer perms is 12345 and trainer 123

Ever realized how little you and the others in your sports club actually play against each other?

Well I noticed and wanted to encourage more friendly duels, as in my experience it's one of the best ways to improve your skills. So I created DreamRankr!

DreamRankr is a flask webApp which can host multiple ranking lists, in which the players can challenge each other to rise to the top.

So what can it do and how does it work?
Ranking options:
-By position: In this mode players can only challenge players with a higher ranking (e.g. Player A with the ranking 4 can challenge Player B with the Ranking 2, but not the other way around) and if the lower ranked person wins they move one rank up (Not dependant on defender ranking, just always one rank).
-By points: If you want to take how many matches a player actually played more into consideration, you should use this. If you finish a match you get 1 point and if you won the match you get another point, so 2 points. This system discourages high ranked players to just not play anymore!

Encouragement:
-Lifetime all players leaderboard: In this leaderboard on the main page you can see how you compare to every other person in the app, so you dont get tunnelvision from your ranking.

Administration:
-Viewer and trainer permissions: If you do not have trainer permissions you simply can only view and not change anything.
-Automatic ending of rankings
-Players are saved seperatly of rankings (easy importing into new rankings) and can be in multiple

Security/Legal Stuff:
-Password needed to view any information
-Easy in app editable privacy terms markdown file using EasyMDE. For countries with strict data protection laws.

Dev
-Thourogh logs

Planned features:
-Documentation tab: A place to put documents for the whole club to see e.g. manuals for equipment, current tournament plans, etc.
-Global message: Easily get messages to the players e.g. no training next week
-Tournament rankings
-Nice command line tool to comb through logs
-API and Esp32 Client

##Disclosure as this was my first flask and python project I used AI to learn about this and I used AI to help me create the UI. Nearly all backend logic is human made (whether that is a good thing is up to you :) )##

Timeline

Ship 1

1 payout of shell 400.0 shells

M-Mrk

about 1 month ago

M-Mrk Covers 11 devlogs and 40h 48m

Finished alot the last sessions. I now have the minimum for a prototyp to ship!
I added UI for settings and starting Lists, as well as reworking the UI so it is more mobile friendly. I also added a privacy terms markdown, which can be edited from the app using easyMDE.

Update attachment

Started on UI for settings and ending Rankings.

Update attachment

Day 9:
Today I implemented UI to start a Ranking. I also added a backbutton for when the app is in full screen and not in browser view. I have also changed some text to material icons. Next step is to implement UI to stop a Ranking.

Update attachment

Day 8:
Today I finished authentication and added an all players section in the main menu where all Player stats are ranked, to encourage more competition. Next Task will be to get a working UI for starting and ending Rankings. After that I will focus on implementing tournaments. BTW I am thinking of rebranding, as I think this ranking system would work for many different Sports, but I cant think of any good Names...

Update attachment

Day 7:
Today I finished handling multiple Rankings at once. I also generallized alot of the logic in the main file and moved them to appropiate new files, which will make my life much easier from here on. Logging is now also more extensive and almost all functions have an explanation now. So basically nothing to show, but a lot was done!

Update attachment

Day 6:
Today I added Bonuses and Handicaps by giving the Option to include them when adding a new player. I also started to migrate from being one ranking at a time orientated to having multiple rankings, which is alot of refractoring... I also added the meta tags to allow this web app to become a Fullscreen App for Apple users if they add it as a bookmark to their homescreen. We'll see how it goes in the next days.

Update attachment

Day 5:
After finishing a base yesterday I started to implement more QoL functions, like settings for displaying active Matches, editing and deleting Players and optimizing the JS by actually only having functions that you use. Tomorrow I will implement starting and ending Seasons

Update attachment

Day 4:
Today was a big day, I finished the finishing of matches, seperated my code into seperate files, added db migration(barely), a FavIcon, a Way to display Ranking changes and created a logging system. I now have a basic foundation. Next Step is to iron out the UI and think abouth authentication.

Update attachment

Day 3:
Today I added nothing on the frontend, but I have added features in the backend. I now have a finish match path to finally finish matches and update the stats. I have also added two new stats: lastRanking, so I can display changes in the Ranking and points. Points will be a system which takes how many games you have played more into focus by giving you one point for each match you play and one extra point for each win. I have also thought alot about what the Project should be in the end... I think I am going to make this project more generell, so it could be used for all kinds of sports. I will also make its features configurable via a YAML file or something.

I still have to think about authentication, as I dont want it to be unsecure, but cant have everyone set up an account with a password, as some of my target audience may revolt against creating another account.

But for now I will focus on getting a base working, which can handle Table Tennis. Then I will look into making a feature to host tournaments apart from the normal ranking, as my club is hosting one soon.

Update attachment

Day 2:

Refactored a lot of the html for handling the landscape and portrait views and trimming them down by just using more of Bootstraps capabilities (Attached Image shows how it would look in landscape on a Tablet)! As this project should be accessed mobile it should be able to handle both. I have also added a carousel to view the active matches and a modal to end them. Still dont have the proper backend for ending them, that will be next.

Update attachment

Day 1:
Today I started tracking this project on GitHub and hackclub. I already have basic UI for viewing ranking, adding Players and starting matches.

Next feature will be ending matches and just showing them in generall and currently everything is in German, so I will also look into how to handle different languages!

Update attachment