User action logger for Linux, Windows and Mac

Cancelled Posted 6 years ago Paid on delivery
Cancelled

Name: ActivityLogger

Type: native, multi platform library/worker

We need a new library that is well written (clean, maintainable code) and preserves the functionality of the old app to track user activities on a computer. Later on we would like to include the library in the Electon app.

Supported OS:

- Windows XP or higher

- Linux (Debian, Ubuntu)

- MacOS 10.4 or higher

Supported browsers (read on):

- Chrome

- Firefox

- Safari

- Internet Explorer

- Edge

Features:

- runs in background

- collects a combination of process name and windows title and (*)optional URL field

(*) optional URL field is filled only when process is a browser. URL is collected from the browser on every change of the browser tab and counts as a new action.

- collects information on when the user was last active by counting when was the last key pressed or mouse clicked. Continuous press counts as being active. The latch interval is configurable. Example: Latch interval is configured to 1 minute. A user typed ‘a’ key and went away from the computer at 10h00m00s. We count The time from 10h00m00s to 10h01m00s as the user being active. Every time user presses a key or moves a mouse or clicks a mouse the latch resets.

- stores all the data in persistent location belonging to currently logged in system user

- sends stored data to server every 5 minutes (remote configurable batch size and period)

Proposed project structure:

- collector, responsible for gathering data from processes

- worker, main process, responsible for running the `collector` in background, reconfigurable

- database, responsible for persistently storing the data from `collector`

- dispatcher, responsible for periodical dispatch of stored data to a remote server, handles connection errors, has retry strategy

Proposed languages:

- C

- Objective-C

- C++

Proposed data structure:

- outbound action message:

{

type: ‘window-switch’,

dateTime: <time in epoch with miliseconds after ., ie. 1493043764.432>,

windowTitle: ‘Google Chrome’,

processName: ‘[url removed, login to view]’,

browser: {

url: ‘[url removed, login to view]‘

},

}

- outbound activity message:

{

type: ‘activity’,

startDateTime: <epoch>,

endDateTime: <epoch>,

}

- inbound config:

{

type: ‘configure’,

...

}

Proposed libraries:

- SQLite for data storage (data is not encrypted and is located in user-related directory)

Notes:

- the library worker should be reconfigurable at runtime so new settings coming from remote can be applied immediately when server says so

- the lib does not have to query NTP. It should trust the system clock

- all collected times should be in UTC

- the library should consume minimal CPU power

- the library should use JSON to communicate

- the library should take care of computer going to sleep or hibernation. Latch is ignored in this case.

C Programming C++ Programming Object Oriented Programming (OOP) Objective C RESTful

Project ID: #15118541

About the project

7 proposals Remote project Active 6 years ago

Awarded to:

sgatich

Hi. I'm a programmer from Russia with strong skills in C++. You can see the full list of my skills on my profile page. I performed a similar job for Windows and Linux. It concerned keyboard hook and mapping of let More

$27 USD / hour
(7 Reviews)
4.8

7 freelancers are bidding on average $38/hour for this job

Wangxianming

** Please consider this is not an auto bid ** Hi. I checked your project with great care. I have rich experience on such utility apps, Please check my wonderful review and contact me. Thanks

$41 USD / hour
(12 Reviews)
6.3
TenStar718

Dear sir. I have full experience in Windows,Linux,MAc programming I can develop action logger for you. If you hire me, I will do my best to work on your project to make the excellent result for you and your customers More

$39 USD / hour
(15 Reviews)
6.6