Dashboard for QHSE

The Product

What QHSE does is that a client requests a service and QHSE makes a personalized questionnaire and sends this to the client. Both the client and QHSE fill in the questionnaire and based on the answers given actions are created. All this communication is also conducted via e-mail. You can imagine that this is very costly. Therefore, the goal of our project was to change this process by building a dashboard where QHSE can create these questionnaires and can assign them to a company. A company can then fill in the questionnaire and actions can be created and assigned to certain people. With this implementation our client can work more efficiently.


The Customer

QHSE Totaal is a company that helps companies, mainly small and medium-sized enterprises, to create a safe and healthy workplace. QHSE Totaal does this by providing various services such as practice-oriented training for staff, risk inventory & evaluation, and giving advice. We had two-weekly meetings with our client to discuss our progress and to get feedback.

  • Team work makes the dreamwork.
The Team

Jesse: Mainly involved in the development of the front-end of the QHSE Totaal customer portal, focusing on key parts of the application, such as the form creation tool and user dashboards. This includes making sure the navigation between pages goes smoothly and creating clear and user-friendly widgets in the Flutter framework that align with the requirements of the client.

Joep: Together with Jesse, responsible for creating a user-friendly front-end environment that aligns with the requirements of the client. This includes allowing users to easily perform data entry and ultimately create a tool that is clear and pleasant to use. This requires extensive knowledge of the Flutter framework, in addition to knowledge of user interface and user experience principles.

Joost: Mainly responsible for bridging the gap between the API and the location where the data is required. This involved the creation of a modular layer that allows data received from an API endpoint to be converted into a usable format, and vice versa. Also created elaborate documentation on the formats that ensures both the front-end and the back-end had no conflicts, and created test cases that ensured proper functioning of the modular layer. This required a deep knowledge on Dart and a foundation in common practices in JSON data traffic.

Justin: Main task was providing the front-end with a versatile and documented API for the front-end, so that a proper connection can be made between the user and the server. This required an extensive knowledge on both the front- and the back-end, as well as a basis in network protocols.

Max: Mostly responsible for creating a back-end that supports all functionalities required by the client, while complying with industry standard security measures. This is backed up by several unit tests that ensure the proper functioning of the back end. This required extensive knowledge on the Flask framework, in addition to network protocols and hosting. Additionally, Max provided elaborate documentation on the project in the GitHub wiki, ensuring all members of the group are on the same page and providing a starting point for potential developers picking up where we left off.

Romy: Project owner of the group. Responsible for communicating with the client and stakeholders, managing expectations, updating the product backlog and sprint backlogs, and leading the bi-weekly meetings with the client. Additionally, Romy often assisted with tasks in the front-end where necessary, such as making the login/logout page, adding/deleting users and companies, and creating the main layout for the admin dashboard.

Sanne: Scrum master for this project, responsible for adhering to the scrum methodology and maintaining an efficient workflow. Led the scrum meetings, made and maintained the sprint plannings, print reviews and sprint retrospectives. Also contributed to the project directly, by creating the form selection page and the password reset page and e-mail.

All functionalities started as an idea, converted to a product backlog item. This was then decomposed into subtasks that are divided to the group members according to their respective expertises. For each sprint, we made sure each group member had one or multiple tasks assigned to them, spreading the load over all group members equally. For each backlog item, every involved member knew who was responsible for each subtask, allowing for correspondence between them. This ultimately led to a streamlined method of communication. The communication mainly took place during Wednesday mornings, when we all came together to work on the project. When not together, communication took place over WhatsApp or Microsoft Teams.

During the project, we encountered some challenges. The main challenge during the initial phase of the project was that the communication between group members was sub-par. The communication only took place on Wednesdays during our meetings, but outside of those meetings, hardly any correspondence took place. When we noticed our sprint goals were not being met because of this, we collectively agreed to communicate better and this dramatically improved productivity and group morale.

Additionally, we quickly found out we made our backlog items way too big, resulting in them not being finished when the sprint came to an end. However, this was immediately corrected for the second sprint, where we made more realistic backlog items by splitting them up into smaller items.

Another obstacle was that it quickly became apparent how large the product would become. An application with so much functionality and interconnected dependencies was very hard to complete in a relatively short timespan. However, we had good communication with our client and in the end we settled for a compromise where we laid focus on a subset of the desired result, but we could ensure the end result we did provide was satisfactory.

When we look at the project in retrospect, as a group we are very proud of how we developed ourselves during the span of the project. In the beginning, none of us had worked in such an environment. This course provided us with the right structure to be able to work on yourself and learn how to work as a group.


The Technologies