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, but customers land on my marketing at 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 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 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


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


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.

Avoiding the Red Queen’s Race

In the 1740’s , indentured servitude allowed people to work 4-7 years of their life in exchange for an education and the tools necessary to build a life for themselves.

Fast forward 270 years. Now we’ve got 30 year mortgages, income taxes, property taxes, death taxes, capital gains taxes, and student loans.

These are all weapons of mass indentured servitude.

By manipulating raw human emotions and hiding true costs, we’ve gotten much better at convincing people to work at running in place for longer and longer.

But at what point does the friction built into the system become so much that it feels as though we can’t make progress anymore?

In Lewis Carrol’s Alice In Wonderland, the Red Queen asks Alice to join in a race where you have to run as fast as you can to stay in one place. You can’t help but ask yourself if there isn’t a modern corollary.

So, how can I make sure I’m not running the Red Queen’s Race right now?

As an entrepreneur, I define my job as a wealth generator. Everything I do must take from a pool of limited resources, and end up creating more wealth from the other end. If I’m not creating more net wealth, I’m failing.

Notice I didn’t say my job was generating money, or creating profit. Instead of going the traditional capitalist’s route, I’ve decided to use wealth creation as my personal measuring stick.

In the beginning, I used money as my motivator. And money was a horrible motivator. The things money can buy are great, but for me personally, they simply weren’t a good enough carrot at the end of my stick. I’ve been around money, and I know it really doesn’t change much.

So I now measure wealth generation in the broadest sense.

How much wealth am I contributing to the world versus taking out?

And in doing so, I’ve come across a radical transformation in myself. Despite any outward circumstances, I now feel inwardly wealthy, as I look and measure myself in terms of wealth contributed.

That takes care of the motivation to keep running, but what of the results from what seems like running in place?

Learning to Ignore Your Present Results

When I started building businesses, I took great comfort in that statistic that 9 out of 10 businesses fail within the first year. For me, it seemed like I was only 10 tries away from a winner, and building a lasting contribution to society. Five years later, I now realize it’s absurd to assume doing something important would only require 10 tries. Depending on the level of difficulty, a number like 1,000 to 10,000 is probably more accurate.

Like Thomas J. Watson of IBM said: “If you want to succeed, double your failure rate.”

One thing I consistently see people getting hung up on is their expectation of results. I can relate, because I’ve only become aware of it very recently.

Top performers become indifferent to results.

Consider: If you wanted to become a world class writer, how much time would you give yourself to develop the skill, starting from zero?

A top performer’s answer should be as long as it takes. However, most people get caught up in looking for results, and run from one project to the next, never really following though to completion on any one thing. And we’re all guilty of this.

But I Need Results Now!

I’d argue that this is the core reason people get stuck in running the Red Queen’s Race. We get caught up in focusing on our immediate needs, and never take a longer term approach.

So how do we pick, and how do we stay focused? I’m already old, I don’t have the time to invest 10 years in developing skills to be at the top of my chosen field. I need results now!

This short sightedness is really one of the greatest reasons I’ve seen for the destruction of wealth.

Consider the housing prices in 2006. We all knew that houses would be unaffordable for just about anyone. And yet everyone wanted to refinance and get access to all that hypothetical equity now.

Taking the long term picture and minimizing our financial footprint are boring exercises. They don’t change anything radically, and yet they are precisely what builds the wealth we all dream of having.

But we still see bubbles within the marketplace, and we still have kids taking out massive loans for schools that don’t guarantee a real income. We’ll continually be hustled and dragged down from every which way if we don’t become conservers, and manage to limit our real needs.