There is a lot of extra data I computed - like the opening data - that is not included in the app UI as it currently stands. Before I finish development of the project I want to show all the data I collected, for the most in-depth insights possible
It may be true that the percentage of people who are blind/ partially blind/ or otherwise visually impaired is probably quite low. However, even if that is true, if I can help even a handful of people who have such a condition improve at their chess that is more than enough of a reward to motivate this projects development.
I wanted to create a project that would help me learn about something I wanted to be better at: Web Accessibility.
And what better way to do that then by combining it with something I love (chess), while at the same time getting to help someone out (hopefully).
The goal:
To create a site that allows people who may suffer from a visual impairment to be able to get meaningful insights from their chess games.
Say a user uploads a hundred games and more than X percent contain the same user name, ask that user if that is their username for the given site. If yes, proceed as normal, if no, get them to enter their username.
I ran into some issues with type checking and getServerSideProps for the dasboard.tsx api calls. Fix these, and put the api calls back into getServerSide.
Create a simple opening book for some openings (Maybe 50 -100?), and integrate it into a users profile with what colour they were playing as to tell them their favourite and most successful openings.
Example:
Say you played the King's Indian most often with black, we would show the 4 most popular openings you played and your win rate. This strongly integrates with the move matrix.
After evaluating the implementation of a chess engine for the site (UCI, Stockfish WASM, or API based ones). I have determined it might not be feasible to implement that feature.
Core Focus
I believe a good core focus now is providing a "My Report" page, that has as much meaningful information on it as possible.
Perhaps I will include the ability of downloading the report page as a pdf, although this requires further looking into, as it's not clear how good some of the available JavaScript or HTML to PDF services are.
Information to be provided:
Top Opening Move
Top Winning Opening
Move (Either number or general stage of the game) most commonly lost on
Top reason (reason which occurs most often) for Win, Loss and Draw terminations
After evaluating the implementation of a chess engine for the site (UCI, Stockfish WASM, or API based ones). I have determined it might not be feasible to implement that feature.
Core Focus
I believe a good core focus now is providing a "My Report" page, that has as much meaningful information on it as possible.
Perhaps I will include the ability of downloading the report page as a pdf, although this requires further looking into, as it's not clear how good some of the available JavaScript or HTML to PDF services are.
Information to be provided:
Top Opening Move
Top Winning Opening
Move (Either number or general stage of the game) most commonly lost on
Top reason (reason which occurs most often) for Win, Loss and Draw terminations
Games played (Total and per site)
Peak Rating (Total and per site)
Average game lengths:
Average length on win
Average length on loss
Average length on draw
Most frequented opponent if any
Bugs To Be Fixed:
Opening Data not integrating with Game model properly
Due to being unable to incorporate a chess engine, I have decided to 'complete' this project at its currently level of functionality.
The effort required to add a chess engine (external server, complex api's, cost associated with compute time, etc...) I will be polishing what is currently here and ending development.
The README will be updated with most of the relevant data, and then deployed
TODO:
Run through comprehensive screen reader eval of the site to ensure all a11y aspects work as intended
Remove hardcoded user names from api calls
Double check all aria-labels
Add documentation to README (esp. about difficult apis *cough* LiChess *cough*)
In the opening explorer, users need to be able to SELECT (not click just click) a specific move to pop() it off the moveList array and update their view.