How to Vibe Code Products for Non Developers

Episode
572
Posted in

Listen to This Episode

This episode is brought to you by Popup Maker & WP Fusion

Boost Your Website’s Leads & Sales with Popup Maker

Get started for free or save 15% OFF Popup Maker Premium—the most trusted WordPress popup plugin to grow your email list and increase sales conversions.


Automate Your WordPress LMS & CRM with WP Fusion

Connect your website to your CRM, automate your marketing, and personalize your students’ learning journey. Save 15% OFF WP Fusion with coupon code LIFTERLMS.

Alex Standiford from Siren Affiliates, explains how AI-powered vibe coding can be used by non-developers, entrepreneurs, and course designers to create their own internal business tools, apps, and solutions without the requirement for traditional programming knowledge. Drawing on his more than ten years of expertise in software development, Alex argues that although AI makes coding more accessible, the proper foundations and development methods are necessary to produce dependable, scalable, and maintainable solutions.

He talks about typical issues including managing more complicated projects, technical debt, inconsistent AI-generated code, and losing context during lengthy coding sessions. In order to assist users in organizing their projects, reviewing AI-generated code, and avoiding typical development errors, he emphasizes the significance of coding patterns, such as adapter, factory, and registry patterns, as well as version control with Git and GitHub. Additionally, Alex provides real-world examples of how AI may be used to create bespoke dashboards, internet integrations, automatic podcast discovery systems, interactive product experiences, and internal business tools.

While highlighting the benefits of leveraging WordPress to create unique solutions through plugins and pre-existing connections, he describes how technologies like Docker, Railroad, DigitalOcean, and Vercel can facilitate the development and deployment process. He also talks about how his own job has changed from writing code to overseeing several development projects at once, coordinating AI agents, and evaluating their work.

Alex hopes to assist non-technical entrepreneurs in transforming their ideas into useful, dependable, and maintainable products with his new course, Vibe Coding Products for Scrappy Founders. He also expresses confidence about the future of open-source software like WordPress, outlining how AI makes these platforms even more beneficial for company owners looking to establish and expand their enterprises.

WordPress LMS Buyer's Guide Download Cover Images

Here’s Where To Go Next…

Get the Course Creator Starter Kit to help you (or your client) create, launch, and scale a high-value online learning website.

Also visit the creators of the LMScast podcast over at LifterLMS, the world’s leading most customizable learning management system software for WordPress. Create courses, coaching programs, online schools, and more with LifterLMS.

Browse more recent episodes of the LMScast podcast here or explore the entire back catalog since 2014.

And be sure to subscribe to get new podcast episodes delivered to your inbox every week.

Episode Transcript:

Chris Badgett: You’ve come to the right place if you’re looking to create, launch, and scale a high-value online training program. I’m your guide, Chris Badgett. I’m the co-founder of LifterLMS, the most powerful learning management system for WordPress. Stay to the end. I’ve got something special for you. Enjoy the show 

Hello, and welcome back to another episode of LMScast. I’m joined by a good friend. He’s back on the show. It’s Alex Standiford. You can find him at sirenaffiliates.com. We’re gonna get into his course, which you can find at novatori.us, so that… The name of the business there is Novatorius, so novatori.us.

But first, Alex, welcome back on the show. 

Alex Standiford: Hey, Chris. I’m really excited to be here. It’s always– I always have a lot of fun on this show and always enjoy our conversations. I always look forward to it. 

Chris Badgett: Absolutely. And you’ve got a new course, which you’re really hitting something that the market desperately needs.

It’s called Vibe Coding Products for Scrappy Founders. Yeah. And, the w- the way I like to think about that is there’s just this crushing demand for people who are starting to build apps, non-developers, and, you can get far with AI, but you s- you need some help, and you need to do it the right way, and you don’t know what you don’t know.

So tell us the story of why you created Vibe Coding Products for Scrappy Founders, which, as of this recording, it’s about to launch. It hasn’t launched yet. Yep. But tell us about the course. Like, where… What’s the genesis of it? 

Alex Standiford: Yeah. The big thing is I I’m a product guy. I’ve been building products, I’ve been building s- solutions for, most of my career, and I realized that with AI, as it’s really taken off in this past year particularly I’m seeing a lot of people building things who haven’t had access to that before, right?

Who aren’t programmers, who don’t know how to do it or never had the education or took the time to learn how to do it, and they’re leveraging AI to build these entire products. And, but what I noticed was a lot of people… I was seeing a lot of problems. I was seeing a lot of commonalities where people were either, one, building something for themselves and weren’t really that worried about it ever actually becoming anything serious that other people would need to use or whatever.

And that’s fine. That’s a great use case for just vibe coding and not really worrying about the consequences ’cause it’s, as long as it isn’t something that somebody’s business or whatever depends on, it’s probably fine. But then I saw… I was seeing a lot of other people, especially in entrepreneurial circles and stuff like that, were building their products, intending to sell them.

And that’s a whole different thing because there’s no end to the coding, right? You don’t build something and then it’s done. It’s you build it, and then you’re adding new features, or you’re adding new capabilities, or people are running into all these different edge cases or all these other problems, and you have to maintain that code long term.

And AI, from my personal experience, is very good at writing code. It is not very good at writing consistent code that is architecturally sound. So in other words, that is something that can be maintained long term. And what I was seeing on a lot of subreddits and forums and conversations is that people were building these things and they would get 90% of the way there, and that last 10%, they couldn’t seem to get it right.

And it just seemed like everything was just falling apart and everything felt wobbly and kind of shaky, and people were feeling really frustrated by that. And then of course, there were other people talking about, running out of their usage limit or working like 20 hours in a single day because they felt like they couldn’t stop, because if they walked away from the chat, it would lose all of its context and now they have to figure out – they, they’re afraid that they’ll lose progress on where they are, the goal of this course is to combine my, decade plus of experience as a programmer and my knowledge in writing code and working with AI into something that is approachable for a non-developer, a non-technical person, to be able to sit down and learn how to build and maintain their products and help them get those products launched so that they’re able to actually make something that’s maintainable so they can get their business off the ground, and then probably eventually be able to offload that to a programmer and have the programmer be able to actually, work with it and not look at it and go, “Oh my gosh, we have to rebuild this whole thing 

Chris Badgett: That’s awesome.

