Posts

Current Affairs

How we built marketplace in our platform ?

How we built marketplace to our platform ? Before I go into our problem statement and the solution we derived, let me start with a little intro about our company. Testpress is an online examination and LMS platform. And our target audience are educational institutions who wants to conduct or coach in a modern way. Testpress was founded in 2013 and along the way many features which clients requested has been implemented, here I am going to explain how one of feature got into production. It is normal for clients to ask for integrations with third party app providers, so one of our clients asked for integration with a third party application. Since it is one of our reputable client and we care our clients, we decided to implement integration for them. At that time other clients doesn't have the necessity for this integration. So we hardcoded for this client only(well, since we use multi tenant based architecture this is possible for us. And Multi tenant architecture is another story for some other time). After this integration, client was happy and we were too. But after some time, another client wanted a different integration which is a live chat widget. We hardcoded for them too. But problem started when another client asked for integration with different live chat app after few months. We wondered if we gave the previous live chat integration as an option for all, then maybe this client would have used that one instead of buying different vendor's. We decided next feature should not be the chat integration but it should a marketplace where they can choose the integrations. Every team member had their own opinions on the marketplace architecture. Some said grand marketplace with API's for client where they can create their own integration would be right fit. Some said simple forms with enable/disable button is enough to get started. Then we settled for middle ground where we shall have a small marketplace but only we our team should create extensions for now. It made sense as we didn't want it to be too shabby also we don't it to be so grand without knowing audience response. And we believe our decision is correct because that same simple yet powerful marketplace of ours is being used till now. We were very specific about our marketplace architecture, we want every extension we create it to have certain structure and we don't want any developers to change it or ignore it. So we used python module ABC(Abstract Base Class) and wrote all common codes there. Voila, Now if any of our developer wants to create a new extension they just had to inherit from base class and pass some parameters then they have to write core functionality for that extension.With this approach we could create simple extensions within minutes. From that time we wrote many extensions for our clients and it hasn't been much easier to create new extension.