Skip to main content
The cover image for "Employee Task Management System"

Employee Task Management System

Sidebar

I was contacted by a client to create a system which calculates the workload for employees based on their assignment to tasks and appointments. The system needs to solve two problems: Firstly, different staff members work different numbers of hours, which makes it hard to allocate tasks fairly and proportionally. Secondly, the client wanted to use the system to analyse past workloads and to anticipate future workload, in order to improve her system of work.

I was contacted by a client to create a system which calculates the workload for employees based on their assignment to tasks and appointments.

The system needs to solve two problems: Firstly, different staff members work different numbers of hours, which makes it hard to allocate tasks fairly and proportionally. Secondly, the client wanted to use the system to analyse past workloads and to anticipate future workload, in order to improve her system of work.

Implementation #

Screenshot of ETMS
Screenshot of ETMS

The solution contains an algorithm to suggest new employees to tasks, based on the type of tasks they are currently assigned to, how many hours they should work a week, and how what they are doing at the time.

The solution was written as a web application, using Python, Flask and SQLAlchemy.

Server side rendered graphs in ETMS
Server side rendered graphs in ETMS

Originally I created the graphs using a HTML5 canvas. However, during the first client feedback sesson, I found out they used Internet Explorer with JavaScript disabled. This meant that I needed to move all of the graph rendering to the server. I used the Python Imaging Library (PIL) to do this.

rubenwardy's profile picture, the letter R

Hi, I'm Andrew Ward. I'm a software developer, an open source maintainer, and a graduate from the University of Bristol. I’m a core developer for Luanti, an open source voxel game engine.

Comments

Leave comment

Shown publicly next to your comment. Leave blank to show as "Anonymous".
Optional, to notify you if rubenwardy replies. Not shown publicly.
Max 1800 characters. You may use plain text, HTML, or Markdown.