And for the course creators out there, or if you’re running an agency and you’re of the more non-developer variety, one of the things I’m noticing in the market is courses by themselves are no longer enough. If you’re a course creator and you haven’t thought about it, maybe your course is gonna solve some kind of problem, and your course is mostly delivering information.

Today, information is getting disrupted by AI tools, where people go to AI to learn. So it’s like course plus. Yeah. If you’re gonna offer a course, what else? Are you gonna give community? Are you gonna give worksheets, templates, coaching? What else are you gonna add to that?

And sometimes people would really benefit from an app that helps them get the result promised in the marketing of the course. So if I was, teaching something like real estate sales and targeting real estate agents, I might also give them an app that helps with cold outreach or some kind of custom real estate agent CRM sales app thing.

Yeah. And I could– But as a non-technical founder, that person could Vibe Code that, and now they’re not just teaching sales techniques, they’re giving a tool that will help the learner implement what they learn. 

Alex Standiford: Yeah. And what’s interesting is it doesn’t even necessarily have to be a product, right? So the way it’s framed right now on the site is Vibe Coding products for scrappy founders.

But a lot of the stuff that I’ve been building has been around tooling and automations for my company to make it run more autonomously. For example one of the things that I’ve built was a tool that allows me to find podcasts to be on automatically, and it brings them to me and it sends it to me as a a list of recommendations or whatever for me to reach out to.

That, that is an internal tool that I’m using all the time and I’m making good use of. If you have the ability to work with AI and you can have a conversation with it to be able to build this stuff sustainably- It’s just generally a really good skill even if you’re not trying to build a product, right?

Because it allow– It just opens so many doors especially if you’re, budget conscious and there’s a few different tools that you don’t necessarily wanna, wanna pay for. I’m not saying you should go out there and build your own LMS or your own CMS or CRM or any of that stuff.

By all means, stick to what’s out there now. But maybe you create something that allows you to automatically connect one of those systems into your, an internal system or something like that, just to help take some of that friction off. I’ve seen a lot of a lot of, a c- of several of my clients, in fact, have already started doing that where they’re, they’re building out their own custom dashboards for their sales teams and stuff like that just because they can 

Chris Badgett: Yeah, I think those internal tools, we have so many dashboards and things now at Lifter, it’s awesome.

Yeah. And you’re right the internal tooling is super helpful. And you mentioned something which I think I’ve seen a pattern of, which is for somebody’s first tool, if you’re like, “What internal tool should I build?” Something that delivers I think of it a newsletter to yourself.

Alex Standiford: Yeah, 

Chris Badgett: a listening station. What- so that you can stay up to speed on what’s going on in your industry or across your, the key topics you need to be abreast on to just stay current and like a personal newsletter. Yeah. That could be a great first project, but what other kind of good first projects for internal tooling would you recommend?

Alex Standiford: Yeah. Obviously, like you just said, that’s a big one because you can find a lot of leads, you can find a lot of opportunities with that. So it’s really powerful in that regard. Another tool that we’ve built internally is a simple automation on our website, right? So we have several different extensions and customizations that we’ve made on our website that extends what it’s able to do.

Like for example our site now for these courses is using Lifter, of course, but it’s using it headlessly, which is a technical detail that doesn’t necessarily matter a lot here, but the point is we built that. That website I built was essentially vibe coded. It was built, steered by me, directed by me, but I didn’t write any of the code.

I had a system write that code for me based on, several weeks of iterating through design and stuff like that. But the the integration, for example, with Lifter, I have it set up to where it automatically connects with it, it uses it for access, it uses it for the purchase. Actually, we’re using WooCommerce on the back end as well, so it’s using the Lifter WooCommerce connection.

But then on top of that, it’s also leveraging Siren, which is my affiliate program product. But we have our own email system that we use, right? So that email system isn’t using like SendGrid or any- or Gmail or anything like that. We are using something that was way less expensive than what we were finding, and for us specifically, there was enough value to create an integration that allowed us to be able to work with that.

That’s not for everybody, right? Obviously, different people are gonna have different things there. It could depend on their kind of situation. But you could create more dynamic webpage demos, for example. So that’s been a big one for me, is I’ve been able to go a lot further on creating, Better web pages in general that are more interactive, that feel more like a team of 20 people did it instead of just me, right?

With animations and things like that. So that’s another big one that comes to mind for me, is just being able to promote your product better. 

Chris Badgett: Can you explain the concept of headless WordPress or headless LifterLMS? My understanding is it’s… I’ve, as a non-developer, I’ve always tried to figure it out, but I think my current understanding is the back end is powered by WordPress, but the front end website is not.

Is that- Yeah … what it is? 

Alex Standiford: Yeah. Basically it s- disconnects the front end of the website, what is displayed and presented, with the back end of the website, which is where, all the database queries, purchase orders, and all those details happen. And there’s a million different ways- 

Chris Badgett: Is that a static, is that a static site then, on the front?

Alex Standiford: Mine is, yeah. 

Chris Badgett: Okay. 

Alex Standiford: Yeah. And there’s a million different ways that you can approach that, right? Some people are using WordPress fully, CMS, all of its CMS capabilities, and having it generate statically. Some people are using a blend. I’m using a blend, ’cause it’s faster for my team and myself to be able to just generate the content with AI directly as files instead of using WordPress’s block editor today.

Or at least whenever we built it. That’s already, even that has changed in the last six months. I’m not e- don’t even necessarily think of that as a recommendation that you should do it that way. It just happened to be, with my background as a web developer, I’ve always preferred headless when I can, because it allows me to be it allows me to use WordPress when it makes sense, but if there’s a different service or somewhere else that I need to connect to that isn’t WordPress it just makes it a little bit easier in general.

That’s the real benefit of it. It adds, and it adds a fair bit of overhead, obviously, but most of that overhead’s been mitigated by AI. And AI’s really good at writing React code, which is a specific type of code that is very common on headless websites. And I just found that it was able, I was able, for my workflow with how much AI coding I’m doing I was able to leverage it headlessly more effectively than I was going through WordPress in the process.

That’s awesome. So for me, really it’s less about… I selected that workflow specifically because it was most compatible with how I work, right? If I was a person who preferred the block editor instead of being a programmer or any of that stuff I would probably have not gone headless. In fact, my own personal website isn’t headless right now for that very reason.

Chris Badgett: Let’s talk about your course a little more. There’s key pro- AI is super exciting, but- Yeah … when you start building an app for the public or for an internal tool, you kinda, in my experience, I’m thinking of a couple main problems. One is, as it gets complex, it’s really fun in the beginning, but then it starts getting complex and you lose context or, it gets really expensive ’cause it’s looking at everything all the time, and there’s that.

