A Complex Data Migration
We took over the website from a previous vendor that did not have ecommerce capabilities. The site was a database driven catalog, and customers placed an order by filling out a form. We were given a couple spreadsheets with the products exported from a proprietary database. There was no consistent structure, so the data required sanitizing before it could be imported into our system. We wrote a script that analyzed various fields in each row to group the product variations together into a base product.
Using Queues to Upload Product Images
The client regularly uploaded hundreds of product images through the web based admin portal. The product images had to be resized and cropped to be web ready. The existing system had a process that resized the images directly on the web server. This caused performance issues for customers on the website when the resize task used up all the web server’s resources. We deployed several cloud based services to address this issue: Amazon’s SQS Queue, S3 Storage, and Microsoft Azure’s WebJobs. All the resource intensive work was offloaded away from the web server. With this new architecture, the the web server’s only job is to upload the images to an S3 storage bucket. The S3 bucket is configured to insert a message to the queue when an image is written to it. An Azure WebJob, which is just a continuously running program on the cloud, monitors the queue. When it sees a message, it resizes the image, and stores it into a final resting place on a content delivery network.
Challenging UX Implementation
The online store sold products with varying schemas for each product. A unified template for all products was not possible, so we had to design a highly customized product page that optimally displayed each product on all devices, including phones, tablets, and desktop. The design called for a unique, responsive menu system that optimized organizing products that were drastically different from each other. Some menu items were text, while others had an image. This also needed to translate to a clean, easy to navigate mobile menu. We built a custom CSS menu based on the bootstrap framework that met the client’s complex specifications.
Custom CMS Tools
Due to the complexity of the site, we built custom CMS (Content Management System) tools to enable the business owner to effectively manage their site. We built a tool to streamline the process of importing products to the site, and automatically refresh the cache behind the scenes.
Multiple Currency Processing
The business straddled the United States and Canada, and they wanted a local, feel-at-home experience for the customers on both sides of the border. A requirement was that customers should be able to checkout in their local currency. We developed a custom checkout process that integrated with two separate merchant accounts, one processing the Canadian Dollar, and the other the US Dollar. The website used the customer’s IP address to automatically show prices in their local currency. When they check out, the ecommerce platform automatically sends the transaction to the local payment gateway. We expanded this functionality to PayPal orders as well, so that PayPal also processes in the correct currency. This was a significant win for the client, because it allowed the Canadian company to expand to the United States and quadruple its business.
Value Delivered to the Client
• Handled a complex migration of thousands of SKUs from a legacy catalog into a well structured database
• Built a sophisticated front end that was optimized to make it easy for customers to find products by using a custom made navigation menu and product layout pages.
• Multi-national Currency processing allowed the company to break into the US market ahead of its competitors.
• Utilized Queues to offload backend work away from the web server to avoid needing to purchase additional hardware.