How we’re building a platform for future of eCommerce
We just launched Kamva eCommerce platform in private beta a few days ago. I like to take this opportunity to talk about what is so unique about it and how we’re going to foster eCommerce growth in Middle East.
We had to build a platform that is really simple and easy to use and at the same time, flexible enough to build up on for a rapidly changing eCommerce scene. For that reason, we had to start from scratch. Building on top of existing solutions such as Magento or WooCommerce were not going to work.
This is the process. In order to launch an online store in Iran, you have to hire devs or an agency to build you a site. There is no Shopify or anything close to that (in terms of service and ease of use). You have to spend a lot of money to just launch a site. Not to mention, there are lots of rules and regulation about how your site should work. It takes months to get a payment gateway (you need to get approval from e-Namad first).
In short, it takes both money and patience to launch an online store in Iran. But how are Iranians selling online now? If they’re not a big company, they are probably selling on Instagram. It’s all manual work! They can’t scale the operation easily so it’s mostly very small home-grown businesses that are helping to pay the bills. that’s all about to change.
We are based in Iran and will launch our platform to Iranian market first. eCommerce is growing really fast in this country. In fact, the market grew 16% in amount of online transactions and it’s expected to reach 20% growth this year due to Iran’s rapid infrastructure improvement and growing internet penetration. The market size is $17.5B USD. Kamva will get a big share of that market and will expand the market itself by making the process easier.
Let’s get a bit technical
Kamva eCommerce platform is consist of three different apps, Shop Admin, Shop front, and API.
We designed it to be really easy to use. The shop admin app and shop front app is written in Backbone.js. They are single page application (SPA) which have two important advantages. First, when the app loads, it’s really quick to navigate to other parts of the app. Instead of loading the whole page, Backbone just loads the data it needs from API and loads assets from CDN. The second advantage is flexibility. It allows us to change and add features really fast. Testing is easier too. Since it’s a single app that serves all users, we can launch a new app and move some of the customers to the new one. This flexibility was crucial to us. In this day and age, you need to adapt to ever changing landscape of ecommerce or you’re dead.
We had to build robust APIs to work with these two SPAs. This will allow us to launch our mobile apps and integrate with other services quicker. It also allow us to expand to other markets fast. Each language can have it’s own SPA (e.g. Shop Admin app in English would be a separate app).
One thing was really important for us in Kamva, we wanted to build a platform that helps our customers sell more. For that reason, we are giving away Elasticsearch on every plan. Elasticsearch is the latest search technology that allows their customers to find the product they want faster and easier. We have faceted search to filter products based on brand, price, and any other attribute the shop owner defines. This is not something Shopify or any other eCommerce platform have on their cheapest plan. We believe success of our customers will ultimately help us grow. For that reason, any feature that helps them sell more are included in every plan.
Both Elastic and Mongo servers can be scaled really fast to accommodate our need. In order to be truly scalable, we used Flynn. It’s a unified platform that fixes everything that’s wrong with the process of deploying, scaling, and managing applications and databases. It includes everything you need from containers and service discovery to database appliances. So you take advantage of the best new technologies without gluing a new stack together yourself. Flynn allows us to use the power of Docker whilst we can save money. Flynn can also be used to include test and deploy workflows with zero down-time. Continues Integration is easy to implement too. Flynn is like having your own Heroku.
We used a combination of Amazon S3 and Cloudflare CDN to handle shops static assets (it’s mostly images). Cloudflare does clever things to optimise image delivery based on connection speed and device.
The average internet speed is very low in Iran, so we had to use another local CDN to host SPA assets (javascript files, templates, css files). The Shop front app sends first request to API to get shop details and configs. Our shop app is just one instance that fetches all the settings, themes, and shop data over API. It was a challenge to optimise this app to be quick. We wanted to build one SPA apps for all shops and get all relevant theme files as it loads. This architecture allows us to change any shop and point it to different clone of this SPA app. We are going to use this flexibility for enterprise customers. We can add any feature for them since it’s a separate application hosted on Flynn.
I am very proud of our small team for pulling this off. Watch this space for future updates on Kamva.