Skip to content

harshnishad/Desktop-Agent-Application

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

95 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Desktop Agent Application

Top Contributors

Team Members:

  • KRISH GUPTA
  • HARSH NISHAD
  • YUGDEEP PARIHAR
  • ARYAN RAJPUT
  • Application Report File

  • Report File: https://docs.google.com/document/d/15cm1dQlnkONjgso4lhXPmMjbdbIx03XL/edit?usp=sharing&ouid=109225541696855840474&rtpof=true&sd=true
  • Application Working Video

  • Working Video: https://drive.google.com/file/d/1fF3iS2wmMo0h9PiDb5kE_dpGXMuZ7fnp/view?usp=drive_link
  • Technologies Used

    1. Python

    • Core Language: Python will be the primary language for developing the desktop agent application.
    • Libraries:
      • pyautogui: For capturing screenshots.
      • pynput: For monitoring keyboard and mouse activity.
      • asyncio: For handling asynchronous tasks like periodic screenshot capture and data uploads.
      • requests: For sending HTTP requests to upload data to cloud services.
      • pymongo: For interaction with MongoDB if local storage is required before upload.

    2. Amazon Web Services (AWS)

    • Amazon S3: For storing and managing uploaded screenshots and activity logs.
    • AWS Lambda: For handling the backend processing of uploads, such as file storage or data transformation.
    • AWS IAM: For managing permissions and roles required for secure interaction with S3 and Lambda.
    • Boto3: AWS SDK for Python to interact with S3 for uploading files.

    3. FastAPI

    • Used for creating an API that handles configuration updates from a web application, allowing the agent to fetch new configurations (e.g., interval times, screenshot settings).

    4. MongoDB

    • A NoSQL database used for temporarily storing captured data locally (e.g., activity logs and screenshots) before uploading to cloud storage.

    5. React.js

    • For the front-end of the web application where users can configure the agent settings (e.g., screenshot intervals, whether screenshots should be blurred, etc.).

    6. Encryption & Security

    • PyCryptodome: A library for implementing encryption to ensure that data is securely uploaded to S3.

    7. System-level Tools

    • Time Zone Management: Utilizing Python's tzlocal or pytz libraries for detecting and managing time zone changes.

    8. Testing and Debugging Tools

    • Postman: For testing and validating APIs through automated requests, response checks, and collaboration on API development.

    9. Error Handling

    • Retry Mechanisms: For retrying failed uploads due to connectivity issues.
    • Queueing: To handle data that couldn’t be uploaded immediately, ensuring it's uploaded once the network is restored.

    Application Key Features

  • Different dashboards for client and admin
  • Manage user total active time
  • Manage user total inactive time
  • Take screenshot manually and automatically
  • Store screenshots in AWS S3 bucket
  • Locally store screenshots in queue if network related problem arise
  • Track Mouse and Keyboard Movements
  • Gives warning if user become inactive for more than 30 seconds
  • Track and store different application usage of client on device and showcase on admin portal
  • Track battery status
  • Show current time according to location
  • And some more......
  • Important Instructions To Run

    Step 1- git clone https://github.com/harshnishad/VinoveProject.git
    
    step 2 ->For Frontend
    
    cd client
    npm i
    npm start
    
    step 3->For backend
    
    cd server
    pip install "all dependencies"
    python main.py
    
    

    ALWAYS STARTS SERVER FIRST

    ID , PASSWORD ->

    id- client , pass- 1111

    id- admin , pass- 0000

    Dependencies To Install

    Backent Dependencies

    1.motor
    2.pyautogui
    3.requests
    4.pymongo
    5.pygetwindow
    6.fastapi
    7.pydantic
    

    Frontend Dependencies

    1.axios
    2.react-router-dom
    

    Repository Information

    Commit History

    This repository includes a complete commit history that reflects the development process of the project. All changes and updates made during the development phase are documented in the commit history, providing a detailed record of the project's evolution.

    To view the commit history:

    1. Navigate to the Commits section of this repository on GitHub.
    2. Browse through the commits to see the changes made over time.

    For a more comprehensive understanding of the development process, you can review the commit messages and associated changes.