Our author community is built upon some of the latest technologies that have been released by Microsoft and leveraging the performance and scalability that Microsoft Azure infrastructure provides. We have the ability to easily grow with demand as the number of authors, readers, books, and of course book fairs increase in our system over time. We know that with Azure we can have confidence that we can and will meet the needs of our users. Part of making sure we could meet those needs with a modern technology involved using Blazor server as our user interface. We want to tell you more about that decision but first lets provide some background on the platform.
Our platform exists because our founder, Kenney Myers wrote his first novel and decided to self-publish. Like with most authors, the day his book was published was HUGE! Then the very next day the reality set in that he needed to market his book if he ever expected readers to find it in the vast sea of content that is out there for them. After trying virtually every marketing method he could find from Bookbub and FaceBook ads to eblasts to readers, one thing became abundantly clear to Myers. There was a problem with most of these marketing strategies. In general, he spent far more money than he could ever possibly make from book sales on these techniques. In fact, the only thing that did seem to work well for him was sharing about his book on social media where friends and family supported him by buying and reading it. The problem is, that's limited in reach. So Kenney thought more about how authors could join together to share each other's books in a way that would be fun enough to encourage readers. That's when the concept of a classic book fair emerged as the answer. Who doesn't remember the excitement of a school book fair when they were growing up? Myers realized that If we could let authors create theme or genre-based book fairs and then have every author in the book fair spread the word on their social media accounts and their personal email lists, we could introduce our collective fans, friends, and family to each other. It was a simple concept that was meant to be fun and effective at the same time. Myers then decided it would be super affordable so only a couple of book sales could pay for the membership every month and that's when the real work began on the platform.
While you know we opted for Blazor Server (from the title) it may not be so clear to understand why that was our choice. First of all, our knowledge of C# was deep, as was our love for the MVC pattern (which is extremely mature and stable). So, basing the application around that was natural - as was implementing it on .NET 5 to keep it updated to the latest released version of the framework. While controllers and views are great for controlling things like access rights, roles, and permissions we also wanted to have the ability to easily introduce dynamic content without making AJAX calls, so we turned to Blazor Server which lets us do exactly that. Without breaking the server-side architecture of MVC, we are able to really have the best of both worlds by implementing a hybrid MVC/Blazor Server solution. We have dynamic content along with the security and infrastructure advantages of a server-side application. This architecture gave us speed and with a very fresh desire to market his book, Myers wanted to implement a solution fast, in fact, as quickly as humanly possible. This is another area where MVC+Blazor Server excels. Between the ease with which you can develop CRUD controllers with MVC and the speed with which you can inject services into Blazor Server components, we were able to get the site live in under two months with all of the MVP features in place. That is a blistering fast pace for a team of two developers to accomplish in their spare time (which is exactly what we were able to do). This should be a very compelling reason for others to architect their solution to include Blazor Server. The speed to market coupled with the scalability of the solution would be very hard to beat with any other tech stack (at least with the same number of resrouces and hours).
Like every technology project, we had some issues that quickly surfaced as we went live with our beta. Here is a partial list of those key challenges and what we did to address them.
Our feeling is that because the experience is slightly different than a user expects, it's good to show the message to the user to let them know they need to reload the page to reconnect to the server. This happens most frequently on mobile browsers but certainly can happen for desktop users too. If you decide to not let them know then the application could get into a completely hung/broken state (our first instinct was to over-ride and hide this warning message and that was simply wrong). That's why we now let the users see this message. It's also very possible to change this out and have it look however you want, but we would recommend notifying the users somehow that their connection with the server has been terminated. It will take an action from them to reconnect to move forward in any way and as of now that is unavoidable because only the client can initiate that communication.
We went live at warp speed and were able to start helping authors spread the word about their books in a new and fun way! It's been great to get to know so many wonderful authors (several hundreds of them)! We are seeing really great growth rates and daily sign ups for both authors and readers and are on our way to building a really useful tool for authors and readers. The other great thing is we are ready to scale on demand utilizing Azure and can even apply updates utilizing deployment slots as mentioned to never have the site go down. It's a rich user experience with tons of bells and whistles along with bolt on tools like our book cover analyzer/checker and our barcode maker all built heavily leveraging Blazor Server. We love this architecture and highly recommend Blazor Server to any startup that wants to hit the ground running in record time!