I need a booking system for my homepage to allow customers to book lessons with my teachers.
Enclosed is a draft how the booking should look and work.
It is important that it is very easy to book a lesson. It doesnt matter in which script language it is written - at the and i need a code which i can integrate in my site.
The code must be readable and not encoded or encrypted.
## Workflow of each step
Step 1: choose lesson
customer chooses the lesson first for example: maths, english, spanish,...
selection should look like a button - see draft
Step 2: choose lesson type
customer chooses the lesson type 3 types are available, single student, dual student or group
Each lesson type have defined price
selection should look like a button - see draft
Step 3: date and time picker - with available slots
customer picks date and time.
the sheduler shows only available slots based on the teachers and their free slots.
Based on the selected lesson(maths, english...) you need to filter the teachers (not every teacher teaches every lesson)
And based on the teachers you have to show the available slots.
The available slots of each teacher is predefined in file, json or database (whatever you like).
Default all available slots from all teachers are shown - so you have to sum the available slots from all filtered teachers.
keep in mind that you also have to exclude already booked slots!
Step 4: Pop Up after slot selection
At least a popup is shown with all the selected data.
the customer fills in the last required fields.
At the buttom there are 2 buttons [cancel] and [save]
All data is saved in a file, json or database (whatever you like).
## draft example for json data file - teacher
"lesson":{
"math":["lucy", "john", "steven"],
"english":["john"],
"spanish":["john"],
}
"lessontype":{
"single": {"price":"100"},
"dual": {"price":"75"},
"group": {"price":"30"}
}
"teachers":{
"lucy": {
"available slots": {
"Monday": "14-20",
"Tuesday": "14-20",
"Wednesday": "14-20"
}
},
"john": {
"available slots": {
"Friday": "08-10",
"Saturday": "14-18"
}
},
"steven": {
"available slots": {
"Monday": "14-16",
"Wednesday": "14-16",
"Friday": "14-16"
}
}
}