Blog | Article

Boards on Fire's Journey to Microsoft Azure

A lot has happened in product development on Boards on Fire's journey from idea to its first launch, and onwards towards a world-class system for digital daily management. In this article, our developer Tobias Runesson shares the efforts required to scale up and the team that made it possible!

Boards on Fire takes shape 

In 2018, developers Ola Karlsson and Gabriel Svennerberg, while working on their consultancy assignments, started a project aimed at helping Växjö Municipality's IT department work more efficiently with daily management. The initial idea was simple: digitalize whiteboards and create a product that promotes efficiency, data flow, and engagement. A MVP (Minimum Viable Product) was quickly developed, and in 2019, they took the next step when Beds by Scapa joined to build on the idea. 

Since then, product development has progressed rapidly, and the system has grown to become a leading solution in digital daily management. By the end of 2020, we at Boards on Fire realized the potential was enormous. With several satisfied customers and steadily increasing demand, the decision was clear: it was time to build a world-class system. A system that would be modern, stable, robust, secure, and scalable. This would require a transition from Ruby on Rails to .NET and a move from Heroku to Microsoft Azure. A significant overhaul of the system architecture lay ahead of us, but it was a decision that would lay the foundation for the future of Boards on Fire. 

A growing product with great ambitions 

The new vision brought along several challenges. Transitioning from Ruby, a dynamic language, to the strongly typed world of .NET was a significant change. We not only had to manage older data in new ways but also adapt and optimize how information is stored and updated. What makes Boards on Fire unique is its flexibility, allowing each customer to create their own data models — which imposes high demands on data structures. This required us to rethink and reassess previous solutions to create a system that is both flexible and secure. 

We also knew there was technical debt from the product’s early Proof of Concept (POC) stage, which needed to be addressed to build a sustainable solution. Another critical challenge was migrating all existing customers to the new platform without disrupting their daily usage in any way. 

Additional factors came into play: forming a new development team, establishing new processes, and limited product knowledge among most developers. Only three out of six had experience with Ruby on Rails, leading to a learning curve. And while we worked on the migration, the existing product continued to be used by customers, requiring ongoing changes and support as well. 

A new development process emerges 

We started by building the team — Martin Kassar, Jonas Sjöberg, Tobias Runesson, Ola Karlsson, Gabriel Svennerberg, and Johan Hultgren — and establishing a clear and efficient development process. Since we all had solid experience in development, we understood the importance of quickly setting up automated processes for tasks such as testing and code analysis. At the same time, we familiarized ourselves with the product in detail and began prioritizing the most critical aspects for the migration. 

The work began with the foundational functionality. Even at this stage, many discussions took place about not merely transferring the existing code but challenging old decisions and looking for smarter and more sustainable solutions. With the ambition to build a system for the future, every decision was carefully considered, even if it sometimes meant longer development times. All of this was done with the goal of creating a robust and scalable platform. 

Customer migrations – The most critical part 

As we approached a completed version of the platform in .NET and Microsoft Azure, it was time to develop a separate application to handle customer migrations. The goal was clear: to smoothly and efficiently transfer each customer from the old to the new platform. 

The migration app was designed to migrate one customer at a time. It read data from the existing version (BOF1), transformed it to fit the new data model (BOF2), and then imported all the data. For the customer, this transition was seamless, taking only a few minutes, after which they could easily continue their work on the new, modern platform. 

The migration app followed a few clear steps: 

  1. Validate the customer’s data in BOF1 to ensure it was ready for migration. 
  2. Test-migrate the data to allow for automated and manual testing before a real migration. 
  3. Delete the test migration to ensure no test data remained. 
  4. Migrate the customer for real, where all information is updated, and the customer is redirected to their new instance in BOF2. 

The first migration – A year of hard work 

Just over a year after the work began, we proudly migrated the first customer to our new platform. 

Expectations were high, and the team was eager to see how the system would handle the real-world test. With only a minor bug occurring at the start, the first migration was completed as planned, without any major issues. 

This milestone confirmed that our development strategy was successful, and that the time and care we had invested in system architecture, data models, and processes truly paid off. 

