10 Lessons From Building My First E-commerce Platform

My big goal for this year was to start AND FINISH a project. When I made this decision, the project I was working on was tinysale, an e-commerce platform for selling digital goods, such as my ebook. I couldn’t have picked a more challenging project! However, after more than three months of hard work, I am extremely happy with what I have “finished” so far – I am now officially selling my ebook through tinysale 🙂

Most importantly, I learned more than I could have imagined while working on this project and sticking to it no matter what.

You Are Never Finished

As I started working on tinysale, I used Asana to organize all the tasks for each part of the project. I even had a section marked “MVP”, which included all the tasks I needed to launch. There weren’t that many tasks initially and it seemed very doable.

Well, what happened as I kept working on each task was that I though of more tasks that also needed to be done but I haven’t considered before! Soon, for every task I completed, there were at least two new tasks that needed to be done for the MVP to launch! The list just kept becoming never ending!

I’ve gotten tinysale to the point where I can sell my ebook, but there are still so many flaws with it that need to be fixed! It will never be truly finished.

The 80/20 Rule Is Absolutely True

The rule is this: the last 20% of the project takes 80% of the work. The first 80% was easy, and I’ve done it multiple times in the past. However, this project was definitely about going the last 20%! That is where I tend to give up. And this time, it wasn’t much different unfortunately. I wanted to give up soooo many times! In fact, to be honest, I did give up a few times.

The additional hurdle of the 80/20 rule is that from the 20% that you have to finish, the last 20% of that takes 80% of the work as well! There were definitely a few weeks there at the very end, where if I worked on the weekend, I would have finished the project (there were only a few ‘simple’ tasks left), but I just couldn’t get myself to actually do it. I somehow got the strength, just went for it one weekend, and finished it! That last sprint was definitely the most challenging.

The Obstacles Are In Your Mind

One of the coolest things about this project was how much I didn’t know and had to learn. For example, I’ve never worked with Stripe or implemented SSL or worked much with responsive design or made a modal before this project. While learning something new is the most fun for me, it can also be detrimental at times.

When the task on my list is “make a modal” and I’ve never done it before and don’t know how long it’ll take me to learn, it seems like a very daunting task and it’s sometimes hard to get the motivation to do it. It also requires a larger chunk of time, since I’ll have to do a lot of research.

Well, I found that as soon as I started all of these tasks, they weren’t nearly as hard as I imagined and they took a lot less time than I thought they would. The key was to just start doing it no matter how intimidating the task sounds!

There Is No Perfect

Ok, so I’m a bit of a perfectionist. And that is what I was striving for in my project. However, the more I strived for perfection  the more tasks were added to my list, preventing me from launching. I still see so many flaws in tinysale! But I’m ok with launching before it’s perfect. And, to be honest, I don’t think it’ll ever be perfect!

As the famous Reid Hoffman quote goes, “If you’re not embarrassed by the first version of your product, you’ve launched too late”.

Just Launching Is Not An Option

Tinysale is build to be a platform where anyone can sell anything. However, I will not be launching that part of the product. I’m keeping it as a selling platform only for myself. Why? Because there are some serious legal and monetary issues that I’ll need to consider if I open it up to the public.

Imagine if a popular blogger decides to sell an ebook on my platform. Well, what if she tweets and blogs and gets press for the launch, and my system goes down. Now the blogger lost a potential $100,000 in sales, and I’ll be on the hook for that. To mitigate that kind of legal risk, I would have to make tinysale into an LLC and have a lawyer draw up a very tight terms of service agreement.

In addition, as I get customers, I’ll need to keep developing tinysale and perfecting it forever. I heard someone say once that the worse thing that could happen to your product is getting one customer, and I completely agree. As soon as you get one customer, you can’t just make radical changes and delete tables in your database when you need to. You have to make slow changes while hoping that more customers will show up.

This is fine if you’re thinking of building a long term business (which I was at one point with tinysale), but if you’re just having fun with a side project, opening it up to the public just seriously raises the stakes.

It’s Expensive

Ok, so it’s not as expensive as opening up an actual physical store or something, but the costs of building a website really can add up! And while I’m trying to pay off my student loans, it’s hard to justify adding more monthly payments to my bills each month.

I’m using Heroku, and it costs $35/month to add just one web dyno. I need the dyno to make my website load at a decent speed, but it’s definitely still not as fast as I’d like to be. It would be another $35/month for an additional dyno. I also had to implement an SSL connection to enable secure credit card processing, and that’s costing me $20/month on Heroku, in addition to $10/year for an SSL certificate (yeah, I had to get the cheapest one!). I’m also using Amazon S3 and Sendgrid – so far I’m using the free versions, but if I were to open it up to the public, I’d probably have some more monthly bills to pay!

I also paid some big bucks for a designer and got a little help with some of the front-end. The costs of web development can really skyrocket if you’re not careful. For this reason, I might decide to take tinysale offline and go back to another ebook selling platform, especially if I’m not able to break even on the costs. If I’m going to be spending the money, I want it to be on something that I’ll be building very long term, not a side project.

It Will Take Longer Than Expected

When I first started working on tinysale, I did not suspect at all that it would take me MONTHS to get it to this point! All the little decisions and features really add up as well as reveal other little bugs and more features that keep adding up and up until you’re months into the project!


One of the biggest challenges when building an e-commerce platform is processing payments. Luckily, Stripe has got you covered. It was just so easy to implement my own payment form, especially when in combination with Stripe’s JQuery.payment plugin.

When I ran into a problem, Stripe emailed me back with an answer within 10 minutes! This was especially in huge contrast with Balanced Payments, which I considered using – I couldn’t even register for their platform and it took them DAYS to get back to me. It’s very rare to find a service that really cares about user experience in every single way, and Stripe is definitely one of these services.

UX Decisions Are Some Of The Hardest To Make

I was surprised to learn that coding is not always the most challenging part of building a product. A lot of the challenge comes in figuring out what to code! For example, I wanted buyers to have the ability to leave reviews and potential buyers to leave comments (not reviews) if they have any questions about the product.

So I had to think a lot about how my commenting / review system should work. Should each user be able to leave only one review? Should a user have to sign in to leave a comment or is email sufficient? Should I use the 5 star review system or a thumbs up / down system? The list goes on an on! And this is just for the comments!

It’s A Roller Coaster Ride

I LOVE building something! Every morning, I wake up and keep building. It’s just so motivating to start the day in such an incredibly productive way. Of course, programming is also a huge roller coaster, with lots of ups and downs. One week I can’t get enough of it, another one I’m stuck on a hard feature and can barely think.

The key is sticking it out and keep going, especially when you’re in the lowest part of the down!

Enjoy the article? Join over 20,000+ Swift developers and enthusiasts who get my weekly updates.