Docuevid - Personal Project

(React, Node, Express, Flux, Redux, LESS, Bookself.js ORM, MySQL, ES6/7, Redis, YouTube API, Vimeo API, Bootstrap, OAuth) was born out of my need and obsession with the organisation of information. I really enjoy watching 1+ hour long YouTube videos on various subjects, from computer science, to world history, but I often have trouble later recalling important facts, names and dates, that may be key to understanding of a particular subject.

This frustration led me to the conclusion that I needed to build a tool that would allow myself, and others to attribute key pieces of information to specific points (timecodes) within a piece of video or audio content. This would make it possible to make meaningful, organised notes against a video and easily locate those key points.


At Which? I was responsible for the development and maintenance of core sections of their consumer facing website. I utilised a wide range of modern JavaScript technologies including React, Node, ES6, Webpack, Mocha, Chai, Sinon, Enzyme, SASS, PostCSS and Eslint to successfully migrate their legacy Cars and Money subsites from Ruby on Rails to server-side rendered React.

I collaborated with both internal / external teams, company stakeholders, business analysts and UX / designers, via peer reviews, pair programming and sprint planning, to build scalable, maintainable, reusable, unit tested React components, shared utilities and business solutions.

I also worked closely with fellow engineers to implement best practices and coding standards, provided mentoring to junior team members and assisted (via pair programming) the recruitment of several front-end developers.


Booster (React, ES6, LESS, SASS, Jest, Gulp)

The Purpose of Booster was to provide an optimisation tool to help Social Media and Content Marketing teams better utilise their time and budget, by empowering them to make better informed decisions to achieve the best results for their campaigns.

Its purpose was also to help campaign operators efficiently experiment with the packaging and targeting of content in order to find the right ad for the right audience.

Task: My role as front-end engineer was to build and maintain the user interface and work closely with the product owner, back-end engineers and the UX / design team. This put me in an excellent position, as I was not only instrumental in the design of back-end APIs, but also in the UX process, where I was able to put forward ideas and implementation details that may have been overlooked.

Website (Node, Express, Handlebars, LESS, Grunt, AWS)

As part of the Beamly web team I was responsible for delivering numerous features as well as ongoing maintenance, analytics and general housekeeping.

User Notifications (Node, Express, Handlebars, LESS)

Task: Create server and client side logic for displaying, viewing, updating and deleting various user notifications relating to user Likes, Posts, Replies and Invites.

Analytics Portal (Backbone, Underscore, jQuery, Handlebars, LESS, AWS)

Task: Build and maintain a web application that delivered reports to company stakeholders in the UK, US and Australia, regarding user engagement with the website, native apps and widgets.

Stickers (Node, Express, Handlebars, LESS)

Task: Create server and client side logic for displaying, viewing, acquiring and posting stickers.

Text Polls (Node, Express, Handlebars, LESS)

Task: Create server and client side logic for displaying, viewing and participating in user created polls.

Newsround (Node, Express, Mocha, HTML, MySQL, AWS, MailChimp/Mandrill)

Newsround was a Node.js based service, responsible for delivering weekly email newsletters to over 300,000 Beamly users in the UK, US and Australia.

The service would run over 24 hours processing approximate 600,000 users in batches, performing filters to remove users that didn't meet specific criteria.

It would communicate with several other in-house services to obtain the necessary data and build email newsletters tailored to each individual users based on their Beamly profile.

After each batch had been sent, the service would request the next batch and perform the previous steps continuously until all users had been processed.


During my 5 years at Datadial, I worked on over 25 websites, many of which were built from the ground up using our in-house e-commerce codebase and CMS.

Quite often, bespoke functionality had to be added to each website, which would mean additional work within the sites database, CMS, domain and data access code as well as front-end HTML and CSS.

Here are just a few examples of my work during my employment at Datadial:

Marvic Textiles (VB.Net, ASP.Net, HTML, CSS, JS, SQL Server)

Bannisters' Farm (VB.Net, ASP.Net, HTML, CSS, JS, SQL Server)

Design 911 (VB.Net, ASP.Net, HTML, CSS, JS, SQL Server)

Splendiferous (VB.Net, ASP.Net, HTML, CSS, JS, SQL Server)

SEO Stats (VB.Net, ASP.Net, HTML, CSS, JS, High Charts, SQL Server, Google Analytics API)

SEO Stats was an in-house analytics web application that I created to deliver tailor-made up-to-date statistics and charts for our clients.

This app significantly improved the productivity of our SEO team by automating many of their daily tasks, giving them the ability to deliver their client reports with minimum of effort.