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 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
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
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.