The process of building a tool for booking overviews

Boozt Tech
Boozt Tech
Published in
10 min readNov 6, 2023

By: Ehtisham Arshad, Team Hydra Lead/Backend Developer, and Mikkel Sorensen, Web Developer

Boozt Media Partnership

Boozt is a technology company with 200 developers and has developed more than 40 applications that the company is using in order to control the core processes and own and control the data. Recently a new solution has been developed and you can find a detailed breakdown of the process in this blog.

Boozt has recently built a new tool for the Boozt Media Partnership department in order to allow for them to have a better overview of their bookings. In this blog the solution, the choices and the thought-process will be broken down and explained.

What is BMP

Boozt Media Partnership offers advanced advertising solutions and enables brand partners to reach consumers with high-performing and relevant ads near the digital point of sale.

Furthermore, Boozt Media Partnership is a fast-growing and healthy business for Boozt. Our brilliant colleagues are doing a fantastic job selling tailor-made promotional campaigns but with the growing business, the need for digital tooling and integrations arises.

With way over 100 advertisement placements, keeping the overview of what is planned for who can be hard to keep track of, and it is easy to overbook or lose insight. That’s why a tool was made for the Boozt Media Partnership. Here at Boozt we pride ourselves on creating the tools ourselves, with all the good and bad experiences that come along with that.

What were the challenges?

As the team overtook an existing solution that the BMP team was using, with a significant amount of feedback, just ironing out what was needed, in use, or not working correctly was an engineering task in itself. With the previous development team nowhere to be found, the decision to create a new toolset for the BMP team was made based on the current assessment of the system.

The main challenges found in the old system were mainly related to the time it took to load the booking calendar overview. Not to exaggerate but the browser timed out multiple times. Even though it was made using common practices. Your normal React-powered frontend that would communicate with a restful backend.

Our approach

I. Team Work & Business Ambitions

Teamwork is the backbone of any successful project and is the driving force behind achieving ambitious business goals. In our project, we experienced firsthand the remarkable synergy that emerges when individuals with diverse skills, backgrounds, and perspectives work toward a common objective. Each team member brought their unique strengths to the table, creating a dynamic environment where ideas flowed freely, and collaboration thrived. This cohesive spirit not only made our project more efficient but also fostered a sense of unity and shared purpose, which propelled us towards our ambitious business aspirations.

Setting Ambitious Business Goals

Ambition is the catalyst that propels businesses forward, pushing them beyond their comfort zones and toward greater results. While it’s essential to set realistic goals, it’s equally crucial to dream big and aim high.

Our project has not been any different. Considering our legacy system used for campaign management, it needed a big-time change. Only the load time of the planner tool itself was costing the business a big chunk of time, and time is money 😉. Working on the new tool gave us a chance to redraw the canvas and allowed us to refine our business use cases. We aimed at the iterative approach to building the most in-demand and business-critical features first (with a little twist and spice of course 😀).

Achieving Business Ambitions Through Teamwork

In the realm of business, ambition alone is not enough. It’s the alignment of ambition with a cohesive team that paves the way for remarkable achievements. Our project’s success story exemplifies this synergy — as our team worked tirelessly to harness individual talents and channel them toward a shared vision, we made significant strides toward realizing our ambitious business goals. The commitment of each team member, along with their mutual support and willingness to put in extra effort, engage a productive and innovative environment. Ultimately, it was this effective blend of ambition and teamwork that allowed us to translate our aspirations into tangible accomplishments, demonstrating that united efforts can lead to significant advancements in the business arena.

II. Structured planning (Iterative process with regular feedback)

Streamlined Project Planning with JIRA and Biweekly Sprints

In the context of structured planning, our project demonstrated the value of careful organization and consistent communication.

We harnessed the power of JIRA, a versatile project management tool, to orchestrate our project planning seamlessly. Employing a biweekly sprint model, we divided our project into manageable chunks of work, ensuring that tasks were well-defined and attainable within the given time frame. These sprints not only facilitated a focused approach to our goals but also allowed us to maintain a flexible and adaptable workflow, adjusting priorities as needed.

