Skip to content

Latest commit

 

History

History
129 lines (86 loc) · 6.83 KB

README.md

File metadata and controls

129 lines (86 loc) · 6.83 KB

Project abstract

Title: KeyUsageProfiler

Description

An app that tracks the usage of keys in a keyboard while giving some users statistics about them in intuitive ways. Allows for monitoring of multiple users running a keylogger by a team leader. Also detects inactivity and improper activity (such as gaming in work hours) and alerts the team leader about it.

Made for the IES course on school year 23/24

Project Team

Team Manager - Miguel Pinto [email protected]

Product Owner - Ricardo Quintaneiro [email protected]

DevOps - Miguel Figueiredo [email protected]

Architect - João Dourado [email protected]

Practices During Development

The following practices were followed:

  • Conventional Commit Messages (Feat, Fix, Chore) according to the following link
  • Feature-branching workflow - Creation of branches and development based on features and division between backend and frontend (usually each issue had one developer for frontend and another for backend). The naming of the branches followed the same approach that was ​taught in theoretical classes (new/ - new feature, imp/ - improvement) with the number of the issue(s) being developed included in the name (as we divided the issues between backend and frontend that distinction is also done).
  • Branches:
    • feature-branches: (already mentioned) created according to the needs to implement new features
    • develop: branch from which feature branches are created. For quick fixes direct commits were made on this branch. For each feature a pull request was made to this branch from feature branches to merge the changes (and record history). From this branch we do a pull request to main at each iteration/release.
    • main: used to mark the releases of each iteration and where the last version is. (For quick fixes direct commits were also made on this branch.)

Subproject Links

  • Keylogger - projSensor - includes implementation of keylogger and messaging of keystrokes through rabbitmq
  • Backend - projBackend - includes the reception of keystrokes, buffering to redis, notifications, websockets, controllers, persitence services...
  • Frontend - projFrontend - includes the user interface made in react
  • More documentation on each subproject can be found on the README of the respective folder

How to run

# clone repository locally
git clone [email protected]:miguel-silva48/KeyUsageProfiler.git; 
cd KeyUsageProfiler;

Running the App

Make sure you have Docker Compose installed.

Uses the following Docker images:

docker compose up -d;     # create docker containers

Access the frontend at http://localhost:5173/.
There is also a .env file that you may edit if you chose to change some of the environmental variables.

Running Keylogger Sensor

Make sure you have both Maven and Java 17+ installed. Furthermore, make sure you edit the USER_ID in the .env file to the database id of the user you want to impersonate when producing the keystrokes. If you want to use the deployed version in the IES server change RABBITMQ_HOST to "deti-ies-16.ua.pt" (DISCLAIMER: At this moment in time we had problems with our vm and the STIC didn't fix the issue so that we could deploy there our application. We'll send a mail if at any time the option for deployment is available for us again - that is, if STIC fix the issue):

USER_ID=1
RABBITMQ_HOST="localhost"

Running directly:

cd projSensor/keylogger_sensor/;
mvn package;
mvn exec:java -Dexec.mainClass="com.mibef108287.app.App";

Packaging into a JAR and running:

cd projSensor/keylogger_sensor/;
mvn package;
java -jar target/keylogger_sensor-1.0-SNAPSHOT-jar-with-dependencies.jar;

Architecture Diagram

Architecture Diagram

Bookmarks

Management Board

An overall view of the user stories and their status can be found in the following link:

https://github.com/users/miguel-silva48/projects/1

Cloud versions of reports and others

Project_Specification_Report:

https://docs.google.com/document/d/1QzRJoO-oqjjJ1CPPHerlChldXcHeHqTO6yjKa63GLKo/edit

Prototype (Figma):

https://www.figma.com/file/obImDvzy220l7wHxBSFWRW/KeyUsageProfiler?type=design&node-id=0%3A1&mode=design&t=VuI7D2o2buKyOZtO-1

Presentation:

https://uapt33090-my.sharepoint.com/:p:/g/personal/miguel_belchior_ua_pt/Ef_fPynL-OtFpRP8IDC1Vl4BPzEYnji-qqcrNiqj78ujZA?e=t7rEqO

Entry point to the API documentation

While running the backend service, access the following endpoint: http://localhost:8080/swagger-ui/index.html#/