On .NET Live - Making e-commerce modern and performant with nopCommerce and .NET
>> Good morning. Good afternoon, wherever my.NET friends are throughout the world. You know what time it is.
It's another episode of the On.NET Live Show where our mission is to empower you, the.NET community to achieve more. I'm your familiar host, Scott Addie. Joining me today are a couple of new faces.
We have co-host Mehul Harry and Katie Savage. Mehul and Katie, I'll toss it over to you to briefly introduce yourselves to the audience. >> Absolutely. Thank you, Scott. I'm Mehul Harry. I am the.NET PMM,
and I'm excited today to speak with our guest. Katie, hi. I interrupt you. >> Yeah. Hi, everybody. It's great to be here. I'm Katie Savage.
I'm a PM on the.NET community team. I'm super excited to be here with our guests today. >> On that note, Katie, so we have a very special guest for today's show. I'd like to hand it over to you at this point to introduce Rich and to drive the conversation forward. >> That sounds great. Super excited
to have Rich Read here with us today. He is the Director of Platform Development for Spinutech and also a big user of nopCommerce and a bit of a NOP expert. He's going to be talking us through nopCommerce, how they're using.NET and even more. Rich. >> Thanks for having me. As Katie mentioned,
I'm the Director of Platform Development. I lead our.NET Development team at Spinutech. I'm excited to be here to talk to you guys about nopCommerce, especially some of the benefits that the platform has been receiving from running on.NET 7, current version of.NET.
We're going to take a look at some real-world implementations of nopCommerce. You can see what it does and what people do with it. Then we're going to go through a plug-in example where we're actually going to replace some of the Core-NOP functionality in a way that is upgradable and maintainable and doesn't actually change the Core-NOP source. That's basically, how NOP development works on this platform.
Then we'll tell everyone how you can get started with a platform. >> That sounds great to me. I think a good place to start would be what is nopCommerce and how did you come to find it? >> Sure. If we can bring up the slide deck. NopCommerce, I mentioned it's an open-source platform. It runs on.NET. It's been running on.NET.
I guess it was launched back in 2008. It was actually launched on web forms, believe it or not, and asp.net. 2.0 I believe it was,
but here we are today.NET-7 C Sharp Razor MVC. But its claim to fame really is that it is eCommerce framework. It's not a shrink-wrapped eCommerce solution where you just stand it up and create your store and that's it. It's really designed to be customized.
They've built it in a way that you can extend the eCommerce functionality in a lot of different ways by creating plug-ins, by creating overrides, and we'll go through and show how you accomplish some of that stuff in the code a little bit later on. The great thing about NOP is, it adapts to your business. For the people that are looking for eCommerce platform for their online business, it doesn't box you in to a certain set of features that you might see on other platforms. If you need to do custom integrations with CRM or ERP, this is a great place to do it. If you have custom product models that you want to use, another great place. If you have a custom UI, a custom theme that you want to do, want a certain look and feel for your site.
This is a great platform to do it. Another notable thing for NOP is that it's testable and upgradable. They do a major release once a year.
If you architect your solution using best practices, you can follow those upgrades and you can keep up to date on the latest.NET version. That upgrade path is really important because when you build a website, you generally don't launch it and then walk away from it. The site grows with your business, the technology grows, security updates, things like that. Go ahead.
>> Yes, let's first start with the open source right there. Open source meaning that this is not a paid product. >> Yeah. This is you download the code from GitHub and it is free. It is truly open source.
They asked that you keep the nopCommerce name displayed on the product, but other than that, there's basically no charge, no licensing for the core product or for upgrades. >> That's fantastic. Folks can contribute to it as well.
If the improving on the product, I'm sure you get a lot of pull requests. >> Yeah, absolutely. I mean, check out their GitHub. It's pretty active. People submit requests,
people provide code updates and it's all managed by the nopCommerce team. >> It's a really active Get-Project. >> I know we're going to dive into some code and excited to see all that extensibility and testability but I want to ask you, what is the differentiation if I'm a HP.NET developer today and you said this is not for something just pulling off the shelf, like I connect to strike or something like that, what's the difference? What's my scenario where I say I need nopCommerce? >> Sure, I got a slide for that.
Some of it depends on who the decision maker is. What's interesting is for a lot of website projects, we have marketing teams that come to us and say, hey, we need a website. But for e-commerce, we generally have CIOs or CTOs come to us. The technology has already been defined and the people that come to us for these types of sites are already on the Microsoft Tech stack.
They've already bought into the Microsoft platform. They want to stay on that platform. A NOP is one of the leading e-commerce solutions on that platform.
You look around at some of the other top five, and their PHP, some of them are locked into hosted solutions. Your customization is a little bit limited. But first and foremost, if you want to be on the Microsoft Text stack, this is a great product for you if you have in-house.NET developers. A lot of people have their in-house dev teams that are managing their CRM or their ERP. They have a dynamic solution in place. They have that skill set already in-house.
Again, great solution for that, custom integrations. If you need to do custom integrations, the reason that it's important to indicate custom is that you don't have to modify your ERP to fit some e-commerce plug-in that you're trying to integrate with as you do with other sites. With this one, you can custom build that integration and you can tweak it however you want and make it work exactly the way you need if you do.
It's a one-way integration or two-way integrations. You have the ultimate flexibility there. Some companies need full source for regulatory purposes.
They get audited, they have investors, they need that exposure and they need to be able to show, here's the full source code for auditing purposes. It's great for that. You're not going to get that type of exposure with other platforms. Custom check-out workflows and custom product content. Whether you're doing B2B or B2C, this is a great platform for it supports both small business and enterprise.
Really, even if you're not building a e-commerce site for your business ,.NET developers that want to get better at their C# skills in leveraging the latest technologies, they want to work with the latest.NET platform. This is an awesome project to just download and work with and build your own plug-in. This is the type of platform that will make you a better developer. I've seen it happen for myself and for people on my team. It's an incredible educational tool.
I've told multiple people that they should teach a college course on this. There should be a semester. You could fill out a semester just leveling up people's. NET development skills on this, on this project.
>> I love that. Honestly, folks are always asking how do I get involved with open source and how do I improve.NET skills. This is the perfect combo. I love that. I think the extensibility, I keep hearing that theme quite a bit here, is that normally when you work with a platform, you want to go beyond. Maybe you want to have custom in-house rules perhaps, or how you process certain payments with certain states. Just as a quick aside, what's the oddest extensibility point you've seen developed for nopCommerce? >> The honest one. Wow. Let's see.
>> If I make a custom bank that maybe funnels a penny off to my personal account. Is that possible, Rich? >> Well, you got to access the source code. Anything's possible. >> Of course not. >> I don't know that there's any really out-of-the-ordinary ones. I'll show you guys some examples of some.
You can tell me whether you think they're out of the ordinary, but I think most of the requests that people have are pretty legit, and 99.9 percent of the time they're within the capabilities of this framework. >> I mean, you support all the popular frameworks like the out-of-the-box ones that so if I've chosen an existing platform that I can get up and running.
>> Let me rephrase that. Is there existing extensions now that I can pull up? >> Absolutely. Some of the out-of-the-box integrations that you get just by installing the project. They've got UPS shipping integration out of the box. Mailchimp Brevo is another mail management service and payment providers.
PayPal Cyber Source, Avalara is a tax provider. I don't know if everyone knows who Avalara is, but they're probably the Number 1 tax provider. They will do the tax calculation for you.
You know how there's different tax rates and not just by state, by county, by city, local tax, that integration handles all of that for you. Facebook and Google integration. What three words is an address? Verification tool that helps you standardize your addresses. These are just what you get out of the box. This is what the NOP team bundles with the solution. There is an entire marketplace of third-party plugins that you can purchase and they're relatively inexpensive.
We're talking anywhere 100$-$200 maybe for some real robust functionality. >> That's fantastic. Especially, I have some experience with trying to do taxes with different states.
That can be a headache and so I love that you've already factored in a lot of that logic and functionality out of the box. >> It takes a lot of the pain out of assembling an e-commerce solution. I want to jump back here real quick just for some stats. As far as what's out in the wild here, 60,000 live stores.
They've recorded 30 million downloads. Two hundred and fifty community members. They have a really active community forum and then 150 technology partners like ourselves. >> Wow, that's incredible. >> Yeah, Rich. But it's such a big community. I'm wondering if I wanted to check out NOP for the first time, what resources do y'all have for folks leveling up on NOP? >> Actually has an online training program where if you're starting out with not commerce.
Now, I think the prerequisite is that you know something about C# and.NET development. They're not going to necessarily teach you that, but they will teach you how to extend their platform and take advantage of theming and all of that. It's something like over 100 training videos where they walk you through all the different aspects of no commerce development and ultimately lead you to a developer certification that they have on their site.
>> Do you have docs available as well? >> Absolutely online documentation for both developers and designers. Big part of your e-commerce, not just development, but you want to theme in the site. You want to skin it. You want to brand it for your company's brand. There's a whole set of designer documentation on the proper way to create a theme for nopCommerce. When we get into the examples you're going to see probably no two nopCommerce sites look the same.
>> Quick question. Where does the name come from? >> The name? I don't know. I think ABC Commerce was already taken when they were picking it around. >> So it's not new original priceless? >> No. The legend is that it's just three letters from the alphabet. >> Interesting. I would not have guessed that.
>> If anyone has sit around and tried to come up with a name for a product or a company, it can be pretty nerve racking and they may have just led it down to three letters in the alphabet and it was a done deal. That is the legend. >> Fair enough. Let's do this. Let's pull up some sites and see what some nopCommerce sites look like. >> Please.
>> Let's see what a nopCommerce site looks like out of the box. This is when you install it. The installation is pretty painless. You point it to a database. It creates your starter database and loads some media assets in there so you can get in and start looking around. This is the home page.
They've got some sample product categories. You've got some featured products. You can create news and blogs, poles. Anything you need in here.
You drill down into maybe a product category, even product details. We'll look at this, build your own computer. This is your product detail page. You got your multiple images.
But if you just look down the side, you've got star ratings that are available to you. You can add reviews. You've got stock quantity. If you have stock quantity information, they've got that hooked up. Shipping options, if you have a product like in this case is free shipping, you can set that up.
Then you've got product attributes. If you have a product where there are multiple selections, you can go through and this is an ancient computer, but you can select your options and then basically add it to your car. >> That's impressive.
>> The shopping card is pretty much what you would expect. Again, this is core functionality, but even once you get in here, discount codes are available to you. It's got a great discount code engine where you can define discount code rules. Gift cards are supported.
I mentioned earlier the UPS integration. I've got this site hooked up to a UPS account. You can instantly see now these are all zero because I chose a product that was free shipping. But you see the estimated delivery dates. It gets that from over the UPSAPI. Those are available even before you start the checkout process.
>> Gift wrapping. Love to see that. >> Wrapping. There you go. It's gift wrapping. >> Rich, I do have a question for you.
As I'm looking at this, I'm trying to get a sense of what's included in the box. Now, let's say I'm a Canadian customer. I come here and I see US dollars, is there a way in the offering to convert from one currency to another, say from USD to Canadian dollars? >> Sure. NopCommerce is multilingual,
multicurrency out of the box. I'm going to bring over one of our first site examples. This is Volvo. I'm going to drill down to a product. The site is running nopCommerce. When we drill down to a product page, you see that we've got a few different languages that we can switch around to on here, but we can also change the currencies.
This is all functionality that's out of the box for any product that you set up in nop you have the ability to do these currency conversions. The content supports multilingual. When you go in and edit content, it's not going to do the translation for you, but it provides you ways to enter your French content, your German content, your Spanish content, and it's all managed within the same product. It makes it easy, if you want to pass that off to translators to do the translation for you. But the core of it really from day 1 has been set up to be multilingual multicurrency. >> That's fantastic. You mentioned that you
being a global product that's been around since 2008, you likely have customers around the world. >> Absolutely. >> On nopCommerce website, there are showcases of a lot of international sites with a lot of different languages. They have lots of great references.
>> Can you go back to the home page real quick on the other one? The first example you showed on the homepage there, out of the box, so we've got authentication there. We've got a set of users and then I assume that you got obviously maybe a table for products. How does that typically work? Like do you have a set amount of data, already structured and then folks can bring in their local data and you find is like a generally like a manual process. Is there any tools that exist now to map the two? >> Sure. When we're setting up a nopCommerce site, one of the first question is most people generally have an existing site and they need to get the data in. There's lots of ways to do that.
There's a web API that you can actually post all of your data to if you want to do that. There are import processes. Let's just jump into the product admin here. They have a spreadsheet format. You can import your products from a spreadsheet.
You could do a direct database integration if you wanted to. Then for even just like a starter site. If you just have a few products and maybe you don't need to do a massive import. I'll show you how easy it is to just create a new product if you're starting from scratch. Why don't we create On. Net Classic Tee.
You've got a short description that will show up in your search results and then you've got a formatted rich text editor. If you want to do like a more like an HTML description where you can set headings and styles, you can have all your brand font set up in here. Let's see, since this is we're creating a Tee share, we're going to put this in a clothing category. You sign your product to a category. Let's go ahead and save this for starters, and that will allow us to upload some photos. They make it really simple to upload photos.
I'm going to just drag a bunch of photos in here, and here we go. We've got all of our product photos set up. Let's see. How much should we charge for our t-shirt? >> $1 billion. >> How about $10. >> All right.
>> Let's go ahead and save this. Let's go see what this looks like on the front end. We've got a live product now in our clothing category is where we added it.
Here is our On. Net Classic Tee. >> Wow.
>> You can see the different colors. Now what we need to add are some sizes and some color selections. Let's just jump back here real quick. We're going to go to Product Attributes, and we're going to add a color attribute, which is going to be a drop down list. Let's just save that one, and then we're going to add a, let's see, we've got a size attribute.
These attributes are things that you set up. Some of these are out of the box, but there are things that you can create new types of attributes. Let's save this one. Now we've got some colors and some sizes, and I believe we've got some pre selected colors.
Let's see how we're doing here on the front end. We've got different colors, we've got different sizes that we can choose from. It wouldn't it be nice if the image changed as we selected the colors.
That's actually really easy to do. If we go back in and here's our colors of our shirts, we can go in and say, this blue shirt is associated with this image. We can say, let's hook up our green one. Let's hook up our pink one.
>> I love how straightforward it is. >> Let's see, this is our gray shirt. Last one is our white shirt.
You notice in here with each of these color combinations, if there was a price differential, let's say the white shirt was an additional $2 charge. You could add that in here and that would carry through for the rest of the site. We've got these guys all hooked up. If we go back and refresh our product page here, there we go. That's kind of the experience that you would expect to see in a e-commerce store. >> That's awesome.
I love that you've got that built in and if someone is, let's say, working on in a certain department, they can also take that on just through the interface. That's also really cool without having to baby build it out through the back end. On the admin screen, it looks like you've got like reports, you've got all amazing things built in. I want to make sure, can we talk a little bit about the architecture? How is nopCommerce built? >> You want to open up the hood? >> Let's see what's in the hood, under the hood.
>> Let's do that. I've got a slide that I borrowed or image that I borrowed from. This is actually in the nopCommerce documentation, but I thought it was a good summary of the different layers. Everything starts with.Net in this case,
the latest is.Net7 at the center. Everything runs on top of that. We've got Nop Core, which is the first, basically these are all individual projects in the solution that you'll see in a few minutes.
But you've got Nop Core which contains all of your domain objects. These are how you map your SQL server database to a C# class. It contains some things like some of the caching logic and some event handling insecurity. Go out one layer to Nop Data.
This is your data access layer. This is what allows them to support multiple databases. We go out one more to Nope Services. Services are basically, this is where all your credit operations live. This is how you get data in and out of the database. This is where you build your link queries and do your tax calculations, your shipping cost calculations, your discounting, things like that.
That's Nop Web Framework. >> Then basically, the presentation tier is right here on the outside ring, NOP Web is all your models, your views, your controllers, model factories. They separate them between admin and the public front end to control access and security to some of those then you see down here on the lower half are all of their unit tests. Every layer in the architecture is they provide you unit tests out of the box.
I think there's something over 700 unit tests that you get out of the box. Everything is testable which is awesome. When you start doing your own development, you start overriding their classes. Those unit tests will actually hit your plug in code and will help you identify if you're creating a breaking change. >> That's awesome. A couple of questions on the data layer,
is that built with entity framework? >> The current data layer is linked to DB, that is the query engine. Then it uses fluid migrator for data migration. It's a code first model.
You create all of your domain objects first. Then the fluid migrator will help you with actually generating your entities. >> That's a nice attraction. Then at the presentation layer, do you get any folks who either extend it or is it possible to perhaps even add your own version of a presentation layer? How would you like folks to work with that? >> You have a lot of different options for presentation. NOP has a great presentation layer out of the box.
But let's say you have a team of react developers and you want to do a react front end. You can absolutely do that. They have a web API that provides access to basically all the same methods and services that they're out of the box presentation layer has. But you could build an entire react front end to the site if you'd like to.
They're built in engine is pretty darn good. Some of the things that are available to you out of the box, it's based on Bootstrap. There's Jquery in there.
Admin LTE is their admin dashboard framework. Because if you think about it, a lot of times, half of the development that we do for a new ecommerce site is back end customization. It's not all just presentation, front end stuff. A lot of times we end up adding new admin pages, adding new reports, adding new admin functionality. They have a great framework for that. Their grid framework is the data tables jquery plug in, which is pretty robust.
Let me just run down through the infrastructure area C#.NET 7. NUnit for their unit tests, AutoMapper. Then I mentioned linq2db Fluent Migrator for data sources. We've got SQL Server, Azure Blob Storage and Redis. Azure Blob Storage you can leverage to store your images.
You want to take advantage of the CDN capabilities of Azure Blob Storage, you can point this at a container and all your product images will be uploaded and scaled to different presentation sizes and those URLs will pull those images off the CDN for the actual loading of the web pages. There's a huge advantage to that, because now for one, you've got a distributed network where you're pulling your images. Ecommerce sites are generally image heavy. We have some ecommerce sites that have 100 images on the homepage. You want to be pulling those.
You don't want to pull all of that from your web server. Azure Blob Storage is a great solution for that. Then Redis if you need to do distributed caching, if you're going to do a web farm multiple servers, they have Redis support built in. >> No, that's fantastic. Especially what you mentioned about the Blob Storage, that can really bite you if you don't architect it properly in fact where you can just offload it to the Cloud CDN support.
I think that's fantastic. Let me ask, can we see a little bit of what this experience looks like in Visual Studio? >> Yeah, I'll tell you while we're talking about tech, we'll jump over to Visual Studio for a second here. Let me jump over and just talk real quick about some of the benefits that we've seen since we've upgraded to.NET 7. The first thing that the NOP team found was improved response time just by upgrading. No additional optimizations just by upgrading the platform, the underlying platform itself. You see the faster response times, 53 percent improvement when they went from.NET 5 to.NET 6,
13 percent improvement from.NET 6 to.NET 7. That's just because of the optimizations that were done to.NET itself. >> So no code changes on your part, just upgrading to the newer version? >> Right. These are just the upgrades. Now, the Knox team applies their own optimizations on top of that, so some of these times might actually be better, but this graph is representing just the core optimizations that we saw just by doing those version upgrades.
>> That's impressive, Rich. I love to see real world examples because we always say it's the fastest.NET and we really do put a lot of work into it. Now I'm also excited a little bit, I don't know if you have a chance to look at.NET 8 yet. It's around the corner. It got even more improvements.
>> For sure. Yeah, we're excited for that. The NOP team has been busy working on the next version and that will be.NET 8.
The plan is to release that one week after.NET 8 goes live. Most likely will be in November, so it's right around the corner. But they generally, they've been following the release cycle of the different.NET releases. They start working with it early, they work with the Beta versions all the way up through the release candidates and then are generally ready a week after the new.NET launches.
>> In terms for.NET 7, better lower memory usage as we walk through the different versions. Then low distribution it might be hard to visualize on a graph, but the spike in processing has flattened out as we've upgraded through different versions of.NET to the point where.NET 7 provides
us one of the flattest load distribution levels that we've seen. Which means that all of your customers are having the same response times on their pages. They're having similar experiences. There's not as much disruption in, oh, we just process five requests and we've got to do some garbage collection or something. It has flattened everything out and so much more consistent response times for the site across the board. >> That's impressive. One thing that I
love that this speaks to is the COGS, the cost of goods savings. Because internally there's a lot of teams at Microsoft that use.NET and we see a similar thing. They're run whole separate entities, almost within Microsoft. Even when they upgrade and they tell us, oh, we've seen millions of dollars in savings. That's what we want to offer is that just by these upgrades that you can get that.
Otherwise it's almost like leaving money on the table. Just a simple upgrade. Now let me ask, was there a big challenge when you went from, let's say.NET framework to.NET 5 and 6? >> I would say no major obstacles. I'd say most of the things are the no team definitely takes advantage of new tools that become available in the different releases and then they decide what they're going to pass on to developers. But I'd say most of the upgrade work is related to changes in maybe the data access layer or changes in the way some of the presentation is done.
Not team does a great job of minimizing the number of API changes and things like that from release to release. It does make it a little less painful when you're doing these upgrades. But the thing you have to factor in is that generally you've built a bunch of customizations in a plug in. When you do that upgrade, you're probably going to spend most of your time just upgrading the code in your plug in to make sure it matches any new method signatures, any new libraries that are being used.
They just went in.NET or.NET 44, they just moved everything to Async and await. That was a massive upgrade because it touched almost every service in the system. But we also got massive performance improvements. It was absolutely worth it. That's another thing that I think is significant about this platform is that all the data access, all the external API calls are Async.
You don't tie up your thread pool with a bunch of requests waiting on a third party to send some data back to you. That also speaks back to this load distribution graph where the user experience is more consistent. >> Well architected. I love that. >> Absolutely. >> If folks want to read more about this, that link at the bottom, we could put that in the description, is that right? >> Absolutely. >> Awesome. Hurry do you might
show you a little bit about that getting started experience, if I download this today and I want to set new holes, new.NET charts, come get them for $1 billion, how do I do that? >> Sure. I've actually come up with an example of how we would extend. Let's, bring this guy back in. We go back to back to the home page. Here we go. Let's say we've got a product
or enhancement request where a client wants to replace the photo gallery with a 3D model. They've generated scanned all of their products and created 3D models and want to replace the 2D images with a 3D model. How do we do that? We can do that with a plug in. Let's take a step through that.
Basically, a plug in is just a class library. It's nothing more than just a C-Sharp class library. The first thing we need to do is we need a way to upload our 3D model and associated with a product. We'll, not provides these UI injection points called widget zones. We can actually add a 3D model upload to the native product admin page without editing any commerce code directly.
We're going to do that with a view component. We've got this view component that's registered to be notified when there's a widget in the system called admin widget on product details block and that's the product admin edit page. When we get to that, we're going to inject our own view. Let me show you what that looks like. We're going to go back to the admin here.
>> Let's see. Let's look for this shoe, and we go through here and we've got all of these different settings that you can apply to this product. We're going to add one more and since I've already built the code for this, we're just going to turn on this widget for this 3D upload. We've turned it on, if we go back to our product details page, now we got a 3D model upload. We've just injected a new UI into the core product admin without modifying their code. With something like this then, let's see, we're going to go ahead and I built this off of Babylon GIS, which uses these GLB files.
I borrowed one of the GLB files from a demo project, so we just drag that onto the site and we're going to upload it and now that model is associated with a product. >> All right, so I want to make sure I fully grasp what you just did there. It was a very slick, it was very fast, so let's break it down. In essence, on the admin screen, you wanted to inject a way to say, I want some way to do some, maybe it's a whole separate category of three bottle upload. You went to the UI portion, added that extensibility point by saying, here's what it's going to look like, use this, and then went to the admin screen, we're able to enable that and then magic it appears. >> Yeah, now there's some infrastructure in the hood, I have a database table where I store the product ID with the 3D file name, so when you upload this, it saves it to its own table.
But that's pretty much all this is really doing for us. So it's building this table of these associations of these model files with a product ID. >> I see. Now I'm connecting the dots earlier when you said, hey scenario wise, I'm a HP.NET developer,
and if I want to be able to do things like this, then I'm not going to get that through some other commerce software. >> Exactly. You either, you have to do it as a bolt on on the side but NET gives you, I actually looked this up the other day, 500 different UI integration points, 500 different widget zones where you can inject your own UI throughout the entire site, both the advent side and the front end side of the site. They give you lots of options in terms of either replacing functionality or adding additional UIs. >> That's impressive. Many places you can, you've made it extensible.
And let's talk a little bit about, in terms of, I imagine that some of the newer HP.NET workloads that are coming out, have you thought about, for example, like our customers asking about or building on and say, hey, I love that, I can build my own react, but what if I want Blazer or something like that? Is that some things that you're also seeing? >> I haven't seen it personally. Our clients generally don't go that deep in the technology.
Yeah, I don't really necessarily know what the types of Blazer requests that have been coming in. I'm sure there are plenty because the whole community is made up of.NET developers. But yeah, I don't necessarily have any information on that. >> Yeah, I'd be curious to see because, well, likely somebody has a party already made one you never know, given that it's global. Is there a forum or something like that that you guys have where folks are going to ask these questions? >> Sure, absolutely.
There is on the nopCommerce site. We've got the community forums, is the most active place you're going to find. There are new topics posted there, you see some just posted a couple of hours ago where you can ask questions. If you're not developer, you can offer assistance. This is closely monitored by the Nop team, under the creator of Nop posts on here regularly. He's got his eyes on what people are asking for.
They really understand their customer base, meaning developers, and they engage with them on a regular basis. >> I love that. For developers, by developers seem we have to be on.NET. >> Yeah, absolutely. >> Let me ask, like we know it's open source, how safe and secure is it? >> Yeah, so in terms of security, let's see, I had a quick slide on that. Let me pull these guys out here.
>> Sure. >> Where's my deck here? Let's jump down, security. Yeah, so open source, awesome.
Full transparency, there's nothing hidden. You're on a modern.NET platform, they continue to follow the update, so you're going to have the latest security that's native to.NET.
They do regular releases, major release once a year, and minor releases a few times throughout the year. I mentioned the marketplace, so third parties can create their own plug ins and upload them to the marketplace. Well, to get a plug in into the marketplace, you have to submit the source code to the nopCommerce team and they are going to review it, because not every plug in the marketplace is open source, the developer can choose whether it's open source or not.
But either way, the Nop team reviews the code to make sure that it's safe. They've got all the good things for PCI compliance and GDPR, ReCapture, antiforgery tokens, you can configure your password security policy. Then there's an access control list, so you can control for each user role, you can control what parts of Nop people have access to, especially if you're going to have maybe content editors in the back end and you don't want them messing with maybe some of the shipping configuration settings. >> I know. Katie never gives me access to any of the.NET sites. >> For you, never.
>> Now, let me ask, who is Jon Volvo, which is super impressive. Is it okay to share perhaps what other customers might be using that folks might have known of? It sounds like a very impressive product that's been around a while. >> Yeah. Let's see, I've got another one well, perhaps you may or may not have heard of it, but they are featured on Good Morning America a couple of times throughout the year. They sell home design decor, they sell the popular thing, or these stickers that you can put on your wall to decorate your rooms.
But they're featured on Good Morning America a few times throughout the year. The interesting thing about that is that when that spot hits, it's like maybe a three or four minute spot. But as soon as that spot hits the traffic spikes on the site and everybody flocks to it. Good Morning America runs in four different time zones at different times, so we see four different spikes on those mornings and we can see up to 20,000 users a minute. Now we have that site set up on Azure Virtual Machine scale set.
We've got 32 nodes for those types of promotional days. The site handles it perfectly, so great example of something standing up to that type of load. >> That is impressive. Good question,
so hosting wise, you mentioned that folks can probably do it on-prem or something like that, but do you have a lot of folks who are hosting in the Cloud services like Azure App Service, quick plug, you can get like free sites. I got to mention [inaudible] runs great on there. But obviously [inaudible] runs everywhere. So no matter where you want to run it, somebody is running gotten it. You can on there. Do you find that customers do a lot of on-prem or are they moving more to the Cloud these days? >> It's a mixture of both.
A lot of people that come to us already have an on-prem site. But after we talk to them and talk about growing their business. A lot of times that's in addition to building the new website, that's a transition to the Cloud and they go from on-prem, which it might be a server running in a closet somewhere and they're like, we got to get more serious about our e-com business. Let's put this up someplace where it's going to be safe and they can do something like in Azure App Service in that case. >> Talking all about this extensibility, I know we're coming closer to time here, but I want to ask are folks also looking because we're in this moment right now with AI, and we at the.NET team,
we're telling folks about intelligent apps. In fact, next month at.NET com if you'll see sessions about it and all that great stuff. Are you finding customers who are interested to maybe offer up, that functionality that says, hey, how do I bring in maybe a chat bot, maybe some intelligence, maybe leverage Azure Open AI or Open AI ChatGPT models and so forth. >> Yeah, that would be some really interesting stuff. I'm hoping people come to us for that.
I have not heard any of those requests yet. But there's some really exciting opportunities to work with Open AI. I think the ability to plug in and do seamless integrations to Nop is a huge advantage for this platform. It's one of the reasons why we've been working with it for over 10 years and when people do come to us with those types of requests, we'll be able to say yes, we're going to be able to do that.
>> I just have one last question about like, what are the top features that customers love about nopCommerce if you had to make a top five, top three list? >> One, they like the fact that it's open source, even though they don't necessarily have host the source in their own repository. They like the idea that they're in full control of the source and they can basically do anything that they want and that they're not boxed in. A lot of people come to us because they've had a bad experience with some of the other hosted e-commerce solutions where they want to do something custom and then they can't, and they can't grow their business the way they'd like and they hit a brick wall.
They either discover Nop or they come to us and we introduce them to it. But it's that you've got access to the source, you've got ultimate customizability, and then security is definitely a big one. The fact that it runs on a Microsoft stack, that's one of the reasons why people choose this. They want to be on the Microsoft platform, they don't want to be on a PHP platform. I think the third thing is probably custom design.
There are a lot of third party themes that you can purchase to really quickly skin your site. But if you want to do something really custom for your brand, again, that ultimate flexibility is what you get on this platform. >> That's fantastic. Because it's open source,
I'd be remiss if I didn't ask what does support look like? >> Some of the support options. There's a global network of technology solution partners like ourselves that can help you with your site. There is a plug in in a theme marketplace where you can purchase third party plug-ins at very reasonable cost.
You can jump on the community form. If you're a developer and you have a question, and you'll be surprised how many people flock around that and want to help you out, and then nopCommerce themselves offers a premium support service if you have like just a one time need or if you just want to have them on standby for like an annual basis. >> Awesome. One last thing was that site that you showed that's out of the box, that's literally downloading your SDK or install and then opening up visual studio into file new experience.
Pretty much without any coding. Is that F five or is there a little bit tweaking? >> No, it's download and F five. The first thing that you'll see is a Nop installation screen which ask you to enter an admin login and a database connection string and it does its thing, it installs, it creates the tables, you restart it, and boom, you've got that exact same representation that I was showing you guys out of the box. >> That's fantastic. Katie, I don't know if we have time for any questions. I think of some of the folks in the chat might have been answering that, so Katie, I'll get back to you.
>> We'll have to unfortunately, wrap things up for today. If we could easily do another hour with Rich. Rich, thank you for sharing your expertise. We may have to bring you back based on how crazy the chat has been. But I would like to thank all of our viewers out there for tuning into today's show.
As a reminder, you can check out other.NET live TV streams like the one you watched today over @dot.net/live. As a quick reminder, if you have anything you're passionate about in the.NET space and you feel you would like to share that and be a guest on this show, please head over to aka.ms/onnetlive-guest scrolling on the bottom of your screen. We do hope to see you next time where we'll talk about more.NET goodness.
But until then, stay productive, check out e-commerce. Thanks again for tuning in.