How would you approach this dilemma for a booking app

So I know so many have created some great booking templates @Robert_Petitto and @Lucas_Pires to name a few.

With actions now in place, I’ve been toying with an app in beta just to see what will work. I’m trying to create a booking app for creatives, with all the complexities that come with it (marking days as unavailable, blocking off times).

What I currently have seems to work - but I feel like it only works for certain time frames (specifically up to 120 minutes for an appointment. I don’t think Glide is smart enough yet to understand how to block out certain time frames based on what’s been scheduled. What’s below was achieved by assigning every time block of 15-minute intervals a decimal value, calculating times before and after those times in MATH columns (15 minutes before, after, etc.), then creating a custom action to populate an array in a different sheet. The time slots presented are then filtered by an IFTHEN column based on a relation to check if the times for that specific date are available.

My question is - how the heck would you approach building functionality to allow users to block off a chunk of time? For example, I am available from 10am - 3pm one day, then only available from 9am - 12pm the next, etc.

Many thanks for any and all feedback!

5 Likes

Firstly, the app looks so nice, as always!

Regarding the blocking approach, I was using the same method for my inventory booking app and well it does take a lot of effort and a lot of columns to achieve what I want.

I take it here you are looking for a way to block out unavailable times. Let’s say you’re available 10am - 3pm then what shows on screen should be filtered so that 0am - 10am and 3pm - 0am would not show? And you want it to change based on each day’s schedule?

2 Likes

Thank you! And yes that’s exactly right. I have it so that once an appointment is booked, that time no longer shows, but also any other times that conflict (slots that start in between the time during the appointment and times that start or end less than 15 min the end of that selected appointment).

1 Like

I believe (or am hoping) there’s a formula that can help, but I have no idea where to start with it.

How to block out any time frame that a user selects and not just predetermined time blocks like below.

2 Likes

I’m working on similar logic in my new Time Sheet template. I’ve got it working now where a user picks a start and end time (15 minute intervals between them). The list of possible times (for future entries) is then filtered so that the chosen times between the two times are no longer available as choices.

I’ve configured it in such a way that allows users to submit up to 5 different time sheets per day. The logic is also smart enough to know if I book from 9AM-11AM, all those choices are filtered out AND if I were to pick 8AM as my next start time, the only available end time options are 8:15, 8:30 and 8:45 (even though technically 11:15 onwards are also still available).

2 Likes

Nice! Do you have a screenshot or demo? I’m trying to picture if what you have is similar to what I need to configure in mine. The logic for selecting and removing slots already booked is there. But the ability for a shop owner to suddenly say “Oh I need to run an errand - let me block my calendar from 2pm - 3pm” is not.

1 Like

First of all, this simple and minimalist design is just stunning!!! Gosh :heart_eyes::heart_eyes:

1 Like

It was super complicated to be honest. Basically, I’d pull in the user’s first, second, third, fourth and fifth submissions per day and run an IFTHEN on each of them to check if they’re before/after the “selected time” (the new one that’s looking to be booked).

My times are predetermined choice components, and so are my dates (though they’re filtered by pay period so the list is only ever 14 days long).

I’m hoping to finish the template this week, so I may be able to show a video of it working by early next week.

3 Likes

Coming from you that’s an honor :relaxed:!

And @shchc I bet. The amount of columns in my sheet is monstrous.

Here’s a screenshot. It sounds like we’ve done something similar. It seems like making some predetermined choices even for blocking off times may be the best route. Like “half-day” or chunks to create the math in the columns and build the logic for Glide to follow.

Thanks, I look forward to seeing your finished product!

4 Likes

Haha at one point I had created 104 computed columns to get all the 15 minute intervals between two times (up to 12 hour apart). It worked, but the app was so slow to respond it wasnt usable. The filtering by before/after a new time is way more efficient.

5 Likes

The filter for before/after a time works well for blocking times when the shop is open or closed. I didn’t continue that logic for the appointment booking because if one user books from 11am to 12pm, it doesn’t necessarily mean all earlier times are not available (ex. 9am - 10am). Or perhaps another user comes and books from 3:00pm - 4:30pm, then all appointments prior to 4:30 are unavailable - right?

If you did the before/after approach aren’t you omitting earlier pockets of time that are available?

1 Like

That’s where it gets more complicated, but I figured out some logic to allow booking times before already chosen times too, and still filter out previously booked times.

I look at it now and I can’t even understand how I figured it out haha

1 Like

That’s the part I already have down LOL. The part I need is blocking a free range of time out.

I’ll be interested to see how you worked through yours - I have a feeling our approaches are extremely similar :wink:

And ditto - I tell myself that I need to write down the purpose of each column as I work, but 45 minutes and 50 new columns later I have no idea what I’ve done :joy:

5 Likes

Same here, if someone asks me to build that thing again I would never say yes :frowning:

3 Likes

Here’s a video of what I was working on. It shows the ability to book between two submissions.

5 Likes

Love it. I think this would work well for shop owners blocking out time. Great work on this!

Whenever your template is done, I’ll have to get it to see if I can integrate it with the logic and design I’ve built for booking services.

Thanks!

Superb! I really like the design.

1 Like

Hola @Lisa !

I know it’s an old topic but I wonder if you could improve your logic and APP or gave up?

I created my own version for these kind of APPs and I could simplify the logic and amount of columns. Of course, I used JS code through some Experimental Code columns to get it.

Try to do it using the Glide’s conventional tools is a nightmare and a mountain of work. I can understand @ThinhDinh perfectly when he stated “… if someone asks me to build that thing again I would never say yes:grinning:.

I basically worked with arrays, put all dates into arrays, sorted them, filtered and looked for those available days/hours using my arrays via JS code and I can say that my APPs are not monsters difficult to maintain or improve (my big concern when I develop an APP or project).

Here you can test my demo version if you want: https://book-us.glideapp.io

I included a section where you can set up your attendance parameters and control which days/hours you are available to accept a booking. I know there are more cases or settings to handle the non-workings days but I think I have covered 80-90% of cases.

I hope it helps you if you are still stuck with it.

Feliz día!

4 Likes

Thanks for sharing your approach! I’m sure it will help a lot of Gliders to see different methods to create a booking app.

My team and I at Riegel Groupe figured out the time block issue not too long after I posted this - I’d have to look back to see exactly what we did since it was a while ago. In a nutshell we allowed the shop owner to block off the times they are unavailable and created a formula that was smart enough to remove those time blocks from the availability that was shown to the client scheduling their appointment.

4 Likes