|Backend||Java, Spring MVC, Spring Boot, Spring Security, JPA/Hibernate; PostgreSQL, MySQL; Docker, Git, OAuth2|
|Frontend||Vanilla JS, HTML 5, CSS 3, Angular, React, Nginx, Docker|
- Event Sourcing
SPD Group is a custom software development company that was founded in 2006. Eight years later the number of employees increased from 7 to 90, making it hard to control the performance and monitor the statuses and progress of each individual. The first attempt to create an automated solution that replaced spreadsheets happened in 2014. The basic software called TimeTracker 1.0 was created from scratch but covered only the essential functions including the user profile, project profile, and the time tracking function. However, in 2018 the number of SPD Group’s employees exceeded 300 experts, with some of them working on multiple projects with different budgets at the same time. It became apparent that a more powerful solution was required. SPD Labs, an internal development team, took over the project to redesign the TimeTracker, add more features, bring maximum transparency for the organization, and make the tool scalable for future growth by implementing the microservice architecture.
The main reason for a new version of the TimeTracker was the request from the Finance department. The initial version allowed users to edit the information they put in forms earlier and the system didn’t save data on these changes. Any user could edit its data anytime making it impossible to figure out what exactly happened in case financial statements do not converge. As a result, the same reports generated on different days could differ in numbers, and we couldn’t find out exactly why.
Additionally, with this update, it was decided to enable the solution to provide detailed statistics on each user, have a calendar for the entire company for tracking and requesting day statuses, send personal notifications via email, and generate reports.
This above-mentioned functionality would allow SPD Group to become a more people-oriented company, enabling the Finance department to correctly calculate salaries and enabling HR experts to predict burnout of employees based on reported overtime. From a client’s perspective, TimeTracker 2.0 would provide the most transparent monitoring of each expert working remotely via outsourcing or outstaffing models of cooperation, improving the reputation of SPD Group as a trusted software development partner.
- Seamless transition from version 1.0. It was planned to perform the transition gradually, in three stages: synchronization of both versions, parallel functioning, and complete switch to the new version.
- Transitioning the solution from monolith to microservice architecture to enable scaling and addition of the new, more sophisticated functions to the system compared to the relatively simple features that already existed.
- Storing large amounts of historical data to meet the initial requirement from the Finance department for creating a system that prevents any unnoticed changes in the system by the users.
- Integrating TimeTracker with G-Suite and introducing two-factor authentication to improve security, as a requirement from the IT department.
We have started with the most important goal of this project. To deal with the main business problem of registering all changes in the TimeTracker, it was decided to store all financial-related information as events leveraging Event Sourcing methodology. Now every action of the user is recorded as a separate event with a date, including changes in the time field of the task, editing of the description field, or adding and deleting entire tasks. All of this information is stored in the historical database, and our team is able to restore the state of the system at any specific moment.
Both the financial-related events and personal settings of the accounts are stored in a relational database. The 1.0 version of the TimeTracker is entirely in the cloud and using Amazon Web Services, but the 2.0 version is stored on our servers, as per the requirement of the IT department. Both options work equally well for the solution because we use Docker to pack programs and projects into the containers that could be deployed anywhere. At the moment we have nearly 2 million events in the database and the system does not experience any problems in performance or security aspects. To improve the speed of the solution for the users, we developed an in-memory database. It works like a RAM for the application, continuously downloading all necessary information and events from the big database when the user starts the app.
“Our team managed to build a custom open API for SPD Group’s needs, and we already have multiple projects leveraging it, like API TimeTracker.”
Dmitry Shevchenko, Tech Lead at SPD Group
The next step was adding a reporting system based on this accurate historical data, as a first separate microservice in this ecosystem. The reporting microservice can extract and process the information with the events thanks to CQRS.
The second added microservice named “Track Time” is able to save and store to the database all the information as events properly from both versions of the system, had a new user interface, and finally bridged the gap between versions 1.0 and 2.0.
“The TimeTracker project is still in an active phase of development. Currently, we are finishing the synchronization with the G-Suite. All information about the events of the users will be instantly updated in G-Suite automatically, eliminating any manual work and any chance of human error. Synchronization with Jira is also going to be possible soon, meaning that the user will be able to track the activities using the Jira interface. One of the most exciting plans we have for the future is to introduce the hierarchy inside the TimeTracker, so users would be aware of the position and the scope of job responsibilities of each employee in the organization. TimeTracker already has all the positions mentioned in the profiles, but with hierarchy, it will be much easier and convenient for the users to find the right people fast.”
Dmitry Shevchenko, Tech Lead at SPD Group
At the very beginning of the development process, we used the Akka toolkit. Luckily, our team quickly realized that it is not the best option. Switching to Spring was the right decision, this framework was suited perfectly for achieving our business goals and dealing with technical challenges.
“Among the other technical highlights, TimeTracker 1.0 used Cloudinary for 4 years to store photos of employees. As the number of employees increased, SPD Group decided to use cloud storage for this purpose. Cloudinary has the function of detecting the face on the photo and then the service centers the picture according to it. We collaborated with our Machine Learning team to build our own service for this function.”
Dmitry Shevchenko, Tech Lead at SPD Group
While TimeTracker 2.0 is still in active development, the main business goal was achieved. This tool combined with Portfolio already helps the Finance department of SPD Group to precisely calculate the salary for the employees working on different projects with separate budgets. Speaking of IT-specific value, TimeTracker allows our Project Managers to compare estimated timelines with the actual performance of teams to create even better and more detailed plans. TimeTracker is especially effective for remote work, which became a standard for the companies in 2020 after the start of the Covid-19 pandemic. This solution helped our company to adjust to the remote workflow faster than we had expected. As of 2021, TimeTracker is used in all internal processes of SPD Group, serving the company with 400+ employees and nearly 20 projects.
Here is how the interface of TimeTracker looks:
“TimeTracker is a proven success for SPD Group. I am a big believer that this product can be easily adapted by any organization with similar processes and bring instant value to the HR and Finance departments. The microservice approach allows scalability and seamless data migration in case you decide to integrate certain modules of TimeTracker into your existing system.“
Anna Duma, Team Lead
ARE YOU INTERESTED IN DEVELOPING AN HR TECH SOLUTION?
Contact our experts to get a free consultation and time&budget estimate for your project.Contact Us