Ongoing Development Discussions and Collaborative Innovation

Beyond the structured sprint planning, our team implemented bi-weekly developer meetings that served as a cornerstone of our project’s success. In these sessions, we delved into various aspects of development, including improvements, refactoring efforts, proofs of concept (POCs), and the integration of new features. This collaborative forum was instrumental in aligning our team’s technical direction, promoting innovation, and ensuring that our project remained on track. It fostered a culture of open communication, enabling developers to share insights, challenges, and ideas, which in turn contributed to our project’s continuous improvement and evolution.

Reflecting on Progress and Paving the Way Forward

In addition to our sprint planning and developer meetings, our structured approach included biweekly retrospective meetings where we took a step back to evaluate our progress. These sessions were invaluable in allowing us to review what we had accomplished, identify areas for improvement, and chart a course for future endeavors. By analyzing our past performance and discussing lessons learned, we not only fine-tuned our project strategies but also nurtured a culture of continuous learning and growth within the team.

This holistic approach to structured planning, encompassing sprint planning, development discussions, and retrospectives, played a pivotal role in driving our project forward, ensuring that we remained agile, adaptive, and aligned with our business ambitions.

III. Boozt core values embedded

At Boozt, our core values, which we affectionately refer to as “Care-Why,” serve as the guiding principles that underpin every facet of our work. These values — Trust, Responsibility, and Freedom — are not just words on a wall; they are a living embodiment of our commitment to excellence. Throughout our recent project, these values shone brightly as we diligently incorporated them into our daily operations.

Trust: Trust is the bedrock of any successful endeavor, and it was no different in our project. We fostered an environment where trust was paramount, allowing team members to rely on one another’s expertise and judgment. This atmosphere of trust enabled us to delegate responsibilities confidently, encourage open and honest communication, and build strong, collaborative relationships.

Responsibility: Responsibility at Boozt goes beyond individual tasks; it extends to the collective ownership of our projects. Throughout our project, team members exhibited a profound sense of responsibility for the outcomes. Each team member understood their role in contributing to the project’s success and took ownership of their actions and decisions. This proactive approach to responsibility ensured that we remained agile in adapting to challenges, addressed issues promptly, and consistently delivered on our commitments.

Freedom: Our commitment to Freedom means providing our team members with the autonomy and flexibility they need to excel. During our project, we embraced this value by empowering team members to explore innovative solutions, take calculated risks, and make decisions that were aligned with our shared objectives. This spirit of freedom not only nurtured creativity but also enabled us to adapt swiftly to changing circumstances and seize new opportunities.

What we did differently

  • How to render all the resources

One of the central challenges we faced in our legacy system revolved around the performance of a critical business use case — specifically, the booking and planning tool. In our previous infrastructure, all components were tightly integrated within a monolithic PHP application, creating a complex and cumbersome environment. Notably, our planner tool, tasked with rendering an extensive calendar spanning over 52 weeks and hosting a wealth of information alongside front-end elements and back-end endpoints, posed a significant bottleneck.

To address this challenge, we embarked on a new approach characterized by a more service-oriented architecture. This strategic shift involved a deliberate decoupling of our front-end (FE) and back-end (BE) services, each entrusted with distinct responsibilities. This architectural transformation introduced a remarkable level of flexibility, providing us with a superior framework for organizing and optimizing our business use cases. To enhance information rendering, we reimagined our planner tool within the new system. Here, we refined the tool’s functionality to focus solely on rendering requested information, with dedicated FE and BE components seamlessly orchestrating the process.

This modular approach not only streamlined our operations but also significantly improved the overall performance and responsiveness of our system.

  • Stateless Backends for scaling

In our pursuit of scalability and efficiency, we adopted a stateless approach for our backend system. A stateless system, in essence, sends a request to the server and returns the response without retaining any in memory statemachines. This design choice played a pivotal role in the success of our project.