Alex Standiford: Yep. 

Chris Badgett: And then there’s versioning. Like- Yes … to a non-GitHub user, they don’t really understand the importance of versioning. 

Alex Standiford: Yeah. 

Chris Badgett: And then the other one is just working on parts and I think you used the word scaffolding. 

Alex Standiford: Yes, 

Chris Badgett: scaffolding. So kinda, and that’s what you’re doing, is you’re taking, like, decades plus of developer experience and helping- Yeah

the vibe coder “Hey, we still need these fundamental software development things.” Like- Yeah … what are some of those problems and what are some of the solutions? 

Alex Standiford: Yeah. Basically what I’ve done you’re on the right track there for sure, is I’ve taken my decades plus of experience in coding and, working with big teams, small teams, everything in between, and said, “These are the things that you still need.

These are still the pillars of what, modern software development, with or without AI, you need to have. And here are the things that you probably don’t need.” So the, the biggest problem that I see with it is I call it like the Jenga effect. Jenga? ‘Cause that’s how it feels.

As you’re building, you’re it’s like you’re pulling out a block from the bottom and you’re sticking it on top, and it gets bigger and bigger, but inevi- but it becomes less stable as it grows. So that is what it feels like to build with AI, right? And the big thing that I wanna do is I help people make sure that they keep their foundation stable as they’re growing, right?

It’s almost like you’re able to take blocks from a different set and stack them on top and not give those up in the process. And developers call it technical debt, but basically it’s, things are becoming progressively less stable over time because we have taken shortcuts or we made decisions in the past that are incompatible with where we’re at now.

And that is the biggest problem, and what’s funny is that happens way faster with AI that is being steered by somebody who isn’t aware or hasn’t experienced the consequences of a bad coding decision, right? A, an experienced programmer can look at code. I’m at a spot where I’ll watch the AI agent working, and I’ll see code just flash on the screen for a second, and that’s all I need.

I see it for a second, I go, “Whoa, whoa, that smells funny. That’s a code smell. Stop. What are you doing? That’s… Stop. We need to…” But a non-developer doesn’t have that, right? They don’t have that experience, they don’t have that context. So a big part of my course is about helping them create the guardrails and put them on a setup that protects them from that as much as possible.

Chris Badgett: That’s really cool. And then there’s the re- code review is like a thing- yeah … where you develop something, but then you don’t just cross your fingers and hope it works. 

Alex Standiford: Yeah. 

Chris Badgett: So how does a non-developer do code review on code they didn’t actually write? 

Alex Standiford: Yep. All of this leads to the concept of patterns, right?

One of the big things that I teach, the biggest pieces of this course, is a series of coding patterns. And you can think of these as almost like templates, right? That are not a specific programming language. They’re… Any language can apply these patterns, and you’re basically saying, for example, one of them is an adapter pattern, right?

And it’s saying, whenever you have a thing and it needs to become a different thing, you need a third thing in the middle that adapts those things together so they can connect and work, right? And that’s, that term is adapter, right? And then there’s other ones like factory and registry, and there’s several.

I think I have at least eight or 10, somewhere around in there. But these are all of the patterns that I have basically settled on where every problem I’ve ever run into from a programming perspective in web in my realm can be solved by a combination of these patterns. And the reason why patterns are so important is because it gives you a common language with the AI agent, right?

So instead of saying… Instead of looking at every line of code, you’re looking at the patterns. You’re talking to them in terms of patterns. You’re saying, “Okay, so here’s what I need. Here’s what we’re doing.” In my head, what are… You can ask the AI agent how do you propose that we build this?” Now, if you ask an AI agent that without the context, that language, right?

It would come back to you, and it would spit out a response. And to a non-technical person, that’s not gonna be easy to understand. But if you tell it, “How are we gonna build this? Here are the patterns that you’re allowed to use. Help me figure out how we’re gonna do this,” and then you’re able to have a discourse with it where it speaks to you in terms of patterns, and you’re able to say that doesn’t seem like that’s the right pattern.

I wonder if we should use this one,” or, “Why did you s- not select this?” It lets you have that conversation, and then whenever you’ve already talked about all that and you understand the patterns on how it’s gonna be built, now everything you need to build is effectively broken into small pieces, right?

Because now it’s like, okay, so we can now take this and break it into pieces because we know what patterns we’re gonna do, so we know what how that code is gonna be orchestrated, and we have a very clear way to break it into smaller pieces. So with that- Now you’re able to review that code in those small pieces, one piece at a time, and you’re also able to understand what that pattern is.

So you can take a look at it and you can say, “Okay, that looks like what that pattern is supposed to do. That matches my expectations.” Even if you don’t necessarily understand what every line of code is. And general- genuinely or generally a lot of the code review becomes less necessary because you are loading up front with that, right?

So most of it is just saying, did the AI agent use what we planned, or did it, go off the rails and do something weird? And usually that’s a quick two to three-minute glance. You look over, you go, “Yep, that looks like an adapter. Okay, as long as the test passed, let’s move on.”

And then of course, that process all happens in a version control system such as Git, which we can touch on that a little bit next. 

Chris Badgett: Before we go to Git- Yeah … since I’m learning for free here and getting a ton of value here- Yeah. What is a factory pattern? 

Alex Standiford: Yeah. So a factory pattern is basically i- imagine a factory, right? It produces widgets or a specific thing, right? So imagine a factory that does one thing. It’s spitting out sprockets all day, right? That’s effectively what that pattern is. It is a thing that produces one single type of thing. It might be able to create different ones with different num- like, different numbers of teeth or different diameters or things like that.

The shape of the thing it produces might be different. But generally, you look at them and you can go, “Oh yeah, these are all sprockets,” right? That’s how a factory works in real life usually. So that’s what a factory pattern does. So it says, it accepts inputs different things, different details on what it needs to know in order to be able to produce whatever it needs to produce, and then its output is the, the thing it needs to produce.

So it could be like, in a, in programming terms, that could be like a user factory. Maybe you have users on your product. Most products do, in fact. So you might have a user object, right? A thing that represents a user on your product, and a factory is the thing that helps you create that user object.

