So I made an e-commerce website from scratch

Summer and Fall 2019

Let's get the buzzwords out of the way first: I used Typescript, VueJS, NodeJS, GraphQL, and MongoDB (among other smaller, less hyped tools).

One of my Irish friends had this business idea that he was positive was amazing and always wanted to try out. After our studies we got an opportunity to do it thanks to a third friend and we set off to build the MVP, Paul Graham style. As the title says, it is an e-commerce website and even though we offered people the option to pay with cash on delivery, we wanted our customers to be able to pay with their card securely and easily so we went with Stripe.

I must say, Stripe is probably the best SaaS that I've ever used: everything works, it is just as complex as it has to be but no more, it handles all the critical parts of transactions in a very elegant way and their docs are amazing (even if a bit sprawling sometimes).

Being the best programmer of the 3 of us I basically set up the entire system myself from scratch. I'm not entirely sure why I didn't go with an already existing solution, maybe I wanted to prove to myself that I could. I also tend to prefer to build my systems from the ground up as opposed to getting a complete solution and bending it to do what I need afterwards. I do that with video games as well, I tend to not use complete game engines but build my own out of only the pieces I need to keep it lean.

The front end is a Vue app written with Typescript. It saves some data to the local storage but most of it comes from and goes to the back end through GraphQL. I wrote most of the components' code but the design was from one of my partners.

The back end is a simple Express server that serves the static Vue files and exposes the GraphQL endpoint. Then GraphQL talks to the MongoDB database through the Mongoose adapter (that made my life so much easier yet made some requests very slow).

For the first few months the project generated an ecouraging amount of revenue and after a hiatus at the end of 2019 we're back at it again. You probably have noticed that I haven't linked to the website yet. The reasons are:

But now that you went through this ordeal article here it is.