Answers.Body: <p>As far as 'setting availablity' goes, one could choose to make a 'services' section with a Matrix field that contains a DateTimeField. That way, the client can create a new Matrix Block for each available time span. The {% cache %} tag will help you in speeding this up on the frontend.</p>
  
  <p>For booking, you could:</p>
  
  <ul>
  <li>A: Make a 'bookings' section, with a related content field 'service'. Fill this section with a <a href="http://buildwithcraft.com/docs/templating/entry-form" rel="nofollow">frontend Entry form</a>, set post and expiry dates to the time span of the visitor's choice. You could now display a list of bookings on the frontend (behind a login), or have your client manage bookings through the CP's content tab.</li>
  <li>B: Make a plugin to handle bookings. This would be my preferred approach.</li>
  </ul>
  
  <p>To handle payments, you could use an existing plugin (<a href="http://squarebit.co.uk/plugins/charge" rel="nofollow">Charge</a>, for example) or build your own.</p>
  
Answers.ContentLicense: CC BY-SA 3.0
Answers.CreationDate: 2014-09-03T07:59:37.010Z
Answers.LastActivityDate: 2014-09-03T07:59:37.010Z
Answers.UserDisplayName: Paul
Body: <p>I'm about to start building out a site that requires a booking system to be setup within it. The site owner should be able to set availability (days and times with time-frames) and allow the visitors to book/reserve available services within the available time-frames and make a payment.</p>
  
  <p>Any suggestions on how one might go about this? I know the request is pretty vague, just looking for some broad strokes to help me kick off in the right direction.</p>
  
Tags: <entries>
Title: Booking/Reservation system
ThreadText: # Booking/Reservation system
  
  (Asked by: username_0 on 2014-09-03)
  
  I'm about to start building out a site that requires a booking system to be setup within it. The site owner should be able to set availability (days and times with time-frames) and allow the visitors to book/reserve available services within the available time-frames and make a payment.
  
  Any suggestions on how one might go about this? I know the request is pretty vague, just looking for some broad strokes to help me kick off in the right direction.
  
  **Tags:** entries
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2014-09-03. Score: 1 | Accepted answer
  
  As far as 'setting availablity' goes, one could choose to make a 'services' section with a Matrix field that contains a DateTimeField. That way, the client can create a new Matrix Block for each available time span. The {% cache %} tag will help you in speeding this up on the frontend.
  
  For booking, you could:
  
  * A: Make a 'bookings' section, with a related content field 'service'. Fill this section with a [frontend Entry form](http://buildwithcraft.com/docs/templating/entry-form), set post and expiry dates to the time span of the visitor's choice. You could now display a list of bookings on the frontend (behind a login), or have your client manage bookings through the CP's content tab.
  * B: Make a plugin to handle bookings. This would be my preferred approach.
  
  To handle payments, you could use an existing plugin ([Charge](http://squarebit.co.uk/plugins/charge), for example) or build your own.
  
  
  ---
  
  