But what’s interesting is you could have multiple factories, right? So you might have one that is specifically for creating users from a LifterLMS plugin, right? So maybe I’m creating something that’s extending Lifter, and it’s also something that’s extending Siren, right? My product. You might have a factory that generates a user through a LifterLMS course person or a, a course creator or a customer, and that’s one factory, right?

It’s generating LifterLMS user factory, right? So it’s creating those users. And then you could turn right around and have the same thing from a Siren side, where it’s like Siren user factory, where it takes a collaborator in Siren and it generates it out as like a user. So those factories can do that one thing really well.

And since they’re both the same type of thing, then you can switch them out throughout your code and say, “Oh, for this one we need to use this factory instead of this one.” They’re all generating the same user object, but how they get there is different. 

Chris Badgett: So I know one big thing that a lot of people do with vibe coding is creating reports of some kind.

So would you have a report factory of sorts that’s- Yeah … it could be a different kind of report, but they all go through the same factory with similar output or whatever? 

Alex Standiford: Yeah, absolutely. So like an export of a CSV. So there could be a CSV factory that generates the CSV file whenever it’s being exported, or a PDF factory that generates it from a PDF, right?

It’s a single thing. It’s one job is to produce an out- an output like that. Exactly. 

Chris Badgett: And what’s… What happens when you don’t standardize these patterns? So- Like, how do people get off the rails with AI?

This episode of LMScast is brought to you by Popup Maker, the most powerful and trusted popup solution for WordPress. Whether you’re selling online courses or building a membership site, Popup Maker helps you grow your email list, boost conversions, and engage your visitors with highly targeted customizable popups.

You can create smart popups for things like LifterLMS or WooCommerce cart abandonment recovery, upsells, course engagement, activation, targeted offers based on exactly what your students are doing inside LifterLMS. I personally use Popup Maker on all of our websites at LifterLMS for lead magnet opt-ins, cart abandonment, upsells, downsells, and guiding users to the right next step.

Popup Maker is essential for growing my email list and making more money through my website. Are you ready to take your website to the next level? Head on over to wppopupmaker.com/lmscast to save 15% off on your order. The discount automatically applies when you visit through that link. Popup Maker also has a free version, so you can start with that too.

So go to wppopupmaker.com/lmscast now to save 15% or sign up for the free plan, and start getting more leads, sales, and student engagement today. Now back to the show.

Alex Standiford: Yeah. Th- and this is exactly why that is… That specific thing is important because now you’ve created one thing that does that one thing, and you can reuse that factory anywhere in your code.

But without that, what AI would do is it may not know that you’ve already created a way to generate users from LifterLMS, right? It may not know that, and it would just go, “Oh, okay. I need to go get the user from LifterLMS.” And this isn’t just AI, this is programmers, too. This is why we start… This is why whenever I’m, when I’ve wo- like at bigger companies that I’ve worked at, this is why we, as developers, as a team of developers, we speak in terms of patterns first because of this exact same thing.

So for example, they might say, or your AI agent might go, “Oh, I need to go get a user from Lifter,” right? And it will go, and it’ll get it, and it’ll create it, and it’ll write that code, and then three months later, you come back and you say, “Okay. I have this different thing of code, and it needs to create a user, too.”

So AI may not know or find that code where you’ve already solved this problem once, and it’ll do it again. So now you’ve got two different versions that are creating a user from LifterLMS or something like that, and they’re slightly different, or they’re slightly adjusted. And this is how you end up with those weird inconsistencies on your site where it’s like this thing created the user without any problem, but this thing over here for some reason doesn’t work.

Why is it not working here, but it works fine here? And it’s usually because of something like this, where the code has been created multiple times and there was some drift, or there was a bug that was solved in one and it wasn’t solved in the other one. So now the bug keeps on coming back in different places because you have to play Whac-A-Mole with all the different spots where that bug appears.

If you put it in a factory, it centralizes it all in one spot. So now that bug, you know it’s in that one factory, and you fix it there, and it’ll fix it everywhere 

Chris Badgett: I wanna give a specific example. As we’re talking, I’m thinking about Lifter users. A good internal tool you could create, particularly if you’re scaling, is you might have other coaches or tutors that work in your organization, and you may want some kind of custom app that you use internally.

Okay, this user ins- enrolled in the course, and you kinda create clients underneath these coaches or tutors, and it’s like this kinda separate thing that you manage your specific coaching or tutoring workflow. Yeah. That’s an example of a custom app you could build. 

Alex Standiford: And it’s funny you bring that up because that is a lot of the work.

So just real quick context for the listeners. Siren Affiliates is my is my product to manage and help people grow their businesses using incentive programs. And one of the challenges of my own product is it can build any kind of incentive program you can imagine, right? Anything from an affiliate program to you can have a course creator platform.

We did a video previously on how to create a clone of Udemy using LifterLMS Ninja Forms, and Siren, right? And Siren was able to keep track of how much money you owed to all of the course creators on your own platform-shaped course website, right? But the problem is that dashboard for that specific experience is absolutely gonna be tailored to that site, right?

I, as a product maker of Siren, would never be able to get that detailed because what you need from an experience standpoint is so custom to what you want that I will have trouble creating something that is as polished as you probably want it to be. And I think that’s what you’re getting at here, Chris, where it’s like, that front-end experience f- that, the user experience from that course, from the, the, the educator experience there, is absolutely something that is a great fit for this kind of thing, right?

Because you’re now able to create that extra polish on your website that allows your customers to be able to work with it. So in my case I have a customer who I’m working with who, who has this… They built this entire– they’ve effectively vibe coded this entire dashboard for a national p- pharmaceutical company that is selling, that has a sales teams and regions and all this stuff, and they used Siren’s system to, they use the engine behind Siren to make it work, but they aren’t touching my interface.

They built their entire, own entire interface on top of it, and it just connects to everything over the API. And it’s really, it’s actually really awesome. I’m actually a little jealous ’cause I would really like to have an opportunity to build something like that for Siren. But but it was really cool to see that.

But that’s a really good example of something that is such a good fit for this 

Chris Badgett: You mentioned Git. You didn’t say GitHub. And this whole thing of versioning control, and I think with the explosion of vibe coding- Yeah … there’s a lot of people starting to create GitHub accounts. But give us a general education on versioning Git versus GitHub and what, how it actually works and how to think about it for the, vibe coder that’s a non-developer.

Alex Standiford: Yeah. Git is– You can think of Git as, at its most basic level, the goal and purpose of it for a vibe coder, for somebody in this, in their situation, is to make sure that you always have an idea, or is to make sure that you always have a way to roll back to a previous version of your code if you need to, or to go back and look at what it was in the past.

