WhoCanFixMyCar.com

WhoCanFixMyCar.com (WCFMC) is the UK’s leading local garage and mechanic comparison service, allowing drivers to post jobs and receive quotes from local garages and mechanics. The platform currently has 12,500 garages registered to the site, has processed 1.5 million repair requests from UK drivers and receives circa 60,000 new job requests from drivers every month.

Mission: Create the next version of the platform

Transformation

whocanfixmycar.com website in 2014
whocanfixmycar.com website in 2014

The first version of the website was created as a prototype, and it became difficult to maintain and scale. Our team had to implement new designs and make sure that the next version of the platform is able to handle a large number of users. It consists of the following parts:

  1. Public pages (landing, sign up, how it works, reviews, etc)
  2. Car owners space (jobs, quotes, chat with garages, review page)
  3. Garage owners space (jobs, created quotes, chat with car owners)
  4. Internal services used by the support team

1. Redesign

whocanfixmycar.com after redesign
whocanfixmycar.com after redesign

Our team received design specs for most of the existing pages. We have created a style guide that we used to build layouts for the platform. Common styles and components enforce consistency and the same look-and-feel across the service.

2. Responsive design

whocanfixmycar.com on mobile device
whocanfixmycar.com on mobile device

A lot of users of the platform were using smartphones to create jobs and communicate with garages. Therefore, it was crucial for our team to make sure that all mobile users can access all features of the platform. We focused on the following aspects:

  1. Responsive layouts
  2. Touch screen-friendly sizes of interactive elements
  3. Optimized media to reduce network traffic

3. Engineering

We used Knockout.js on the client-side to create interactive parts of the application like messager, quote calculator, etc. On the server-side we used Node.js and PostgreSQL. It took us almost 1 year to achieve feature parity and release the next version of the platform.

My Role

I joined the project as a Front End Developer and grew to Lead Full Stack Developer in 1 year. I've created most of the basic layouts and styles on the early stages of the development. I was taking care of the responsive design and my mission was to build layouts as close as possible to the design specs.

After a few months of work, I started to contribute to the backend modules as well. I used Node.js before for some personal projects and I was happy to use my knowledge in a real product with thousands of users.

After releasing the platform we realized that we have a few performance bottlenecks and I was responsible to optimize the application and database to handle ~50 requests per second. To solve the problem I've used load balancing and multiple node instances to handle more users. On the other hand, I optimized database requests to make sure that Express server receives data as soon as possible.

Process

We used code review and unit tests to improve the overall quality of the code and prevent regressions. A continuous delivery system helped us to deliver updates of the system to the users. One of my tasks was to maintain it and make sure that the platform stays online 24/7.

Results

Thanks to this project, I learned how to take ownership of an end-to-end story. I had to understand the problem and define how the solution will look like, how users will interact with the platform and how the software will behave in different corner cases.

Overall, our users positively received the next version of the platform and the project secured a new round of investments to keep growing the business. Personally, I enjoynd working on the project, we had to solve a lot of interesting problems and it was fun to work in a multidisciplinary team. I learned how to build and maintain complex systems with thousands of users. Here is a great video about how the platform helps people to fix their cars.

Next poject: OpenMRS for oncology →