How and why we created Shopunity

Finally, after 6 months of testing and bug fixing we came to launching our beta version. Actually we have been working on Shopunity ever since we came to OpenCart - 5 long years ago. The idea came to us right away - how can we deploy our modules faster. 

Because OpenCart is pure MVC, all our extension related files were scattered around the system and every time we wanted to patch a new release, we had to collect them all around from the OpenCart root folder.  

I know, I know - what about GitHub or any other version control. Well, back in those days GitHub seemed to be too overwhelming and the rest too outdated. Also we didn't create huge extensions and using a version control system seems overkill. 


We wanted to make our life easier 

We quite quickly realized that we needed a simple tool for deploying our releases. So we came up with an XML file, where we would write some basic info and all the files that were in our module like so:

<extension>
    <id>D Module Installer</id>
    <type>module</type>
    <version>1.0</version>
    <mbooth_version>1.1</mbooth_version>
    <author>Dreamvention</author>
    <files>
<file>admin/mbooth/xml/mbooth_d_module_installer.xml</file>
<file>admin/controller/module/d_module_installer.php</file>
<file>admin/language/english/module/d_module_installer.php</file>
<file>admin/model/catalog/d_module_installer.php</file>
<file>admin/view/template/module/d_module_installer.tpl</file>
    </files>
</extension>
This is actually the code of our first XML file, that we soon started to call MBooth (aka. Module Booth, Module Manager)

We eventually created a database of all our modules and where they would be located and would fetch the latest version by compiling the files based on the XML. It was a very simple process, yet it solved our headache. 


We needed dependency support

And we started to roll out modules. One after another. It was a blast. Ajax Quick Checkout, Social Login, Ajax Search, DreamWhite, Parallax Slider. We could easily update a version and have it shipped immediately.

Quickly we noticed that we had the same code over an over. in some point of time we got into NodeJS and simply fell in love with NPM. Later - Composer. So we new what to do. We added a feature called "Required" to our XML and specified which extension we needed for our main extension to function - dependencies. 

And it worked. When a client would install a module, it would request all the dependencies and install them in the backend. Developing became even simpler. We could now reuse our own code. 



We wanted Github and Bitbucket to work with Shopunity

At some point we realized the we wanted GIT after all. Not for all modules but for the most of them we had Bitbucket already. So we created an integration with these services to update the modules on the Shopunity server after every commit. And now we simply work on our local machine, commit our changes and click submit to Shopunity service. The process became straightforward and simple which gave us a boost in development speed. 

Thanks to dependency and git support we released Blog module, Ajax Filter, Visual Designer, SEO Module and many more. All of these extensions are quite complex and have quite a lot of dependencies. 



At the end we added testing and licensing. 

We realized that we have created a complex system that we could use not only to develop but to allow customers to install, update and delete extensions. So we Developed the Marketplace and Shopunity module exactly for that. Now anyone can install one Shopunity Module and get access to all our modules and libraries. 

Installation is extremely simple - just click install. Updating as well. Even deleting an extension is also a click away. We loved how easy it was for us to develop and for our premium clients to install and try. So now we opened this to the world. 

We also implemented testing. Every time one of our developers submits a module, we have a script testing the module for issues and if that test is passed, we have a real person installing an validating that the extension works as promised. Every version passes these tests. This reduced the amount of bugs in our releases and allowed our developers to submit their modules faster.



We invite you to join our Developer Community

Everything we did - we did because we actually needed it. We didn't run any surveys - we didn't have to. Shopunity made our life easy and it can do the same for you. If you would like to join Shopunity and become a Hero (thats what we call our developers, since Shopunity gives super powers... eh, and its more fun that way) please send us an email to info@dreamvention.com or send us a ticket at https://dreamvention.ee/support and we will get you started. 


More to come... but for now relax and enjoy some music :)