Basically it’s history. It gives you a history of your whatever you’re pushing up there. So generally, that’s code, but it could be really anything text-based. It’s gen- it’s, agnostic in that way. It can be whatever you need. But the, at its base, that’s its core fundamental value and why it’s important, especially with AI, because if you’re ha- if you’re working with it and it made a whole bunch of changes to your code on your computer and you’re like, “Oh man, this is way off I just need to start over.”

If you don’t have Git or you weren’t using Git, you might not be able to, right? ‘Cause it’s been just changing files on your computer all day, and how do you revert? How do you get it back? You can ask the AI, “Can you put it back?” It’ll try, but it’ll probably make more mistakes and you’ll never quite get it back to where it was.

But if you’re using Git and your AI agent is, properly committing, in other words, adding updates to it and add- creating snapshots of your code frequently enough or at the right times you’ll be able to say, “This is really not working. Can we just roll this, can we roll it back to where we started this morning?”

And then the AI agent can roll it back 100% confidently without it needing to guess at what it’s doing. At the most basic level that’s the, the key thing. There’s also some other things, like it helps you with reviewing code a little bit because you can you can set it up to where it shows you the difference between where it was this morning and where it is now, and it’ll– and you can use GitHub or some other system like that to look at the difference between what it looks like now and what it looked like then.

And it’ll show you here’s all the code lines that were added, here’s everything that was removed. So you can get a really clear before and after picture and be able to understand what’s going on. 

Chris Badgett: Did you lay the foundational pieces for like what a beginner vibe coder needs? So for example, we’re talking about Git.

G- let’s say somebody like builds an app and they’re inside, ChatGPT or Claude Code or something like that. But you actually have to publish it somewhere. It may need a database. It may need a way to notify you or something like that. What… If you could just give a beginner vibe coder the essential stack of tools besides the AI tool, what do they need for an app?

When let’s say it’s internal, but it needs to be public-facing, like people at different computers need to be able to use it. 

Alex Standiford: There’s obviously many ways to approach that, but the simplest way to put it is they need a host, which is essentially somebody else’s computer that you’re borrowing, right?

And that computer is optimized. Not just some dude in the basement or whatever. It’s like an actual company that has a server, right? But you need a host to host that whatever your code is. In the 

Chris Badgett: cloud, essentially. 

Alex Standiford: In the cloud, yes, exactly. Yeah. You need a host for that. You need a way to get the code onto that host, which actually GitHub, which is which is essentially Git.

It is Git, but it’s like a service that allows you to give you… It gives you a UI in the browser. It lets you push code onto a server, their server, so that it doesn’t get lost or anything like that and stuff like that. So you definitely need that, but you need a way to push the code to your server consistently and securely.

You need backups, a way to be able to back up your stuff automatically, which most hosts provide. You need a way to be able to run the system on your own machine separately from on a server, so that you can build it, test it, work with it safely, create a s- basically a sandbox environment where you can tinker and figure out what’s going on.

And essentially those are the key pieces. It’s really those four pieces at minimum. Depending on what language your system is written in that might be… If you’re on WordPress and you’re building a WordPress, you could, that could just be a WordPress plugin, and what’s, this is what’s great about WordPress, is it collapses all of that into its own ecosystem.

That has been, been WordPress’s calling card. One of its best, most powerful things is it takes all of those four individual things and it just makes it a, a simple thing, right? So from a WordPress perspective, if you’re building a WordPress plugin, it’s literally- you would build the plugin locally.

You’d probably use something like Local by Flywheel or some other local w- WordPress development tool that basically sets up the environment for you locally. You would build the plugin in that local environment with your AI agent, and then whenever you’re done, you would ask the AI agent to zip it up, or you would ask…

Honestly, you probably should ask the AI agent to create a script that will zip it up for you, and then you can just upload it manually onto your site and update it to the next version, just like any other WordPress plugin. And then all of a sudden you have that whole stack. It’s all there and, taken care of.

But if you’re not on WordPress, then the process obviously is gonna be different depending on what you’re what host or provider you’re using. But all of them generally have pretty good workflows, and they’re all very motivated to make it compatible with AI. More often than not, you’re able to pretty safely just push to your deployment envir- your server without too much trouble.

Chris Badgett: Most apps collect some kind of data. So is the database, is that something that the host usually provides? Or how does- Yeah … how does one think about storing of the data? 

Alex Standiford: Yeah. I one… It, again, that one depends on the tool and it also depends on the app, right? Some apps can get by without a database, but you’re right, 9 times out of 10 you probably want a database.

So they all have the ability to do it to provide you with a database to be able to save your stuff to at varying levels of complexity, right? One of them, for example, that I’ve worked with that’s not WordPress is Railway. They have a… They treat each piece as its own little container almost.

So you have the, your actual app, and then you have your database, and then you have, maybe the front end of the site or whatever, and they’re all s- three separate concepts and you’re able to configure backups and all that stuff directly through there. But again, if you’re on WordPress, you get the backups, you get the hosting, you get all that stuff for free.

If you’re looking, if you are building with Lifter and we’re talking in terms of vibe coding something that extends your WordPress website you’re probably just building a WordPress plugin or extending or modifying your theme, which the benefit of that, of course, is you’re getting the backups for free.

C- not for free, but almost all hosts provide backups these days. That’s pretty much a standard thing for WordPress. You’re getting, the, the database is just a part of it, right? Plus an, a database schema that already exists, so you don’t have to design the whole database yourself.

It’s already built. You’re just using what’s in WordPress most of the time. And you also have a pretty clear process for deploying that feels very natural to anybody who is WordPress users, ’cause ultimately your plugin just becomes a zip file that you just upload onto your site, and then you can upload it on staging or a staging site to test it or whatever.

But all of that stuff is very familiar to a WordPress user, so it’s, if I was vibe coding a product as a course creator, which I guess, I kinda am I would be leaning on, I would be leaning on WordPress where I can, building plugins and building things like that. A lot of my internal tools are just WordPress plugins 

Chris Badgett: That’s awesome.

And just a quick related question, if somebody’s building an internal tool and it’s not on WordPress, what do you recommend for a host? And then you also me- recommended needing something for local development. Yeah. What would you recommend for those two? 

Alex Standiford: Yeah, so 

Chris Badgett: the- ‘Cause we all know that this audience will know WordPress hosting very well.

