Articles by Upendo Ventures

We "Upendo" to Write for You!

Our team loves to share our thoughts, research, experiences here in our blog. Please enjoy our articles and leave a comment to let us know what you think.

Save Hundreds of Hours Building DNN Modules and Other Types of Extensions

Upendo Ventures Presents:  generator-upendodnn

Over the years, I’ve followed, learned, and tried many different ways to build extensions in DNN.  Of course, the primary extension I’ve built has always been a module.  If you’re new to DNN, a module is simply an app that you can install for visitors to interact with on your website.  After working on DNN solutions since 2003, I’ve settled on a very specific development pattern that we implemented here at Upendo Ventures.  Using our development pattern was time-consuming to get started with a new project, but it had too many benefits to avoid.  We’ve found and publicly released this development pattern to all of you.  Now you can use our development pattern too, but without any of the effort that we used to put into it!

Use Templates Dummy

Some of you may already be rolling your eyes, thinking, “Oh man.  Just use a template of some kind already!”  Many people have released free or open source development templates over the years.  Some of them have been okay and they’ve all have very different approaches.  From webforms to MVC, MVP, and SPA…  But they all only solved part a single challenge. 

The biggest issue I had with all of them, is that you were only able to get started quickly with that one module.  What’s worse, you usually were expected to build that module in the DesktopModules folder.  (This blog isn’t going to go over the numerous downsides of that, but know this… DON’T DO THAT.  NEVER EVER.) 

The biggest challenges were longer term... 

  • What about source control? 
  • Do you have to always check-in your DNN website now? 
  • What about multiple team members? 
  • How do you safely make multiple modules talk to and be aware of each other? 
  • How do you consistently & safely connect the modules to other libraries? 
  • What if they needed to all use a common library? 

There are many more questions when a team environment, multiple deployment environments, and additional dependencies begin to get involved. 

Needless to say, until recently, I have not found a template that I liked from either an architectural or implementation perspective.  That is, until Matt Rutledge built generator-dnn.  I fell in love with his template the very first moment that I used it.  There was only one downside… It didn’t follow the development patterns our team use.  Despite that, the template itself was comprehensive, clean, generated super-fast, and adding new templates to it is pretty simple. 

Introducing Yeoman Generator:  upendodnn

Well, if we were going to use this, we had to do something that’s common in open source… We forked generator-dnn into what we’re calling generator-upendodnn

At first glance, you may not notice something very important about the naming convention.  Sure, our name is in there, and that’s just good branding.  But what you may not know is that upendo literally translates to love in Swahili.  So, it’s technically, “love DNN!”  Pretty cool, huh? 

upendodnn: DNN Development Templates

The original generator-dnn includes templates for the persona bar extensions, as well as MVC and  SPA modules.  We took that and added a few of our own, including templates for:

  • Webforms modules
  • MVC modules (using a different development pattern... Thanks, Chris Hammond)
  • Skin Objects
  • Libraries (DLL's)
  • Scheduled Jobs
  • Hotcakes Commerce extensions

We have several more features pending to add as well, including URL providers, selective scaffolding, and more.  You can visit the project’s to review the upcoming features.

First Step

The best new feature we added was the Solution Structure.  You’re meant to choose this option first.  Once you do, then you can create as many of the other extensions as you want, and they’ll all be in a single solution file, building outside of the website.  Did I mention it also includes automatic packaging for installation/upgrades as well as symbol packages for debugging? 


This development approach allows you to build and package everything from one place, all at once, without having to check-in or worry about which version of the DNN website you’re in or building against.  Mind-blowing, I know!

upendodnn: Demo

Enough of my rambling...  You can see it in action in the video below.  Enjoy!

This video is 25 minutes to change the rest of your DNN development life.  I guarantee you’ll save hundreds of hours in development, debugging, and deployment time – if not, more.

Will Strohl CEO & Founder, Upendo Ventures

Do You Have Any Feedback?

Please let us know what you think in the comments below.  You can also help us by adding issues and comments in GitHub

Oh, and if you like this even a little bit, don’t thank us.  Thank Matt Rutledge.  He did all of the heavy lifting.  We just added stuff. 

Contact Us
Let's Chat!

We'd love to work with you. Let's talk about how.

Contact Us

About the Author

Will StrohlFounder & CEO
Upendo Ventures
Overall, Will has nearly 20 years of experience helping website owners become more successful in all areas, including mentoring, website development, marketing, strategy, e-commerce, and more.

blog comments powered by Disqus

Stay Informed

  • Join our newsletter. Don't worry. We don't share, sell, or spam.

About Our Company

We use technology to help your business change people's lives! Our business is dedicated to implementing best practices, automations, and integrations to help your business grow and generate more leads online. Our battle-tested techniques help give you time back so you can worry about your business, and not the technology that runs it.

The Upendo team is proud to be a DNN partner, DNN consultant, DNN expert, DNN developer, offer the best DNN support - as well as the people behind the best DNN shopping cart e-commerce solution, Hotcakes Commerce.