Marketing Front Ends for Your MVP: WordPress vs. Flask vs. Django

This week I’ll be launching two separate Minimum Viable Products. I built the front-end marketing for one in WordPress, and the other in Flask. In the past, I’ve used Django for all of my product front ends, but this time I decided to experiment on my MVP development.

Keep in mind, for me, building a MVP means getting something going as quickly as possible. An extra day for building out a front end is wasted effort if we just want to test a market as quickly as possible.

I keep my code of my SAAS completely separate from my marketing front end. So this means my product resides at admin.myproduct.com, but customers land on my marketing at www.myproduct.com. This helps keep things separate, and keeps my marketing out of my codebase.

Remember, as programmers our main risk is finding a market fit, not solving a technical problem. So building a front end to test your potential market is a very good first step.

WordPress

WordPress is a great CMS, and has been around for nearly forever. It’s written in PHP, and has a million great, tested themes ready to go. You can find plugins for nearly everything, and you’ve got a great blog built right in.

That being said, customizing WordPress can be a bit daunting. If you want to extend functionality beyond what’s built in, you’re in for a real treat. It’s been a while since I last developed a plugin for WordPress, but learning how WordPress has decided to do things can take a while.

Also, if your designer hasn’t worked with WordPress before, it can be a bit confusing to build out a nice looking design or customization. As happens in most large PHP projects, the template language has logic built into it, and calls five or six different pages. That can be a pain in the ass for your designer to try and track down what page needs changing.

For my MVP which used WordPress, I simply bought a decent looking theme from WooThemes, and then wrote a form page with Mustache.js and Stripe to process payments and create accounts on my application.

So, a user enters form information at my WordPress frontend, and all information gets posted to my admin.companyname.com domain. It’s a simple way to keep marketing separate from my web application. If (god forbid) my WordPress gets hacked, the admin site is separate and stays up.

Pros: Easy setup, CMS for non-techies, readily available themes

Cons: Difficult to extend, Susceptibility to hacks, Designing can be difficult

Flask

I can’t think of a more fun environment to develop in than Flask. If you and your designer are both fairly comfortable writing raw HTML and CSS, you’ll have a great time building a front end out in Flask. The code ends up simple, and pages get exactly what they need, no more.

However, if you’ve got a non-technical person on your team who needs to edit the site, Flask is going to be a bit disappointing. There are projects out there that extend Flask into a more robust CMS, but that kind of defeats the purpose of using Flask in the first place.

Writing a front end in 100 lines of code that just displays exactly what you need, and does no more. With Flask-Pages you can build out a markdown blogging system in just 30 or so lines of code.

Your designer will love Flask, because building a template for Flask to use is dead simple. Unlike WordPress, which mixes PHP and logic with its templates, Flask just uses variables and a few tags to display what’s needed. It’s much less intimidating to someone who can’t code.

For my MVP project using Flask, I simply built out based upon the urls I knew I needed. Development went by extremely quickly, and it took about as much time to build out the front end as it did to set up a basic WordPress installation with the proper extensions and plugins.

Pros: Quick start, clean codebase, better for designers, flexible, low complexity

Cons: Not good for nontechnical people, Everything is built out manually, Need Python experience to get started

Django

Ah, Django. Up until a few months ago, I had only built out my MVPs using something like Django and Pinax. And it’s a great combination, because the two projects are really starting to mature.

That being said, the dream of truly pluggable Django apps seems nearly dead. It can take even longer to read and fully grok some of these pluggable apps than to write them yourself.

If you’re going to keep a separate Django project for your frontend, I suggest using one of the Django CMSs that are out there. The one that I’ve found most impressive is Mezzanine.

If you’ve never worked with Django before, it’s a great way to get started. Mezzanine is a very clean project that incorporates just about everything you could want to learn from how to structure a Django project.

But that knowledge again comes at a price. There is a bit of complexity in building out from Mezzanine, in that if you aren’t already experienced in building Django projects, it may be too much of a distraction for you, unless the built in template is good enough.

Pros: Built in CMS, Python flexibility, Mobile Compatible with Mezzanine

Cons: Complexity, intellectual overhead, themeing can be a bit difficult

Declaring a Winner

If you want to get something up and running as quickly as possible, I have to recommend WordPress. It gets up and running very rapidly, and there’s a huge user base. When it comes time to have non-technical people add marketing to your front end, you’re already prepared.

Drop in split testing, a landing page, and Google analytics, and you’re well on your way to seeing whether there’s a market for your product or not. When it gets time to build something more complicated, just suck it up. Your front end marketing shouldn’t be too technical anyways.

What About Your Experience?

Do you have a different process for building a frontend to test a MVP? Is it better? Did I miss something? Let me know bellow.

2 thoughts on “Marketing Front Ends for Your MVP: WordPress vs. Flask vs. Django

  1. Great post, love the way you explained flask and Django. I’ve been developing wordpress themes for quite some time now, and I know its sometimes a pain to work with wordpress when you want to extend the theme with additonal features and write your own custom post types. WordPress was never meant to be a CMS it was developed with an aim to make blogging easy.

    I’ve been learning python based web-frameworks lately, I’ve even used them for some of my client projects. I’ve seen that python based websites are light wieght, use minimum resources and perform quite well compared to wordpress.

  2. Your blog is fascinating.

    I’m planning to build many websites in the coming months. Some will be web apps. Some will be marketing front-ends for web apps. Some will be blogs, forums, niche social networks, squeeze pages…

    The plan is to build small (MVP) and build things up if the demand is there. WordPress is the obvious choice. With WordPress MU + Pagelines + a variety of useful plugins, I can build completely custom websites at insane speeds. And do so in a way that makes it easy to get help when I need it.

    But I can’t help but feel “bored” with the tech stack. WordPress is the superior choice for much of what I’m doing IMO, but there’s something about the Flask/Sinatra aesthetic that appeals to me.

    Maybe it’s because Flask is all code. No annoying admin screens to navigate. It’s like being a Drupal dev. Doing everything quickly from admin panels isn’t as fun as coding. And if I’m coding, I’d much rather code in Ruby / Python than PHP.

Leave a Reply to Srinivas Gowda Cancel reply

Your email address will not be published. Required fields are marked *