Yeah. But do you just still use the same one, or do you use DigitalOcean or something different? What’s vibe coder beginner friendly?

This episode of LMScast is brought to you by WP Fusion, the powerful WordPress software that connects your website to your CRM and marketing automation platform, whether that’s HubSpot, Salesforce, ActiveCampaign, GoHighLevel, and many more. If you’re selling online courses, memberships, coaching, digital products, and more, WP Fusion turns your WordPress website into a smarter, more personalized, and more automated online business.

With deep integration into LifterLMS, WooCommerce, the popular form plugins, and many more top WordPress tools, WP Fusion lets you automatically create and tag contacts, unlock course and membership access, track student progress, recover abandoned carts, and trigger powerful automations based on what your users are actually doing on your LMS website.

We use WP Fusion ourselves on our LifterLMS website, which is powered by WooCommerce for selling software subscriptions. But we also use WP Fusion on the LifterLMS Academy, where we are selling access to courses and memberships powered, of course, by LifterLMS. WP Fusion connects our websites and CRM seamlessly together so that we can create a better customer journey, deliver the right offers, and automate follow-up based on user behavior.

If you wanna sell more, personalize the learning experience, and build a more connected, automated online business, check out WP Fusion today. Go to wpfusion.com and use the coupon code LifterLMS to save 15%. Now back to the show.

Alex Standiford: Yeah. I’m really liking Railway right now. Yeah … it’s been, it’s just… It has everything I need. It’s affordable. It scales without me needing to mess with it.

I think DigitalOcean is really good as well. I have a couple things that I’m running on DigitalOcean, but it’s a little more hands-off than Railway is. I… railway holds your hand a little more and kinda makes that process a little bit easier. And to be honest I haven’t really interacted with the interface in Railway at all.

Very little, because my AI agent just did it, right? Because Railway has- It’s 

Chris Badgett: connected, 

Alex Standiford: right? Yeah. It has a, it has its own, command line interface that the AI agent is able to work with. I just authenti- I just get logged in, I get it set up, and then I’m like, “Okay, go do,” go make the site…

Go make this exist on Railway.” And it just does, right? Not saying you can’t do that with DigitalOcean and other things like that, but I just, I’ve really been enjoying that. Railway is particularly good with PHP, which of course is where most of my code is… Most of my code is written in PHP because of my background in WordPress.

Siren’s in PHP. I have a framework that I have called PHP Nomad which obviously is built very AI agentic friendly. It implements all these patterns that I talk about in the course. It can be used to build WordPress plugins. It can be used to build non-WordPress plugins. It can be used to be built, to build things that works both as a WordPress plugin and not.

In fact, that’s what Siren is, right? Siren has two different editions. It has the self-hosted edition, which is the WordPress plugin, and then it has the SaaS version, which is for people to log in and create the account. The software is the same between the two of them. It’s just using PHP Nomad, and it’s converting between WordPress and non-WordPress.

And guess what? A lot of that stuff are using adapters to adapt it to and from those different places. But Railway’s really good. If you’re talking in terms of JavaScript or something like that I use Vercel for a lot of my front-end stuff. Very easy. Very friendly for getting deployed and getting it out the door.

Those are great starting points. I could get into the details of why you might wanna move away from something like that in the future, but honestly, it’s kinda like buying your first guitar. It’s like you don’t know what you don’t know. Just buy a guitar and play until you realize what you miss, what you wish you had, and then that’s how you know 

Chris Badgett: What about local development?

What’s the difference between using the Claude desktop app locally on your computer versus local development of another kind? 

Alex Standiford: Yeah. So that line is starting to blur more and more as time goes on. Okay. But right now the, the Claude desktop app generally feels more like a, an assist- not just Claude, but also ChatGPT’s assistant.

They– It feels more like an assistant that can kinda help you do things on your computer, right? It can open your web browser and click through stuff and do things like that. But Claude Code and Codex, which are the two primary ones that I think most, most people are using right now at least,

Chris Badgett: Cursor’s another one, right?

Alex Standiford: Cursor’s another one, yeah. I don’t even use an ID- a code editor anymore. I’m just using my terminal, and I’m just working directly inside of it from there. But that’s, that’s a, just a personal preference thing. There’s absolutely nothing wrong with using Cursor or any kind of code editor.

The way I’m designing the course is it’s around the essentials and the fundamentals on how your… It’s about your relationship with the AI more than anything. I try to avoid getting too in the thick of those different tools. But most of the stuff that I’m doing these days, I’m just using Docker.

I’m using Docker containers and Docker Compose, which I woul, to be honest, because three years ago I would’ve never in a million years said to somebody who’s never written code, “Go use Docker.” But now here we are, because AI is able to use it. It just solves so many of those problems, because what it– So many problems, ’cause what it does is it basically creates like a bubble in your computer, like a container in your computer, and it installs everything it needs inside of that container, like p- all the dependencies that your software might need for your hosting environment and all this.

It installs them all in this nice little, this little bubble, this container, and it just works. You don’t have to install all this stuff on your computer that’s special for that software. It’s all installed inside of that container. And what’s really amazing about that is then once you do that, you can now, whenever the time comes to get that on your server or on your host, you just take, you just have it use Docker too, and it uses the same container configuration.

So now you don’t have to figure out how to manually install all the dependencies on that system. You just install Docker. You say, “Here’s the file that you need to set up this system. Go use it.” And it just does it 

Chris Badgett: That’s awesome. 

Alex Standiford: Yeah, it’s so much easier. 

Chris Badgett: And one more question for you. I know we’re over.

Do you have a few more minutes? 

Alex Standiford: I’ve got nothing but time, Chris. 

Chris Badgett: We’ve been talking a lot about the, the beginner vibe coder, but you yourself as an advanced developer, I think people are curious, and I’ve seen this pattern where some of the best developers I know say things like you said before we started recording, where you haven’t personally written a line of code since January.

Alex Standiford: Yeah. 

Chris Badgett: So how do you get there a- as a more advanced developer, and what does that mean, and what do you… just tell us about that transition, ’cause that’s a big change in society- … in the world of software development. 

Alex Standiford: Yes. I remember the ex- yeah I was dealing with an existential crisis in the month of December of last year.

Yes, I really was. And it’s,

Chris Badgett: So you’re more of an orchestrator now than a developer. 