Since then, we have continued to gradually migrate more customers to BOF2, and the response has been very positive. The new platform has been welcomed with open arms, and we've heard from our users that performance, stability, and development of new features have reached new levels. Seeing our customers' smooth transition to the new system and how it has improved their workflow has been a fantastic validation of all our hard work and dedication. 

What has been done? – Technical overview 

Here are some key steps our development team has taken to bring Boards on Fire into the future: 

  • Transition from Ruby on Rails to Microsoft .NET: To build a modern, stable, and high-performance platform, we moved from Ruby on Rails to Microsoft .NET. This transition gave us access to a more robust framework that enables better performance, security, and scalability. The modern architecture of .NET has made it easier to build a sustainable and future-proof system. 
  • Migration from Heroku to Microsoft Azure: To ensure higher stability, security, and scalability, we moved from Heroku to Microsoft Azure. Azure provides a robust infrastructure that allows us to manage a larger number of users and growing data volumes while improving security for our customers. This migration has laid the foundation for securely and effectively scaling the business in line with customer needs. 
  • From Ruby WebSocket Driver to Azure SignalR: To enhance the flow of real-time data and create more responsive dashboards in the application, we switched from the Ruby WebSocket driver to Azure SignalR. This change significantly improved performance, allowing data to be sent and received in real-time with higher stability and speed. The result is a smoother user experience, with immediate dashboard updates and optimized workflows without delay. 
  • New login via Microsoft Azure B2C: We've implemented a new login system through Microsoft Azure B2C to offer a modern and secure authentication process. With Azure B2C, we now have a more reliable solution for managing user logins that supports multiple authentication methods, enhancing both security and user experience. This change makes it easier for customers to log in and manage their accounts while ensuring their data is well protected according to the latest security standards. It also enables seamless Single Sign-On (SSO). 
  • Comprehensive improvements to database structure: We've made major changes to the database structure to enhance performance, scalability, and security. By migrating to Azure Database for PostgreSQL Flexible Server, we've optimized data management and response times, resulting in faster and more efficient workflows for our customers. This solution also allows us to scale the database as needed, ensure continuous availability, and leverage built-in security features that help protect sensitive information. These improvements make the platform more robust and adaptable, ready to handle larger data volumes and users effectively. 
  • Segregation of data: To ensure that information is always secure and goes where it’s supposed to, we’ve introduced an all-new model for segregation of data. With this model, each customer can have their own dedicated database and customized storage space for files – providing maximum privacy and full control over all data. 
  • New permissions system: Our new permissions system offers improved control over access and authorizations. Unlike before, when rights could only be assigned at the individual level, they can now be managed for both groups and individual users. This provides much more flexible and powerful role and access level management, allowing data to be restricted or shared based on specific needs. Customers can configure workflows more efficiently, ensure that the right people have access to the right data, and enhance security in organizational information management. 
  • New external API: We've developed a new external API that enables more powerful integrations and extended functionality. With a simple and well-documented interface, the API facilitates seamless communication between Boards on Fire and customers’ own systems, simplifying automation and customization according to business needs. 
  • All-New file integration: By leveraging some of Microsoft Azure's powerful services, we've developed a completely new solution for importing data from files, making it easier than ever to transfer data from other systems into Boards on Fire. 
  • Switch from Vue States to Pinia: To improve our frontend architecture, we've replaced our state management library in Vue.js from Vue States to Pinia. Pinia offers a more intuitive and flexible way to manage the application's state, with a simpler API and enhanced developer experience. This change has led to faster development, better performance, and a more responsive application. 

The new platform is designed to have a long lifespan, scale up, and handle the increasing number of customers and data. We are proud of the journey we've undertaken and the improvements we've implemented to ensure that Boards on Fire will continue to be a leading product in digital daily management well into the future. 

 

https://www.datocms-assets.com/56488/1661954976-tobias-runesson-22.jpg

Tobias Runesson

Developer

Happens at Boards on Fire

Latest from the blog

Free web demo

We can tell you all about Boards on Fire. But it's easier to show you. Our web demo gives you the basics in 30 min.