VoiceComm
Date
2016 - 2021
Technology
- PHP 5.3 to PHP 7
- PHPUnit
- Codeception
- Selenium
- Twig Templating
- Bootstrap 3
- Angular JS
- Composer
- NPM
- Docker
- Percona
- Redhat (RHEL 6)
- EDI
- Cloudflare
- SOAP Webservices
- Restful Webservices
Description
When I first started working at Fivebase in late 2016, VoiceComm was my first client. VoiceComm was using a custom-built ERP platform built initially with an old version of PHP and since updated to PHP 5.3. I helped complete the update to PHP 7. VoiceComm also had an existing SOAP API that was extensively used by their clients that I maintained and improved. I also helped maintain the frontend, Endless Aisle, VMI services, and a bespoke warehouse management system.
While working with VoiceComm I successfully made the case to the client to make system and process improvements. I implemented version control (Git) and went on-site to VoiceComm to train their team on how to use it. I later implemented a basic CI/CD pipeline using the Git repository for some of the projects environments using Bitbucket Pipelines. I also noticed that maintaining the codebase and ensuring everything was synchronized required a lot of effort. VoiceComm had several site variations (for example, dropship resellers had their own site) which required multiple implementations for the same code. As a result, I had worked on standardizing the codebase, so that they could eventually be merged, and moving some of the code to microservices that was used in multiple locations. An effort to create automated tests was also started and I had created automated integration tests to ensure that the shipping services functioned normally.
A significant blocker to the backend upgrade was the extensive use of the mysql_* procedural functions. I had to refactor the codebase to instead use a PDO object that I had written to make refactoring straight forward. During the upgrade we ran into an issue where the multiple connections would be instantiated and the database would either run out of connections or terminate an existing necessary connection. I had to refactor the codebase to use a singleton pattern for the PDO Facade to ensure that only one connection was ever instantiated and introduced keep-alive to ensure that the connection was not terminated. Changes such as these eliminated issues such as SQL injection attacks, improved the overall security of the system, and resulted in significantly improved performance.
I also handled the implementation of several integrations and features. I implemented a new EDI integration to communicate with clients and vendors regarding stock levels. I implemented a FedEx microservice that allowed VoiceComm to communicate with FedEx to generate shipping labels, track packages, and estimate shipping costs based on box dimensions. I also added support for Hazmat shipments to the existing UPS integration and extended this to FedEx. I also created a method for VoiceComm to generate dynamic Authorized Reseller forms (ARP) that consolidate the various questions the selected manufacturer requires into a single form and allow customers to apply once.
Towards the end of my time working with VoiceComm, I had helped work on their new 3PL and 4PL service offerings and extended the existing code to support this functionality.