Hobby Local, a company promoting hobby classes in Austin, wanted an e-commerce website where an instructor can create his own profile and add classes. Each class may have multiple sessions with its own dates, time and location. A student should be able to search for classes based on keyword, category, driving distance from his or her own place, day in the week and start date. Once a student finds a class she wants to attend, she should able to register for a session by going through the e-commerce checkout process.
Red Crackle created a website for instructors to manage their own profiles, classes and sessions. The most difficult part of this website was searching for classes based on driving distance from the user's place. We had to use innovative caching techniques and cron to filter by driving distance without slowing down the site. We also integrated the site with Apache Solr search engine used for text-based search. Hobby Local site uses Drupal Commerce for the e-commerce functionality.
Hobby Local got a site which functions and looks way better as compared to their competitors. Since instructors manage their own profiles and classes, the administrators need to spend very little time on the administration side. They have got rave reviews from instructors and students alike for how easy it is to search for classes based on different filters provided.
Hobby Local promotes hobby classes and continuing education in Austin, TX. They wanted a site which could reduce their administrative work by letting instructors manage their own profile and classes. They also wanted a simple-to-use search interface where students can filter classes based on keyword, category, distance from their own place, day of the week and start date. Student should be able to register for a class by completing a standard e-commerce checkout process.
We used Profile 2 module for letting the instructors manage their own profile. The limitation of this module that one can only create one profile of each type. Hobby Local wanted a system where a head instructor could manage profiles of instructors working with him. As a result, we had to extend Profile 2 module to provide this functionality. We used Drupal Commerce to provide the e-commerce functionality.
The most difficult part of this project was calculating the driving distance of each class from every user that comes on the site and letting her filter the classes based on this distance. And we needed to do this in real time! We accomplished this challenge by making an innovative use of caching and cron. Every time a user comes to the site, we identify its approximate location (latitude and longitude) using the MaxMind geolocation database. Next we calculate the straight-line distance of this user from each class using Haversine distance formula. At the same time, we kick of a background process to get the driving distance using GMap API. We needed to do this in background so that API calls won't slow down the site. As soon as we get the driving distance based from GMap, we would replace the Haversine distance by driving distance.
Hobby Local loved this website which is way better than their competition and have got great reviews from their fans about it.