By analyzing keylogger data, we can detect how productive a user is at any given time. Based on this data we can suggest breaks to the user, which will help them to stay productive throughout the day.
Additionally, we can detect how much time any application is used and therefore simplify the task of time tracking.
In order to protect the users' privacy, all the keylogger data is stored locally on the users' devices and is only used to extract metrics about the users' state of productivity. The only data that is sent to servers is the resulting metrics.
BreakWise can be split into two parts: The Software on the user's working device and the web app, which is used to display the metrics.
The logging software is written in python3 using pynput
The web app is written in React.js using Framework7 and Vite. The data is stored in a Firebase database.
In order to use BreakWise you only need to install the logging software on your device and create an account on the web app.
- Create python3 virtual environment
python3 -m venv venv
- Activate virtual environment
source venv/bin/activate
- Install requirements
pip install -r requirements.txt
- Run the app
python3 main.py
- Create python3 virtual environment
python3 -m venv venv
- Activate virtual environment
venv\Scripts\activate.bat
- Install requirements
pip install -r requirements.txt
- Run the app
python3 main.py
- cd into the frontend folder and npm install
cd frontend && npm install
- Start up locally or
npm start
- Build for android
npm run build-capacitor-android
- and start app in android (device can be selected in terminal) or
npx cap run android
- If error messages comes saying that android is not setup up, run the following:
npx cap add android
Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.
For more examples, please refer to the Documentation
- Feature 1
- Feature 2
- Feature 3
- Nested Feature
See the open issues for a full list of proposed features (and known issues).
- Ibukun Agboola
- Nando Imboden (@Nando5011)
- Florian Thiévent (@0x49b)
- Mohammad Haider Hamani
- Leo Hofer (leohofer.dev)