← Back

Green Kiwi Games

The story of Green Kiwi Games as a minimum viable product: a personal project to validate an idea, learn the MEAN stack, and build iteratively.

EntrepreneurshipLean Startup

Green Kiwi Games
Green Kiwi Games ©

Green Kiwi Games is a project I’ve been working on little by little over the past few months. It’s what we call a minimum viable product (MVP): a product or project that shows the essence of an idea and is put out there to validate its value proposition—that is, to find out whether people find it useful.

If there’s one thing I’ve learned over the past ten years—and I’m not exaggerating—it’s that your day-to-day professional life eventually narrows your skills to a set of technologies, naturally the ones you use at the company you work for. That’s not a good thing, especially when our profession changes so quickly. Still, technology in general and software in particular offer tremendous possibilities, and the number of established technologies and mature stacks means you have to keep up if you don’t want to become more obsolete than the T-800 from Terminator in a few years.

For me, Green Kiwi Games has been a way to explore the MySQL + Express + AngularJS + Node.js stack in depth (what’s usually called MEAN, but without MongoDB this time…).

I’ve briefly discussed before how to approach entrepreneurial projects from a software perspective, a field where I’ve had successes as well as failures. It’s a broad subject, and unfortunately many projects fail not because they lack a promising idea, but because of how the project is executed and a lack of discipline in carrying it through over time. Good execution, persistence, and discipline at work—that’s the recipe, in my opinion.

In any case, it all starts with an idea that encourages us to keep going because, in some way, we believe in it. But how can we tell if other people will find it useful too? Certainly not by just talking about it, but by creating something that demonstrates it, something people can touch and evaluate. That’s the idea behind the minimum product.

So how did the idea come about, and what is Green Kiwi Games? Some time ago, I met people who made their own card games, but it took tremendous effort because they didn’t know how to use any computer tools and did everything by hand. Why not set up a website where users could upload images and the web application would generate a print-ready PDF of the cards? Simple, nothing out of this world. A good idea should be explainable in just a few words. Innovation isn’t about creating products that belong in science fiction; you can innovate on simple, ordinary things too. In fact, most innovation belongs to that latter group. We tend to mythologize innovation.

That’s Green Kiwi Games: a simple portal that lets users create card games very easily, almost with a single click. In a world increasingly dominated by do-it-yourself, I discovered real communities devoted to making their own card games and distributing them outside the usual commercial channels.

But there’s more to it: I also used this small project to dive into technologies I’m passionate about. I can say I’ve worked with all the components a full-stack developer needs to master, as described below.

Here’s a very brief summary of the components I’ve used, at least the most relevant ones:

  • Of course, Node.js. Along the way, I lived through the eventual integration of io.js and the creation of the Node.js Foundation, wonderful news for those of us who love this environment.
  • Express to build the web infrastructure, with countless related modules that integrate well.
  • AngularJS for the front end.
  • Lots of unit tests, run with Mocha, and Chai as the assertion library.
  • Lodash, which has saved my life when it comes to writing more readable code. The work by the people behind this library is impressive.
  • FabricJS on both the front end and back end to build the cards.
  • ImageMagick for image processing.
  • Redis to manage user sessions and store useful, relevant information without overusing the database.
  • Amazon S3 for storing large numbers of images and the final PDFs.
  • wkhtmltopdf to create PDFs containing the cards.
  • Grunt as a task runner to build the project for deployment.
  • Deployment on DigitalOcean with nginx and a certificate purchased from Namecheap.
  • And many, many more packages and libraries.

This project has also let me explore everything related to web performance and security—a fascinating subject that many web application developers neglect, and one with a huge commercial opportunity ahead: optimizing all project assets, lazy-loading images only when they appear in the browser, minifying files, optimizing JavaScript, reducing the number of requests, protecting against common attacks, and so on. I really enjoy this subject, and I’m actually writing some practical guides for publication in 2016.

What’s next? The possibilities really open up after you create the minimum viable product. The MVP is a first step for validating an idea; after that, you need to gather as much feedback as possible to improve it, pivot on some concepts, or throw the idea away and move on. That’s how it works, but the good thing is that we can test ideas methodically without constantly reinventing the wheel or putting too much effort into them.

My main interest in Green Kiwi Games is to help that community of card-game creators and encourage the activity. I also want to experience the development of a real project with these technologies from the inside, rather than sticking to simple articles that show you only the tip of the iceberg. Above all, I want firsthand experience in how to build this kind of project so it can scale in the future if it reaches thousands of users.

If you want to learn a technology, the best way is to build a real project with it.

I’ve focused on what I consider essential for the core idea. The next steps will be:

  • Make the website responsive. I know there’s a mobile-first approach, but I initially set it aside to move toward the MVP.
  • Add features little by little based on the feedback I receive. I like AccuRadio’s approach: if you often use its service to listen to its wonderful music collections, you’ll notice that it gradually adds small details and improvements, very subtly.
  • If the project takes off, naturally I’ll need to prepare it for commercial operation with a sustainable business model. I’ll certainly count on the company I work for to help with that. Some gurus believe a project should generate revenue from day one, although this is a personal project that lets me unwind by working on things I enjoy. If the project or its future evolution succeeds, revenue will come one way or another.

One important thing I’ve learned from Green Kiwi Games is the power of small tasks sustained over time: a little here and there, a few hours on weekends, reading related articles in the bathroom (…). In short, any moment will do. Over time, you’ve accumulated hundreds of tiny tasks that add up to a mature project ready to launch. The satisfaction of a final deployment that makes it available to everyone is almost addictive.

I always insist on this: if you work for a company, the best way to improve your work and become an intrapreneur is to create personal projects in areas you don’t work with often. The skills you learn in those projects eventually carry over into your day-to-day work at the company, so everyone benefits.

One or two personal projects a year, in addition to the work that takes up your professional time if you work for a company: that’s always been my goal, and, paradoxically, it’s helped me improve my work at the company substantially.