7 March Save Hundreds of Hours Building DNN Modules and Other Types of Extensions March 7, 2019By Will Strohl | 3 MIN READ 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? Packaging 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. 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. Let's Chat! We'd love to work with you. Let's talk about how. Contact Us March 7, 2019By Will Strohl Technology, Website Development, DNN, DNN Summit, DNNCMS, Open Source About the Author Will Strohl Founder & 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. Please enable JavaScript to view the comments powered by Disqus. blog comments powered by Disqus Related Posts Upendo Ventures Expands Its Portfolio with Glanton Modules Intellectual Property The Grass Is Never Greener On The Other Side We all have that “thing” that everyone around you knows you for. For whatever reason, I’ve been the person my entire life that everyone I know goes to for advice. It’s always flattering to be trusted in that way, but it also means that I continue to do my best to keep myself fed with information. Probably the most common piece of advice I get asked is, “I have this great job offer. Do you think I should take it?” That’s never an easy question to answer, but here’s what I tell my friends… A Year of Momentum, Trust, and Building What Actually Matters As we look back on the past calendar year, one thing stands out more than anything else: this has been a year of trust. 5 Tips for Upgrading DNN Websites Depending on who you ask, you’ll be the recipient of a very passionate response when you ask any DNN’er their opinion about DNN upgrades. In general, upgrading DNN is very similar to any other ASP.NET application. Yet, when things go wrong, people tend to blame the application itself. Don’t get me wrong, the respective application can and sometimes does have something to do with an issue that may occur, but in my experience, that’s the exception and not the rule. Here are some tips to help you have a less "exciting" time the next time you have to upgrade DNN. CMS State of the Union: Data-Based Insights From the Past Two Years If you didn’t already know, CMS is an acronym for “content management system.” A CMS is used by many developers, consultancies, and companies to build their website. It’s an incredibly common thing to do, as any flavor of CMS you choose will always save you effort and money, compared to building a website from nothing. This is especially true if you look at the lifetime investment of your website. Using a CMS framework or solution of some kind just seems to make sense. After all, this is what I’ve built my own career upon since 2001. However, then, CMS was known as a portal or portal framework. That’s a long time ago, so it’s not a bad idea to take stock of things every now and thing to see if what you’re doing is the correct thing. To this end, I asked myself, “How is CMS doing right now, and does it make sense to still be doing CMS-related work in the future?” Avoid the 7 Deadly Sins of LinkedIn Photos In many ways, LinkedIn is just like every other social network. It allows you to create a profile. You add details about yourself, upload your preferred photo, and connect with other people. You post status updates, and like and/or comment on updates by others. However, as we continuously point out on this site, LinkedIn is not like every other social network. You need to carefully consider how you update your profile on LinkedIn, beginning with your profile photo.