Thursday, 01 January, 2015

Case Study: Designing a Bespoke ASP.NET Website.

Implementing an online service booking system for a regional car dealership.

Preamble

A client asked for a Microsoft ASP.NET website solution to enable drivers to book their vehicles in for servicing at their local garage (actually a regional, franchised car dealership).

Car Website wizard form step 1

Requirements

The brief called for a form-wizard user interface allowing drivers to step through each stage of the booking:

  • Taking their car registration and showing appropriate options for their make and model.;
  • Taking their postcode and showing the distance to their nearest garages with the directions;
  • Offering a variety of service levels, price structures and optional extras;
  • Displaying a calendar showing available services dates, times and courtesy car options;
  • Displaying a booking summary.

Once completed an email auto-response with all the booking information would be sent to the client for their records.

There was also a requirement for an administration back-office, where the garage would not only be able to review bookings but also be able to set prices, tax rates and apply vouchers and discounts.

Available Options

The hardware and server infrastructure were decided by client's preferred set-up: a Windows Server, running Internet Information Server with a Microsoft SQL database. There wasn't expected to be high volume usage of the website so I wouldn't have to worry about  load balancing, file sharing and or scaling the website.

To look up the car registration we researched a number of solutions including: DVLASearch and Experian; it would be important to use a provider with high quality data.

The mapping tool needed to be able to help find the nearest garage to the driver's given address, offer directions and provide the distance between two points. I investigated Google Maps, Bing Maps and OpenLayers. OpenLayers' is a free, open source, alternative which looks very capable, but has a steeper learning curve and less supporting documentation.

Finally there was a choice between writing a bespoke back-office or using a .NET compatible CMS (Umbraco, DNS, SiteCore); for a project this small with fixed displays and no "document" type page layouts a CMS could be overkill.

Car Website Wizard From Step 4

The Solution

The budget and timescales on this project were fairly tight, so as the customer requested an ASP.NET application I provided an ASP.NET C# MVC website using simple session management to keep track of user's short-term booking information. The target infrastructure wasn't immediately available so I set-up an environment on Windows Azure mimicking the intended configuration and deployed to the live environment once it was ready.

For registration lookup we went with Experian API, based on the price and quality of the data. A decision we never regretted. Their documentation, test environment and data was of a very high standard. As for maps, I went with the technology I knew and trusted: Google Maps. The price was right for the light use we expected and the documentation is slightly more complete than Bing's.

In the end I provided a simple, bespoke web interface for the administration portal, which was really just a glossy wrapper over the database. I felt the project wasn't a particularly good fit for a CMS, layout and content were fixed, and it would have required quite a lot of work to integrate one for the small amount of benefit it would have offered.

Conclusion

This was an enjoyable project to work on and I really liked the end result. There were some tweaks required to the website copy from time to time but in hindsight I think the effort in changing these was much less than would have been involved in incorporating a CMS and ultimately cost the client less.