Launching MonkeyType Stats
I've made a thing: a small web app that you can self-host to preserve you MonkeyType test results.
To see an example deployment with my own MonkeyType stats you can visit typing.kovacsgellert.dev.
Why?
The built-in MonkeyType dashboard is limited to showing the latest 1000 results of a user. As far as my understanding goes, MonkeyType simply deletes any old result that falls out of this range, which makes it impossible to track long-term typing stats progress in case of active users.
The main goals of this project are:
- save my old MonkeyType results from disappearing
- enable deeper analysis of my typing stats
- learn about .NET Aspire in a fun way
Main features
- Scheduled job that runs once every day and imports all new results from the MonkeyType API with ApeKey authentication.
- The job can also be triggered manually from the Settings page (endpoint protected with ApiKey auth).
- Scheduled job that runs hourly and fetches missing result details (needed for wpm/burst/error charts on the test level).
- Filtering results by Timestamp, Mode (including Mode2), Language.
- Summary view showing highlights of all/filtered results.
- Table view showing the list of all/filtered results.
- Graph view showing speed/accuracy/consistency evolution over time (including rolling averages of latest 10 and 100 results).
- Graph view showing wpm/burst/error on the test level (accessible through the Details column of the table view).
- JSON backup/restore of the database (endpoints protected with ApiKey auth).
Tech stack
- .NET Aspire orchestration
- .NET 10 WebApi
- Hangfire for scheduled jobs
- React SPA with TailwindCSS
- PostgreSQL database
- Docker + Docker Compose
How to deploy
You can find all the instructions in the GitHub repo.