Overview
Workout Spots (D7.x) allows you to search your community for places to workout, register for classes online, and connect to the people you workout with. The site is aiming to bring the Open Table model to the fitness industry, by offering local search, and an extensive class management and registration platform for businesses and trainers. Workout Spots contains fitness facilities of all types; gyms, yoga, pilates, dance, training, crossfit, boxing, and much more. The site is available for free, for both users and businesses.
User features
Users search their community for both spots to workout at as well as upcoming classes in their area. Registration is free, and you get a basic user profile, which can contain your name, picture, and location, as well as an interactive calendar of your class registrations (if you opt to have them be public). Once you find a class that you'd like to attend, registering takes seconds and only requires a click or two. The social aspect of Workout Spots lies in the classes. When viewing a class, you can see which community members are currently signed up for the class. You can sync up with your friends, or meet someone in your area that shares the same workout routines as you. Users can connect over private messages.
Business features
Businesses and trainers start by creating a free account, then add their "spot" (or spots), each representing a location of theirs. Businesses get:
- Interactive spot page located at their desired URL (ie, workoutspots.com/AcmeFitness), which includes:
- Business name
- Phone number
- Address and map (Google)
- Description
- Pictures
- Class calendar
- Simple "team management"
- Add other user accounts as team members of the spot, granting them access to edit the spot, add/edit classes, etc.
- Placement in our spot and class search engine
- Direct line into popular social media services
- Class management and online registration platform
- Add classes to populate your spot calendar.
- Clone classes to make quick one-time copies.
- Recur nodes over a given time period (every day, every week, every 2 days, etc).
- Turn registrations on or off.
- Set when registrations should be open until (2 hours prior, 24 hours prior, etc).
- Bulk-edit or bulk-delete classes with a few click.
- Embed your class calendar on your own website with a few lines of code.
- Easy management for the registrants of each class.
Notable modules used
- Entity registrations (for class registrations)
- Full calendar
- Display suite
- GMap
- Location
- Flag
- Private message
- Features
- Views
- Date
Theme
Contributions
Several patches have been tested and committed during development, as well as support given on issue queues. The following modules have been contributes so far.
- Email required: A simple module that only requires authenticated users to verify their email address to access certain page paths.
- Views argument cache: A Views cache plugin used to generate special Views cache keys based on the arguments in the view. This allows us to clear caches for given views, only for given arguments. See project page for details.
- Node recur: Easily duplicate a node that contains a Date field based on recurring rules, ie, every day, every week, every 3 days, every 2 days excluding weekend, etc.
- Entity timezone: Fetch and store timezone names for entities with Location enabled (nodes, users, etc) via the GeoNames API. We use this to determine the timezone of a class based on the "spot" location, rather than forcing using to either pick a timezone for each class or for the spot. (Coming soon)
Cool stuff
- Widgets
- We offer a cool Javascript widget to allow spot-owners embed their upcoming classes on their own website. I haven't seen a Drupal site provide that before, so I call it "cool stuff".
- With just one script tag and one html tag on your site, you can dynamically populate your site - here's an example. And no, the site embedding the code does not have to also be a Drupal site.
- Code was based on this awesome article which uses jQuery and JSONP.
- This widget is powered by returning the output of a View in JSONP. The embedded JS also supports the Views pager links to actually return the pages inline as well.
Press
Questions?
I hope you found this case study / showcase to be interesting. Please let me know if you have any questions or would like to discuss anything at all.
Thanks
A big thank you, as always, to the entire, incredibly-awesome Drupal community.
Comments
No questions??
No questions??