Tutorial: Create a booking system for a Fitness Club
This tutorial shows how to build an appointment booking calendar using a fitness club as an example. You can see the end result in this demo booking system. It should be straightforward to adapt these instructions to suit your particular need. For example, the instructions could equally well be used to create a scheduling system to sign up students for a class or participants for a conference.
How to use this documentation
The usual way to set up a SuperSaaS schedule is with a “build and test” cycle:
- Set up a basic schedule using the wizard
- Try if it works as expected
- Unless satisfied make changes to the configuration and go back to step 2
- When you are happy integrate the schedule into your own site
This documentation will follow this basic pattern but deviates in some places to allow logical grouping by subject. Clicking the ‘Next chapter’ link at the bottom will present the material in a linear fashion but you can quickly jump to a subject of interest through the tutorial index.
Before you start create an account on SuperSaaS if you don’t already have one. It’s free and all you need is a valid e-mail address. Log in to your account to reach the dashboard page. If you’ve already created another schedule before it will be shown on the dashboard page, otherwise it will be mostly empty.
Set up a basic schedule using the wizard
Click the ‘New Schedule’ option in the right hand menu to start the schedule creation wizard. The wizard will ask a series of questions and create a schedule with sensible default settings for your situation. The first screen of the wizard presents you with a choice between a ‘Resource’, a ‘Capacity’ or a ‘Service’ schedule. This choice is very important because, unlike all other settings, the only way to change it is to start from scratch with a new schedule.
For this example we need a ‘Capacity’ type schedule since, obviously, more than one person at a time can book a fitness class. If the thing you want to schedule can only be scheduled once at any given time, such as a meeting room or private piano lesson, then a ‘resource’ or a ‘service’ schedule would be more appropriate. In some situations more than one choice works, simply try out both to see which one you like best and keep that one. You may want to look at a detailed explanation of the different schedule types.
Click ‘next’ to get to step 2 where you give your schedule a title. This title, together with your account name, forms the web address that people see in their browser when they use your schedule. You could just name it “schedule” but it is more helpful to your users if you pick something descriptive of the thing you are scheduling. We use “Fitness classes” and click ‘next step’.
In step 3 we set how many people we can have in a class. You can change the number of people on a class by class basis, this is just the default value. Similarly you can provide a default length for the class, that you can change for each class later. Finally, there is a checkbox that allows you to indicate whether or not you want the system to automatically create a waiting list when a class is full.
Clicking the “Finish” button creates the schedule, and puts it online right away. You now have a fully working reservation system! So, let’s try if it works.
Try out the basic functionality
To use your schedule click the blue ‘Use’ button that you can find in the menu box that is pictured on the right. It is only visible when you are logged in as administrator. Regular users will see the same schedule but with fewer options. You can also find the ‘Use’ button on your dashboard page. You can always get to the dashboard by clicking the link in the top right corner of your screen. Another option is to use the bookmark feature of your browser to quickly find your schedule.
When you enter your calendar for the first time you are greeted by an empty schedule. A lot of what you see here can be configured. For example you can show a day or a month at a time, or no schedule at all, but we will get to that later. First let’s try out the basic functionality of the system.
Let’s start out by creating a class, an empty slot that our users will be able to make an appointment for. Click the place on the schedule where you want to create the class and a ‘New Slot’ window appears. If the dialog window is in an inconvenient place you can simply drag it by its title bar just like you would with a window on your computer. Instead of navigating to the correct date you can also just change the date in the ‘When’ field. Fill out a descriptive ‘title’ and ‘description’ unless it’s obvious to your users what they are booking. You will be able to add additional fields such as price and location later. The view can look a little bit different from the one shown here depending on the fields you filled out. You can click the square in the bottom right of the window to change the color. We enter a small class capacity of 4 to make it easier to demonstrate waiting lists later on. Click the ‘Create Slot’ button and see it appear on the week schedule. If you enter a URL in the description starting with "http://…" then it will be converted to a clickable link. Unless the link ends in “gif”, “png” or “jpg” then it will be converted to a picture. Note that pictures need to be on the internet somewhere, for example a photo sharing site, you can’t upload them from your computer. You can set the text of the link by prefixing it with the text between square brackets. For example, if you enter: “Please see the [tutorials] http://www.supersaas.com/tutorials”, you would see “Please see the tutorials”. If you add text between brackets to a picture link it will be used to generate a pop-up description for the picture.
Clicking the chip that you have just created will show you an empty class with no appointments yet. Along the bottom are three links ‘New reservation’, ‘Edit Slot’ and ‘Close’. The ‘New reservation’ link is useful if you want to add participants to your class by hand, perhaps because you accept customers by phone and you want to keep the total updated on the site. Note that people using your schedule will see different options; we will get to that later.
Let’s enter an appointment by clicking ‘New Reservation’. By default the system only asks for a name, we will see how to change that later, and we click ‘Create Reservation’. Click the class again and notice a few things have changed. The class now shows our newly created appointment and the colored box shows ‘1/4’ meaning 1 occupied out of 4 available places. Also a green check mark has appeared on the chip, this indicates chips where we have added an appointment ourselves. This is convenient for your users so they can quickly see which classes they signed up for.
With the ‘Edit Slot’ link you can make changes to a class. If you change details of a class, such as the starting time, all bookings for that class are moved with it to the new time. We will show later how to notify participants that have already booked the class of the changed information. Finally, the ‘Close’ link simply closes that dialog box again; its function is identical to clicking the red and white close icon in the title bar of the window.
Change the Configuration
You now have a basically functional appointment booking system. However, the wizard made a lot of assumptions when it set up your schedule, so it is likely that you will need to change the configuration to better match your needs. Click the ‘Configure’ button to go to the Configuration Overview page to see a summary of all the different options you can change. This page also lets you temporarily block the schedule or delete it entirely. We will discuss the first tab, ‘Resources’, here. The other tabs each have their own chapter.
Resources tab for a ‘capacity’ schedule
The resources tab contains the settings that define the resource, the thing you are scheduling. Note that the resources tab will look differently if you are building a ‘resource’ type schedule instead of a ‘capacity’ type schedule. The first options deal with naming the resource appropriately. The names you select to be used instead of the defaults ‘slot’ and ‘booking’ are used throughout the system. Error messages, email confirmations and help pages all use the names you select. Since we are creating a system for a fitness class we select the term ‘class’. We can also change the term used for a ‘user’, for example to change it into ‘student’, but this setting is on another page because it does not dependent on this resource, we will get to that later. If you use a custom term for a slot then enter the singular form and the system will convert it to a plural where appropriate. For foreign words enter the custom term as "singular,plural".
Further down the resource page you can specify details about the capacity. In the first field you enter the default capacity, i.e. “How many people can fit in one class?” If this answers differs on a class-by-class basis don’t worry, you can change this number for individual classes when you create them. Entering zero will switch off the limit checking entirely. The second field determines how many places a person can book with one appointment. Setting this value to anything other than 1 will change the user interface to include a quantity field when making an appointment. (You can change the field name “quantity” to something that is more appropriate, like “number of seats”, on the “Process” tab). For a fitness class we will leave this at 1, but if you were using SuperSaaS to sell tickets to a play, for example, it would make sense to allow people to buy multiple tickets at once.
Next you can specify how many bookings someone can make in total in all classes. You can also specify whether this total should include the ones that have passed. After the maximum is reached he or she can only change bookings or delete them. You can specify a separate limit for the number of appointments that can take place on the same day or in the same week. Finally, two check boxes determine whether people are allowed to make a second appointment for the same class and whether the capacity information is visible to other people than yourself. Note that the system can only determine if someone is ‘the same person’ by his or her login name. So if you allow people to create their own login name (or if you allow anonymous bookings) then the system cannot prevent people from making a second appointment by creating a second login name.
The next section, ‘overbooking’, determines what happens when a slot fills up. The choices are simply to deny booking, to allow only you to override the limit, to ignore the limit altogether, or to create an entry on a waiting list. The waiting list option is quite sophisticated. It creates a separate waiting list for each event and remembers the order in which people entered the waiting list. If the box for automatic placement is checked it will automatically place the first person on the waiting list if someone cancels. Later on, om the “Process” tab, you can specify a notification email to be sent if that happens. It can get more complicated if you allow multiple bookings per person. You can allow multiple bookings per user by entering a number different than one to the question "How many times can one slot be booked at the same time by the same user?". Upon booking a “quantity” field will appear that allows people to enter the number of places that want to book. If someone requests more spots than are available he will go to the waiting list until enough room is available. And if someone subsequently cancels then automatic placement will only take place if there is enough room to satisfy the request of the first person on the waiting list. As administrator you can at any time place people from the waiting list, even if that would go over the set limit. We will show how to do that later. Another thing to note is that automatic placement will obey the time limits you can set on the process tab, discussed later in this tutorial, so if you set a limit to only allow sign up until one day in advance then the automatic placement will stop there too.
The ‘Location’ heading gives you a check box to add an additional field to specify the location. This can be used, for example, to specify the classroom if you have multiple classes. The user interface also changes slightly to make room for the additional information and if you publish your calendar this information also gets sent across to the appropriate location field inside Outlook and Google calendar.
The ‘Price’ field is discussed in more detail a separate tutorial on pricing. The value is just a default that you can adjust for each class separately. By the way, setting a price here does not mean you actually have to charge people through the site, you can also just display a price and arrange payment in some other way. The ‘Time’ heading allows you to set a default length for slots and you can modify the user interface for time display. Rounding all times to whole days can be a good idea if you are using SuperSaaS for things that take multiple days, like renting vacation homes. Setting ‘Availability’ is done on a different screen. It simply changes schedule coloring, it does not prevent you as the administrator from adding a class on a Sunday, for example, if you have indicated that you are closed on Sunday. The availability information is used when creating a repeating class, in that case the system will skip any days when you are closed.
Next chapter: Control access to your schedule