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

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.

Great work Joe
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.

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.

"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.

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?

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/

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.

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?

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

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.
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