Skip to content

Latest commit

 

History

History
44 lines (30 loc) · 2.82 KB

README.md

File metadata and controls

44 lines (30 loc) · 2.82 KB

Employee Tracker - software for tracking productivity of remote employees

The project is comprised of desktop(client) and web applications. The first one is used to collect data from employees when they are working, whereas the other one is for monitoring the gathered data. Built with Qt, Django(Channels, REST framework) and React.

Project Status

This project is in production.

Stable versions of the client applications can be found here.

Check out the web application here.

Features:

Client application

  • Authorization (only employee users can log in)
  • Websocket connection for real time data transfers
  • Internet traffic analysis(HTTP/SSL/TLS packets)
  • Screen shots collection
  • Idle prompts when a user shows no activity

Web application

  • Authorization (log in, sign up, password reset)
  • User profile/account pages
  • Your projects page (for staff members only). Ability to create new projects, add new members and view existing ones.
  • Real time updates when an employee's connection status(online, offline, etc) changes.
  • Employee activity logs page (visualization of data collected by client app)

Project Video Demo

demo video

Reflection

This was an over a month long pet project built during the 2020's summer. Project's main goals were consolidating skills in Python, JavaScript, HTML/CSS languages, as well as object oriented and asynchronous/parallel programming, design patterns and going through main stages of software development lifecycle.

Originally I wanted to build a free solution that allowed business clients to be able to watch what their employees do during the job. I started this process by developing client application, then planning database architecture and moving to web application to visualize the collected data.

One of the main challenges I ran into was Networking features. This lead me to spend a few days on a research spike into TCP/IP network model, what data is used on each layer of it, application protocols and means to implement this knowledge in practice. In addition, building client application essentially improved my software designing skills, since I was doing my best keeping all the components loosely coupled.

At the end of the day, the technologies implemented in this project are Qt, Django(with Channels and REST framework), npm, Webpack, React, React-Router 5.0, Axios, Websockets, HTML, CSS(Reactstrap).