Carnect provides a customised white label car hire solution to businesses that want to provide car rental without the need to maintain their own car hire system. The platform is styled to mimic the look and feel of the clients main website. The white label provides access to over 30,000 rental products in 170 countries, 20 currencies and 5 languages.
Carnect had four goals that they wanted the new site to satisfy:
Firstly, improve mobile conversions with a lightweight, fast loading responsive site while still supporting their current customer base and travel agent partners using browsers including Internet Explorer 8.
Carnect provide APIs to third parties to implement car rental services, the second challenge was to utilise these APIs for the white label rather than the custom legacy API used by the current solution.
The third goal was to allow for fast and easy horizontal scaling to support peak times, promotions and the addition of new white label partners.
Finally development and deployment of new white label partners should be quick and require little or no modification of the main code and layout.
NodeJS was used to produce a lightweight API backend to proxy all frontend requests to the private OTA API. In combination with AWS Elastic Beanstalk and Docker scaling under load is now much easier, with a single instance of the app being able to server any white label configuration. All website content is served statically from S3 and Cloudfront to ensure response speed and reserve the Node application for API requests only.
TeamCity was set up to execute code quality, unit tests, and automated selenium tests on multiple devices and browsers before deploying the application to AWS S3 and EC2.
With the modular development of NodeJS it made sense to mirror this development style for the frontend, using Webpack and ECMAScript 2015 allowed for this as well as adding additional benefits such as reducing script size by splitting into page specific and global scripts. The modular style also allowed for the use of JQuery in a component based way, with modules handling the function and rendering of various page components.
In order to keep the development of new white label partners simple a basic static site generator was created. Any content for a partner could be overridden simply by adding files, otherwise the default would be used, this included Sass variables, styles, handlebars templates, full pages, images, language files. At generation time a full site with all content in multiple languages is generated for each white label, to be uploaded to S3. Using Sass allowed for multiple layers of possible customisation by only modifying simple variables, with much more dramatic customisation possible by overriding partial style files.
"Nicholas proved an invaluable member of the 3rd-party development team on a greenfields project I was involved in. I was incredibly impressed by his enthusiasm and attitude, and his ability to pick up an unfamiliar technology stack during a high-velocity development project. His work on the front-end and node.js aspects of the project was invaluable, and the quality of his work was excellent.
I'd happy recommend Nicholas for a development role in the future, and would definitely enjoy working with again him myself."