Alex Standiford: Abs- 100%. Yeah. But- it’s orchestration, it’s review. The biggest challenge has been switching- As programmers, we are trained and the environment around us is built to protect deep work, our deep work. We are trained and our brains get wired, have been wired to go deep on a problem, be deep in the woods.

We like it there. We’re comfortable there. That’s why whenever you talk to a programmer, they always inevitably start talking about the trees, even though you’re looking at the forest. You know what I mean? Because they like it. That’s where they’re comfortable. That’s where they’re cozy. Everything about a developer’s experience is that.

And if you look at company infrastructures and setups and software companies, they’ve built the entire company around protecting the developer’s ability to do that as much as possible. And that that has largely gone away. That’s been the biggest challenge for me is I am no longer going really deep on one problem like I used to anymore.

I am going a little deep, deep enough, but still needed to be able to know when I need to pay attention and go deeper on different things. But I’m doing it concurrently across multiple things. It feels like I’m spinning plates, right? Or I’m juggling. And that is not something that I personally…

That was a strength of mine because I was a developer. And before I was a developer, I was a mechanical engineer for a decade before that, and it was the same exact thing. It was leave me alone, I’m creating a 3D model, I’m not gonna be available for four hours, and I just wanna turn on my music, jam to some heavy metal, and just make something, right?

And that’s largely gone, which genuinely is painful. That really hurts. It sucks because it was so satisfying to get to build, right? There was a lot of art in that, right? And, but so the biggest shift for me professionally though, aside from the existential crises and all the other things that come with, you know, why am I here?

Why am I a developer? What is my role in this world professionally now that this agent can do something that takes me months and, a day? And a lot of that has become learning how to context switch better, right? That’s been a muscle I’ve had to train and work on. And to be honest, it’s a muscle that I’ve really needed to work on in general as an entrepreneur, as a founder, as a business owner.

You’re wearing hats all day, you’re changing hats all day. Programmers aren’t typically that great at that. And that’s been the biggest change for me professionally is learning how to do that. It’s helping me in other areas as a result, but that, that was a pretty painful transition. I remember just…

even still now, I will just end my day utterly exhausted compared to what I was before because context switching is expensive. And, your brain has to get rewired to learn how to do that 

Chris Badgett: So it’s kinda like as a pure developer in the old world, you’re a specialist, and now you’re having to figure out how to be a generalist and then orchestrate all these s- plates at the same time.

Alex Standiford: Yes, exactly. 

Chris Badgett: But, you’re smiling now so I’m gonna- Yeah … ask, like, how did you solve the existential crisis? Like, how did you cross the chasm? 

Alex Standiford: As I was spinning plates, I realized that the problem I’m facing right now is I’m spinning plates. It the, the problem just kinda elevated to another tier, so now any of my technical stuff from a developer standpoint is being poured into…

my outlet for that is being poured into, how can I orchestrate these systems to run more effectively these AI systems? How can I push that envelope to where they are not forcing me to context switch so much, where they are doing things and going longer without needing me, where I’m able to figure out where I am essential and where I’m maybe not so essential and how to make sure that whenever I do need to be in that flow state, that the flow state is still preserved at the right time.

And honestly, a lot of those challenges are the spirit of this course, right? Because that’s a lot of the stuff I’m talking about is, how I overcame spinning those plates and feeling tired and feeling exhausted and getting frustrated with it being 90% of the way there and working till way past 5:00 because I’m afraid of stopping because I don’t wanna lose my context or what’s in my head.

Those, a lot of those problems aren’t new. It’s just they’re… All the shakeup is making them appear in new ways. The, a lot of the, a lot of the work in this course has been, is very technical in nature because it is me showing and teaching, “Here’s how I’ve overcome this. Here’s how I’ve been able to minimize my own context switching, and here’s how I’ve been able to make sure that, AI is working reliably, and here’s where I’m at right now.”

Chris Badgett: That’s awesome. I feel like we’re in a, what I call a WordPress moment. Yeah. So I’m not a developer, but when WordPress came around, I could build websites and s- web applications for people, and got bigger and started incorporating real developers and designers and things into the team. But now with vibe coding it’s that same moment just like WordPress was for me.

Oh, I can build a website. Now I can build apps- 

Alex Standiford: Yep … 

Chris Badgett: and do development essentially without necessarily needing to understand every single character and line of code. Yeah. That’s what WordPress did for me in 2008 or whatever it was. 

Alex Standiford: Yeah. And it’s funny you say that. I actually think that a lot of people in the WordPress space have gravitated to AI pretty fast.

I feel like a lot of the people I’m following on Twitter, a lot of my friends and a lot of people I’ve known for a long time have really stepped into AI pretty quick. They were all for it, excited about it, and I genuinely believe it’s because they recognize that pattern, right? I certainly do.

I saw it, and I see it in the same way. I see this as a WordPress moment. I see this as a, I told myself even back whenever I first saw AI, like the first moment, I r- you- I remember the day I used ChatGPT in like 2021 or 2022, I can’t remember exactly what year, but I used it and I was like, “Oh, this is it.”

This is that once every few decades disruption that, And I was a little late in WordPress. I didn’t really come in until 2014, 2015, and there was a lot of things that were already established. I told myself, I was like, “I am not gonna be late to this party.” I am, I m- I know where this is going.

I know how this is gonna work, and I know how it’s gonna play out broadly just ’cause I’ve already seen it. I watched it happen right in front of me, and I’m like, “I’m gonna be on the front end of this wave for sure.” 

Chris Badgett: Let’s put a little hope and optimism out in the world, ’cause- 

Alex Standiford: Yeah … 

Chris Badgett: I see some…

there’s some… I’m not talking about AI doomerism- Yeah … or WordPress. What I’m more talking about is oh, WordPress is dead, or websites are dead. Yeah. The whole economy’s gonna be agents or whatever, but- Yeah … I see it like WordPress is awesome because- Yeah … and it’s still…

It’s just saying email is dead or SEO is dead. Those things aren’t dead, but it’s changing, and there’s more things around at the party. But WordPress is open source, which means that, AI can see all the code in every WordPress plugin or theme or in WordPress core that’s ever been written.

That’s a pretty cool thing. Yeah. And by the way, there’s a lot of smart people like Alex and many others in this community that love this stuff. There’s this whole community. It’s not like a small closed company. But give us some WordPress optimism. 

Alex Standiford: Yeah. So I always in general, I just always bet on open source.

