Wouter Smet

On web startups, technology, music and growth

Growing web startup Tadabon part 2 – building a minimum viable product

Tadabon is a platform that enables small/medium merchants to offer printable gift vouchers onlineIt’s a spare time project intended as a learning experience, and I’m trying to document it as I go (with some delay though), however good/bad it turns out. Timeline of this post: nov-dec 2013. Previous part.

Allright, so I got a plan: build an online gift voucher site. Time to build it! Luckily I have lots of very relevant code lying around from my previous project, so I decide to make the most of that. Since this is about growing a site as much as it is about simply creating it, The goal is to get a ‘minimum viable product’ out there as fast as possible, and iterate from there based on what I learn from talking to my target audience.

Building the minimum  viable product

Design: bootstrap-based template

I generally suck pretty terribly at design (both conceiving it and writing decent CSS), so I take a heavy short cut and buy this nice bootstrap-based template which has an admin backend, a corporate frontend and an e-commerce site for 10 bucks. It includes even a blog layout! Exactly what I need for my project, perfect.

Screen Shot 2014-04-30 at 21.48.33

Plenty of great cheap or free ‘admin’ or ‘e-commerce’ or ‘corporate’ site templates (Tadabon required all three)

Code: home-grown PHP MVC framework

For the code framework, I completely reuse the small MVC one I self-built and created and evolved over the years, including for MyShoppingTab and Barlisto. Its template engine is (a by now heavily modified version of) QuickSkin, and the framework by now  has all the usual stuff with straightforward URL routing, database wrappers, controller class inheritance so that rights and stuff like that is easily shared, easy methods for storing and retrieving from a cache, utility methods for manipulating arrays, generating random strings, doing cURL requests, a complete debug log of queries and actions to view on each page what is going on, etc etc.

I’m sure it’s messier and hairier than many ‘prefab’ MVC networks, but I know my way around it really, really well. Another time saver.

App: reusable stuff from previous projects

Apart from the PHP code framework, other ‘app-level’ aspects already ready and easy to port were:

  • User signup, login, and forgotten password reset.
  • User rights, making the difference between users, admins, and any other ‘roles’ a user may have, and the accessibility with certain secitons that go with it.
  • Sending automated emails: signup confirm, password reset, notifications, to myself when an error or otherwise important event happens…
  • An admin backend to manage users, shops, and any other ‘objects’ relevant to the app.
  • Code for easy ‘scaffolding’ all the template+controller+model php code to do ‘CRUD‘ operations on any type object.
  • A minimal CRM to keep track on leads, which stadia they are in, which actions where performed on them, and who of the admin users ‘owns’ them.
  • A system of ‘shops’ with variable products, prices, names.
  • Logic for validating and storing images.
  • Code to make it easier to work with various libraries and APIs: payment gateways like PayPal, connecting with Facebook, generating PDF files on the fly…
  • … I’m surely forgetting a lot.

… All in all, that’s a lot of stuff if you add it up! None of this is overly hard or complex, but if you’d have to write it from scratch I imagine it adds up.

Many of these things are necessary, and others are a definite plus for even a moderately complex web app, and typically come out of the box many PHP frameworks (things like Zend or CodeIgniter or RubyOnRails), but again, the great advantage is that I know my way around them so well so customizing for my first version gift voucher platform can go relatively fast.

Screen Shot 2014-04-30 at 21.46.15

It’s convenient to have something like this out of the box

Defining the product: what not to include

What has to be in there is pretty straightforward: something that allows a merchant to sell vouchers online, and to dynamically add and manage the elements needed for such a page. Actually, as seen above, that by itself already has quite a lot of elements just to function and be secure and usable.

A lot of fun and piece of mind is to scratch out what is not gonna be included, even though MyShoppingTab already has it, and it’s pretty natural to think how it would add value and growth potential. In this phase ‘NO, NOT ESSENTIAL’ is a great way for peace of mind, and the answer to 90% of feature ideas:

  • No multiple languages. This project will focus exclusively on Flanders and all text will just be in Dutch. Bye complexity.
  • No fancy visual customization options. Each merchant page will look visually very much the same, as will each gift voucher. Bye complexity.
  • No way of paying me online. If for some reason I want your money in this early stage I’ll just make an invoice in Excel or whatever and email it over, and go extend your trial date in the database. Bye complexity.
  • No way of offering anything beyond a coupon for a certain amount of money.
  • No different ‘pricing plans’ based on features.  Less complexity.
  • Generally no built-in growth/viral mechanisms like easily inviting others, sharing on Facebook/Twitter …
  • No charts in the admin backend that show how many signups or whatever I’m getting. PhpMyAdmin will do the trick.
  • No big money/time investments in site performance, like paying for a CDN or a web host or server where I can install Memcached, or even build scripts that minify my static files. Less complexity. (code performance would be silly not to do as well as possible from the start though)
  • No Facebook login or integrations to put your store in Facebook or anything like that.

Now, just to be clear, by the time I’m writing this  pretty much all of these features are in TadaBon (and others on their way), but none of them were necessary for the first version to provide its core value: a way to sell a printable gift voucher online. If I cannot get that part to work and convince somebody it’s useful, who cares about Facebook login.

Online marketing groundwork

Writing the first version working off this base actually happened in parallel with gathering initial user feedback (as a nice change from just coding). Things like coming up with a project name and doing the other ‘online marketing groundwork’ like building a project site and setting up the right online marketing tools, but I think that’s worthy of a blog post of its own.

The same theme as above will continue for the presentation/marketing though: the most important part is getting something out there that works, so if it’s ugly and poorly written, I can live with that. As with the app functionality, the goal is not to impress, the goal is to launch.

After all, real artists ship.


Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*