6 Months as an Umbraco Package Developer: What I Learned

Well hello there fellow Umbracian! As some of you might remember, around 6 months ago I decided to venture into the world of Umbraco Package Development by becoming the Lead Developer over at uMarketingSuite. One month into the journey I created a blog detailing what I've learned during my first 30 days as a package developer, and I thought it would be a good idea to continue that trend now that we are 6 months in! What have I been up to, what have I learned, and what will I be busy with the upcoming months? Let's find out! โ˜•

All The Endpoints! ๐Ÿš€

One of the first major features I got to work on, was the addition of various Headless functionalities for uMarketingSuite. Not only did we want to offer our own endpoints for querying things like personalization & A/B testing segments, but also extend on Umbraco's own Content Delivery API by adding support for segmentation! This is where the open-source nature of the CMS truly shines, as developing these features while having the Umbraco CMS source-code available makes it so much reliable to develop something that natively builds on-top of the CMS!

For this I've also had to do quite some research into Swagger, API documentation generation, and into the use of Middleware in .NET in order to intercept and respond to various requests depending on which API endpoint gets called and which parameters are supplied, even with Umbraco's own APIs!

.NET Framework vs .NET Core ๐Ÿ“ฆ

One of the things I've also talked about in my previous "Umbraco Package Developer" update blogs was the use of multi-targeting both .NET Framework & .NET Core. Being able to use the same code-base to target multiple versions of Umbraco can be extremely beneficial, depending on the size of the development team. While it allows you to save time by not having to fully rebuilt everything for each individual version, the difference between Framework & Core does unfortunately mean that you aren't able to make use of all the shiny new features released in the later .NET versions.

In order to follow Umbraco and their release cadence, we have decided to put uMarketingSuite 1.x into the support phase, and introduce uMarketingSuite 2.0! With this I could now fully focus on .NET Core by getting rid of every .NET Framework targeted piece of code, and optimizing existing code & conventions for modern applications. With this, it also becomes a lot easier to implement and extend new features introduced in the later versions of the Umbraco CMS as well, as the only multi-targeting that is now needed is to bridge any potential gaps between Umbraco 10 and 13! You wouldn't believe how satisfying it is to create a Powershell Script to scan for these thousands of lines of multi-targeted pieces of code and remove them! ๐Ÿ—‘๏ธ

Elevating e-Commerce! ๐Ÿ›’

Next up in line is a brand new integration between uMarketingSuite and the Umbraco package formerly known as Vendr... Umbraco Commerce! For those unaware, Umbraco Commerce allows you to easily setup your own e-commerce solutions within Umbraco, with features like product & order management, payment providers and shopping carts. With everything that Commerce has to offer, we started thinking "What could we do to bring the insights of uMarketingSuite into Umbraco Commerce, and vice-versa?!"... so we went to the drawing board and got to work! โœ๏ธ

After doing a deep-dive into what Commerce has to offer, and after talking to various partners that run e-Commerce platforms, one feature that we felt was missing in Umbraco Commerce was the ability to get insights about visitors and their orders, so we extended on that! Where Umbraco Commerce keeps track of the Cart & Orders, uMarketingSuite already has a profile built for its' visitors, so why not combine the two by tracking which visitors placed which orders! By doing so, we've opened up to possibility to do personalization based on things like "Has this visitor put an item in their cart?" and "Has this visitor placed an order in the last X days before?". All of this been made possible thanks to the extensibility of Umbraco Commerce, like the various services & events that you can hook into! After that, we thought it would be convenient to be able to get Commerce insights straight from a visitor's profile... and so we did! Being able to see a quick summary of the various orders a visitor has placed right from their respective Profile Dashboard in uMarketingSuite gives useful insights to Marketeers!

Vite, Lit & Typescript ๐Ÿ”ฅ

With Umbraco 14 approaching at the end of May, we can expect a complete rebuilt of the Umbraco back-office. Goodbye to AngularJS, and Hello to the new tech-stack of Vite, Lit & Typescript! To say this is a major overhaul of what everything package-developer related is putting it lightly, but we ain't shy of a challenge! During the last six months I've been keeping a close eye on the development of Umbraco 14, and been keeping in touch with Umbraco HQ to share ideas and give feedback.

I am still an absolute newbie when it comes to this new tech-stack, but I would like to give a huge shout-out to Kevin Jump's "Early Adopter's Guide to Umbraco 14" series where he goes in-depth into all the various concepts you need to know in order to build and extend upon the new back-office. A must-read if you ask me, that will definitely help me keep up-to-date with all these new shenanigans!

A Glance into the Future ๐Ÿ”ฎ

The last six months have gone by faster than I would have imagined, and I am blessed working at my current position with all the freedom & responsibilities that come along with it. Being able to build commercial solutions for people all across the globe is more rewarding than I expected it to be, and I can't wait to see what the future will have in store for me! It is definitely a journey where I will always have a lot to learn, whether it be through various programming languages or frameworks, learning about performance-optimizations and data handling, keeping up with the new features Umbraco introduce themselves, or even personal growth! There will always be something new to discover, something to optimize, something to extend upon.

Just like the rest of the team, I am always listening to feedback & suggestions, so please reach out if there's something you would like to know more about, like to have clarified, or if you have any ideas you'd like to discuss!

If you've made it all the way to the bottom, I would like to thank you for your interest, and if there is anything I've mentioned that you'd like to learn more about feel free to contact me over at my socials available at the Contact page, of which I may expand on in a future blog! ๐Ÿ˜Š