Even with AI, I’m still betting big on open models, like open source models and stuff like that because I think that they’re the future in the same way that I believe WordPress was the future whenever it first came out, right? And but I think that in terms of WordPress specifically, there’s a couple things there.

One if you think back to what I was just talking about, all the de- deployment flows and all the different ways you can do that, right? It’s pretty tough to beat, or you could just upload a plugin. You know what I mean? That’s incredible to me. And w- AI has definitely made working with WordPress easier.

I’m not working in it nearly as much as I used to, as much as with it. WordPress is still in my stack, and that’s another factor. I– After everything I’ve just told you, all my capabilities, I have not written a single line of code myself, but by driving and steering AI, I have written probably a decade’s worth of code this year so far that I’m using, that I have access to.

It is… i’m not even exaggerating at all when I say that is how much more code I’m writing, right? I am that far ahead, and in spite of that, I’m still using WordPress for large pieces of my site. I’m still using it for my backend, for my Novatorius website. I’m still using it, I’m still using Lifter to manage engage, like the access controls, courses, and all that stuff.

I’m still using eCommerce. I’m still using WooCommerce for that. And that’s… it may not be the way I work with it has changed drastically, right? I don’t work inside of the block editor like I did a few years back necessarily because I found that six months ago, whenever I built my sites, which, in AI terms was an eternity I was faster at cr- producing content without the block editor.

But that doesn’t mean that’s the case now. I don’t even know, to be honest. I guess I did build a site earlier this year with- for a client where we did a lot of AI stuff, building custom blocks and stuff like that. So it’s all still there, and it’s all still relevant and still good. There’s still huge companies that are still absolutely leveraging WordPress.

And there’s no even just like Gravity Forms, for example, is another one, or Ninja Forms or the forms plugins. They have so many integrations. They’ve already solved this problem, and if you’re using something like WordPress and you’re integrating with what’s already in WordPress, you’re still solving that same problem that WordPress initially solved for people, which was, I don’t have to write as much code.

And that has always been a big benefit for WordPress, and I think that the people who are saying WordPress is completely dead because I can write and maintain more code than I’ve ever been able to write and maintain are filling the wrong bucket, is kinda how I think about it. And what I mean by that is there was a vacuum in my availability as a programmer, right?

Because all of a sudden, I don’t need to review as much. I don’t need to write as much. This whole thing that I was having to do evaporated literally overnight, all of what do you do with that time? I personally don’t wanna just write more code. I have all these other things that have been holding me back because I’ve been writing too much code.

I don’t know, finding some customers, doing a little more marketing, getting on podcasts doing the things that I know I should be doing, but I don’t have time to do it ’cause I was too busy writing code. And I think that WordPress still solves a lot of that because it makes it to where you’re able to still get the same solutions and build those customizations without needing to reinvent everything in the process.

That’s still true today in WordPress, and just because the price of that is cheaper than ever doesn’t mean that the cost of maintaining that long term is as cheap as you think it is. 

Chris Badgett: That’s awesome. That’s Alex Standiford. Go check out Siren Affiliates. It’s not just an affiliate platform, it does all kinds of partnerships.

Go check out pa- past episodes I’ve done with Alex on Siren. Go check out our YouTube video on how to build a Udemy clone with LifterLMS and Siren. By the way, if you’re… connect your AI tools and you feed it the transcript of that video about how to build a YouTube or sorry, a Udemy clone your AI tool’s gonna help you do that even faster, which is Alex’s point about accelerating speed and freeing up time to do more things.

And go check out his course. That’s at novatori.us, so Novatorius? 

Alex Standiford: Yep. 

Chris Badgett: And I wanna thank you for coming on the show, Alex. I can’t wait to see where you are in a year. It’s probably gonna be six months or even three months, we’re gonna do this again- Yeah … and the world will have changed again. 

Alex Standiford: No kidding.

Chris Badgett: But thanks for coming on. Any final words for the folks out there, or how to connect and how to get involved? And by the way, I just wanna say, Alex, one of the ways he was able to cross the chasm from developer to orchestrator is he’s always been an entrepreneur, so he’s always been spinning a lot of plates.

But now he can spin more plates. 

Alex Standiford: Yes. Yes, absolutely. That was a big thing. Yeah, I guess the only other thing that I might wanna add there is just just keep going. Things are off right now, and information is really in a weird spot. Even with my, the course that I’m launching it’s…

a lot of the information on that course is oftentimes things that can be done discovered or figured out through AI with a little bit of time. But to me, it’s all about being a curator, right? I’m curating good content and I’m bringing it together, and that is the fun- fundamental value that I think my course has, and I think that in terms of courses and course content in general, that still is true.

And information has always been accessible to us ever since the internet has been a thing, and don’t get discouraged by that and just, be a good curator and provide the right kind of content, and I think, if you find the right audience it’ll it’ll grow. 

Chris Badgett: So if you’re getting into vibe coding, put Alex Standiford in your corner.

He’s an excellent developer, but he’s also a great teacher and guide. So thanks for coming on the show, Alex, we really appreciate it. 

Alex Standiford: Yeah, thanks Chris.

Chris Badgett: And that’s a wrap for this episode of LMScast. Did you enjoy that episode? Tell your friends and be sure to subscribe so you don’t miss the next episode. And I’ve got a gift for you over at lifterlms.com/gift. Go to lifterlms.com/gift. Keep learning, keep taking action, and I’ll see you in the next episode.

WordPress LMS Buyer's Guide Download Cover Images

Know Your Value

Discover how much you can charge (no opt in required).

Leverage AI Now

Discover how to use AI across the 5 critical “hats” you need to wear to create a successful online education company, without losing the human edge

Unlock Your Potential

Discover the 5 critical “hats” you need to wear to create a successful online education company

Create a Continuing Education Business

Get the 9 step roadmap for building a continuing education business in your industry.

Organize Your Course Idea

Organize your online course quickly and easily with simple worksheets and checklists

Stop Wasting Time Researching Tech

WordPress LMS Buyer's Guide Download Cover Images

Get FREE access to the official WordPress LMS Buyer’s Guide

Get the Best LMS Software Now

Get FREE instant access to the most powerful customizable LMS software

Create and Launch an Online Course with WordPress

Discover how to launch your online course website in 20 minutes.

WordPress LMS Growth Engine

5 secrets to create, launch, and scale your high value online training program website.

Try LifterLMS Before You Buy

Discover the world’s most powerful flexible learning management system (LMS) for WordPress.