Inspiration
Sparc Cooperative is an equally owned worker cooperative that designs and builds open source apps for the common good. Nearly 100% of our applications are built with ASP.NET & Blazor and hosted on Azure, and we've been eagerly following the journey of .NET MAUI as well. Along the way, we've identified many patterns that have made our development journey as efficient as possible. We've decided to put all of these patterns together into a new framework that we call Blossom.
What it does
Blossom is a hand-crafted architectural framework for .NET 7.0 all-in-one API, Web, Mobile, and Desktop development. It is chock full of smart conventions that attempt to eliminate as much of the boilerplate connective tissue as it possibly can.
Blossom's goal is to help you and all your creative programming energy be able to focus on what really matters for your app:
- the singular logic of the back end, and
- the singular presentation of the front end.
Everything else -- everything else -- should be secondary.
How we built it
We started with a few main ideas:
We believe an app is not primarily its UI. Instead, we believe that an app is primarily its logic. And each thing the app does should be a self-contained function, in a single file, so that the developer can focus on that file alone to build that function.
We believe an app should never depend on a database, an authentication flow, a UI (or five), or anything but its own logic and the entities that support that logic. An app should be able to be built in its entirety without choosing any of these secondary things at all until the very end. This mission defines the "back end" of the Blossom architecture, and we call it the Kernel.
We believe an app's user interface should not depend on the platform in which it runs. This idea of a single UI across many platforms is the "holy grail" of front end development. But until .NET MAUI, there was no cohesive multiplatform solution. And there still isn't a single solution, if you include Web in that list, and most folks do. Blossom is our solution to this problem. It builds on top of .NET MAUI to add Web deployment to the same UI project that hosts Android, iOS, Tizen, Windows & Mac Desktop deployments. The Blossom architecture allows the UI to be built once -- with a responsive design -- and yet not sacrifice any of the native functionalities of each individual platform. One project, many platforms. One kernel, many blossoms.
Challenges we ran into
Keeping up with Microsoft: Each new preview release of .NET 7, MAUI, or ASP.NET brought new challenges and breaking changes that moved Blossom in a new direction. However, we are proud to have kept up with Microsoft's dev cadence throughout, and are especially proud to have released Blossom on the exact same day as .NET 7.0 RTM was released.
Finding the single-project .NET MAUI + Web combination: .NET MAUI was a huge leap in multi-platform single-codebase development. However, we knew it had the potential for just one more addition -- a Web deployment hosted within the same project. So we wrapped .NET MAUI in our own library and found the way. This was one of the most challenging technical achievements we've ever done, but we are happy to have done it.
Crafting a generic pattern for Blossom plugins: Our chief goal for all plugins (database, authentication, storage, notifications, etc.) was to allow you to choose a plugin, enable it, and configure it, in a single line of code. We wanted to abstract away the core patterns of app development so that nothing in the app depended on a particular database or third party plugin. Finding this pattern was mind-bendingly difficult, but we believe we have solved it well.
Accomplishments that we're proud of
All of our in-house applications are now #builtwithblossom, including Ibis, a language-agnostic communications app that we also built and submitted to #BuildFor2030. Ibis is the first official app release on Blossom.
Blossom is 100% open source and MIT-licensed, supported by Sparc Cooperative, and primed for community contribution.
Blossom Realtime: Through our work on Ibis, we created a beautiful interconnection between Blazor, our Kernel, & SignalR, resulting in a built-in two-way event handler framework between Blazor UIs and their applications. This framework enables "fully reactive components", UI components that can react in real time to any events that have occurred on the server. We believe this idea alone has the potential to revolutionize the way apps can be built, pulling patterns from game development to make applications come alive. #BuildFor2030
While Blossom was still in development, we successfully used its ideas to release two of the first .NET production MAUI apps in the world <3
What's next for Blossom
We will be developing many additional plugins for alternative databases, authentication flows, notification platforms, storage platforms, testing libraries, and more!
We will continue to hone the Blossom platform to help abstract away as much drivel as we possibly can, so that we may all focus more and more on the beauty of the apps we are building for the common good.
Log in or sign up for Devpost to join the conversation.