This app’s purpose is to track and report on a user's writing speed. It uses command line UI for data collection and generates PDF reports including visualizations of CPM (characters per minute).
- Start/Stop - after starting the session the data collection begins until it is stopped. Upon stopping data from the session is saved in .csv file and .pdf report for the session is generated
- Saved - connects selected data from previous session to be visualized on one report
- Options - allows for changing upper and lower threshold of CPM considered to weed out moments where nothing is written in data analysis, deciding if app should include all of the keys or only those which are used for writing (exclude backspace, alt, etc.)
- Tags - tags can be added or deleted in options and used to denote the type of writing session (e.g. lecture, coding, etc.). Later they can be compared in multi-session reports. Tags are kept in between uses of the app.
As of now the report includes two or three graphs: barplot showing the relationship between mean CPM and process used at the time of writing;
lineplot showing CPM over time – in case of single-session report over minutes and hours, and while using multi-session data whole days are considered.
The third graph is generated only in a multi-session report and highlights the relationship between CPM and the tag used during a particular tracking session.
Report also includes date (of creating the report), peak speed, average speed and total characters written.
- Clone repository locally
cdto the project directory- Install the dependencies if needed
pip install -r req.txt - Run the project in commandline
py -m main - In-app navigation - keyboard arrows to move around, enter to select/confirm, esc to go back