As previously highlighted, we embraced a service-based architecture, reimagining our backend (BE) application solely with an API as interface. This API is crafted to function as a data provider, offering information as requested through designated endpoints. These API endpoints were thoughtfully structured to ensure seamless scalability, setting the foundation for our project’s growth and adaptability.

To further enhance the robustness of our stateless backend, we implemented several key strategies:

1. Load Balancing: From the infrastructure perspective, we have it more flexible and balanced in order to accommodate spikes in traffic.

2. Caching: Leveraging caching mechanisms allowed us to store frequently accessed data temporarily, reducing the need for redundant database queries and optimizing response times.

3. Stateless Authentication: We implemented stateless authentication mechanisms, such as JWT (JSON Web Tokens), to maintain security while eliminating the need for server-side session storage.

Incorporating these additional strategies into our backend design fortified our system’s scalability, efficiency, and reliability, ensuring that it could meet the demands of our dynamic project environment.

  • Integration With Finance

In addition to the architectural enhancements mentioned earlier, we recognized the critical need for integrating our project with our finance system. To achieve this, we embarked on the development of a dedicated Finance API client service, thoughtfully incorporated into our backend infrastructure. This service played a pivotal role as the bridge connecting our application with the finance system, enabling secure and efficient data exchange.

Our Finance API client service has been designed to handle the intricacies of financial data communication. It offered a standardized interface through which our backend could interact with the finance system’s APIs, ensuring smooth and reliable transactions. This integration not only enhanced our project’s functionality but also contributed to the overall efficiency of our operations.

With the Finance API client service seamlessly integrated into our BE, we gained the ability to retrieve financial information, process transactions, and maintain real-time synchronization with our finance system. This development empowered us to automate financial workflows, reduce manual data entry, and enhance the accuracy of financial reporting. By successfully bridging the gap between our project and the finance system, we achieved a comprehensive and efficient solution that streamlined our financial operations, ultimately driving the success of our project.

  • Observability is key

In the dynamic landscape of modern software development and project management, observability has emerged as an essential pillar for ensuring the reliability and performance of our systems. It encompasses the ability to gain insights into every facet of our application, from its performance and behavior to its interactions with external systems.

One of the key tools in our observability arsenal is Datadog, a robust monitoring and analytics platform that provides real-time visibility into the health and performance of our systems. Datadog enables us to track crucial metrics, monitor the status of our services, and generate alerts when anomalies or issues arise. These insights are invaluable, allowing us to swiftly respond to incidents, troubleshoot bottlenecks, and optimize resource utilization. Datadog serves as our vigilant watchdog, ensuring that we always have an eye of systems.

Additionally, we leverage the power of Slack alerts to engage a culture of proactive communication. These alerts serve as real-time notifications that keep our team informed about critical events and performance deviations. Whether it’s a sudden spike in traffic, a service degradation, or an infrastructure issue, Slack alerts enable us to react swiftly and collaboratively, minimizing downtime and mitigating potential disruptions. By integrating Slack alerts and Datadog, we create a cohesive observability ecosystem that empowers our team to stay ahead of the curve, providing us with the insights needed to maintain the high standards of reliability, performance, and scalability that define our project’s success.

Future of ADvance

  • On the road to GraphQL

We are currently working with RESTFUL architecture and we intend to bring more flexibility in our presentational logic. GraphQL is definitely something that we will be looking forward to incorporating in our application. It is worth mentioning that we have a lot of distributed systems and this can create a pathway to have better communication between different systems to make it more efficient with the payloads and representation of the data.

  • Leaving safe haven

Considering our current infrastructure, we have some limitations on different fronts like performance, flexibility and adaptation to different frameworks. We visualize the idea of migrating to a more performant backend. We are still in the process of assessing our options and we consider Golang as one of many.

Conclusion

It has been more than three months since ADvance has been fully functional, and we have received some feedback recently which states that it enables almost 4x times faster booking than our legacy system, and has quickly become a trusted tool. This overall gives the impression that the project has been a success.

--

--