My BP Station
mybpstation.com

BP (British Petroleum) Driver Rewards website exist to help United States customers keep track of their driver reward discounts earned at the pump. Find the nearest gas stations by zip code. Take advantage of seasonal promotions and learn more about BP Fuels. The primary goals of this website are:
- Drive new BP Driver Reward member sign-ups
- Promote BP Fuels
Full Stack Developer Role
While employed at Gyro, I had the privilege of working with BP and other 3rd party vendors to make this project a success. My role as a Full Stack Developer is outlined below:
- Back-end and front-end development of the public and member only sections of mybpstation.com for both mobile and desktop experiences (not including the Station Finder). Leveraged the CakePHP MVC framework, HTML5, CSS3, and jQuery to build the site.
- Back-end development of the Driver Rewards registration process, account management, member driving profile, password management, driver reward status, and historical transactions using a 3rd party Loyalty Rewards API.
- Back-end and front-end development of the Give a Reward promotion application. The application allowed current Driver Reward members and BP VISA cardholders to build an email with a live preview containing a custom message to “Gift” 25¢ off per gallon up to three of their friends or family members.
- Back-end and front-end integration of the VISA Offers Platform. This integration allowed Driver Rewards members to link up to 5 BP VISA cards with their Driver Reward account, unlink current VISA cards, or completely un-enroll from the program.
- Back-end development of the BP Station Finder management tool that allowed BP representatives to import or update BP Gas Station locations.
- Worked with 3rd party vendors to implement conversion-tracking scripts.
- Include 301 redirects to redirect traffic of the old site to the new site upon launch.
Challenges
- The site itself was hosted on 8 servers with a load balancer and a global traffic manager. The main challenge I had was deploying code to production and staging environments. Debugging code proved to be difficult and any code change I have made required the code to be redeployed and tested. To circumvent the repetition of uploading code to each server, the team setup automatic deployments each time code was committed to an SVN repository.
- Learning the 3rd party Loyalty Rewards API and the VISA Offers Platform API proved to be a challenge. Both parties provided Functional Design Documents and were available for questions or issues as they arose during the development process.
- One of the requirements of the Give a Reward application development was to send data to a 3rd party vendor for end-to-end testing. I used a PHP library called Faker and wrote a CakePHP Shell script that would seed over a hundred records of data that were sent over for testing.
What I Have Learned
- I understood the importance of a Functional Design Document and written use cases. They were detrimental in the success of this project and would never recommend starting a large-scale project without them.
- I learned what different roles the load balancer, global traffic manager, firewall, VPN tunnels played in server security, disaster recovery, and load balancing.
- I rediscovered how powerful the CakePHP framework is and the importance of why an MVC framework was important for this project. It kept the code organized and made it easy to working simultaneously with my fellow colleagues.
- I learned how to leverage node, npm, and gulp.js to concatenate and minify all front-end code.
- I discovered a tool called BrowserSync that helped me author my CSS and JavaScript code while seeing the changes live in multiple web browsers at once.