I made a website that allows you to export and visualize user stats

Sort:
notjoemartinez

Hi everyone https://chessinsights.xyz is a website that uses the chess.com api to visualize export all user data to a csv, JSON or pgn. Everything runs on client side javascript and I used the chart.js library to plot the data. I also made a python script that can export all of a users data to a json file and convert it into an sqlite database.

This is my first project using javascript so everything is a bit messy. I plan on rewriting it using vue.js and implementing some sort of data persistence to prevent unnecessary request to the api. Let me know if you have any suggestions or know of similar projects like this.

Thanks.

- Project repo:  https://github.com/NotJoeMartinez/chess-insights

- Python Script: https://github.com/NotJoeMartinez/chess-insights/tree/main/cli

sourabhjoshi01

wow

BlueBudgieBeats

It's a really good website

 

YankeeBastid

very nicely done. Maybe you can help me with my competition. I am programming in a very obsolete version of PHP. Once you see how I run my events, you may want to get involved. I will DM you with more info. My club is an official chess.com club now, 4teamchess International.

YChess

Cool!

MasterMatthew52

That's awesome! Really great work!

Wallace_Wang

Great work Joe happy.png

But I think you may need to handle cases where your HTTP requests fail (in Python that would be if r.status_code != 200) which happens quite frequently these days.

Tricky_Dicky

Looks good. Just tried it with my data. The download option to CSV is excellent.

Not sure about the pie chart stats though. The win by TO looks a bit on the high side.

VirtualKnightJoakim

"This is my first project using JavaScript so everything is a bit messy. I plan on rewriting it"

No need to make excuses. It is a great pattern to first write code fast and then refactor. 

One idea: implement fast running unit test that test end points of your code. The tests should be written to test behavior not implementation. Then you are free to refactor your implementation while keeping all your unit tests.

I use Ken Beck's definition of unit test: a test that test one micro behavior in isolation from other tests.

Wiggle_Biggle

wow this is amazing

Wiggle_Biggle

really like the drag to zoom in feature

scheffler712

Great work!

ninjaswat

Quite nice, I was thinking of doing a similar thing through the api / google spreadsheets for puzzles, you can probably do it better though. Is it time to try that again? tongue.png

iblunder2

Very nice.

Some ideas: Would be cool to add date filters and the ability to filter to games as black or white. The "slicers" for All/Blitz/Rapid/Bullet/Daily should also be added to the pie-charts. I'd suggest the order of the slicer buttons should be in ascending or descending length. I'd go for All/Bullet/Blitz/Rapid/Daily/

CosmosOfSolomon

The interface is laid out logically and cleanly. Bravo @notjoemartinez!

A simple request; like many users I prefer to hit Enter when submitting a field.

I know you've added an event listener for the Tab key which is a nice touch. Another like below would be helpful IMO:
input.addEventListener("keypress", function(event){
if (event.key === "Enter"){} }

Also, I noticed // console.log(err); in your code. You may find the debugger statement useful when debugging errors in JS as well. In case you're not familiar with it, it halts code execution where the statement is inserted and allows you to investigate with the dev tools in a paused state.

AntoineDennison

Nicely done! This site could be a helpful tool, with a bit more development in comparative analysis. For example, chess.com come ranks percentile against all active accounts, which is suboptimal for self-evaluation as many active accounts are only rarely used. A more precise method would be to use a date range * games played as a filter.

I like the consistent look and feel of the UI with chess.com. The visualizations are clean and consistent. Lastly, looking at the 'ELO Over Time' visualization, is there a way to zoom back out after drilling into the data?

notjoemartinez
AntoineDennison wrote:Lastly, looking at the 'ELO Over Time' visualization, is there a way to zoom back out after drilling into the data?

I know chart.js has a way to reset zoom with an event listener but right the only way would be to select a different time class and reelect the one you were looking at. Thanks for the feedback @AntoineDennison

Hotrolle

Thank you for this. It was very helpful for getting some statistics that we needed for my nephew.

RSG003

Congratulations for such a nice creation of a lovely project. It does solves a complex problem of extraction of data into CSV form of chess.com server. But I think csv data is somewhat incomplete also it lacks few important data like no of moves per game, accuracy of moves per pieces etc. If it can provides these details.It can really appreciated.

Thanks a lot for your hard work & efforts.

Yan

It looks like free profile insights lol but anyway well done! thumbup