Flight Scheduler w/ Conflict Prevention (3 independent variables)

I’m currently refining my flight scheduler using the new features glide has released over the last few months and wanted to create a place for my progress to live for everyone else working on projects like it. I will be adding images and video to this thread as I progress.

I have found a way to incorporate @Robert_Petitto’s methods with a few of my own to avoid double booking of pilots and aircraft.

Pilots - Profiles and booking choices
Flights - Booked Flights
Start Times - 1 column (1488 rows) of 30 min incremented “now()”'s (31 days out) concat with each pilot and aircraft.

Current Pilots: 38
Current Aircraft: 6

From Pilot’s sheet:
Creator of booking is “Pilot”
Choose ”Activity” (8) (purely informational)
Choose ”Copilot” (37 not including self)
Choose “Aircraft” (6)
Choose a start time, in 30 minute increments, up to 31 days out starting with NOW() (formatted to find the next 30 min occurrence)
Choose a duration, in 1 hour increments, from 2 to 24 hours.

Using @Robert_Petitto’s duration columns to compare potential length of flight against existing flight information, we are able to prevent booking if someone chooses a start time before a current flight and a duration that would book through the existing flight. I still don’t have a method to remove the start times that would not work for the duration they have chosen but that can always be added later.

Ex: If it’s currently 10:45am and pilot1 booked aircraft1 with pilot2 at 12 noon for 2 hours, I don’t want pilot3, who also wants aircraft1 and pilot2, to have an option of choosing 11am for pilot3’s start time if the min duration is 2 hours and puts pilot3’s flight ending in the middle of the flight that pilot1 already booked. Pilot3 should only see start times starting with 2pm. Disclaimer: pilots don’t see booked times in their start time choice component but I’m sure some of them will still choose a “bad” start time and see my warning message. I would like to use their duration to help populate possible start times instead of ALL free start times.

The goal isn’t to alert the pilot that his/her choices are not able to be booked by comparing a relation but to instead populate only the available "start time"s for their choices. To do this I display a filtered (pilot, copilot, and aircraft are empty) choice component (start time) assigned to their choice of copilot and aircraft.

"Start Time" Sheet:
A:A - “=ArrayFormula(ADD(FLOOR(NOW()-1/48, 1/48),ROW(INDIRECT(“A2:A”&1488))/48))”
B:G - “Aircraft”&" “&A:A
H:AS - “Pilot”&” "&A:A

Glide Data Editor:
1 relation column on the “start time” sheet per pilot and aircraft.

Each pilot could make up to 222 (37px6a) unique selections in which the “Start Time” choice component would need to filter out times that are already present on the “Flights” sheet for their current choices.

So instead of making 1 relation from “Flights” (already booked) to “Pilots” (booking choices) and rejecting the ability to book with a warning message, I need to build 1 relation column from each aircraft and student on the “Start Times” sheet to the “Flights” sheet then build 222 “start time” choice components that only appear and filter the pilot and aircraft that was selected. Wish me luck.

More to come soon! (pictures/video)


Hi Jonathon,

I have also created a booking app, as posted here:

If you need help regarding the setup of your app feel free to message me so we can share about the methods.

1 Like

Does yours only populate information that has not been chosen by clients already?

I opted for this method:

  • Let users choose all options, and show them the bookings that have already been recorded for the specific date and dock (in my warehouse case).

  • If users persist to choose a slot that has already been booked, an un-clickable button will be showed to them, saying “This slot has been booked, please choose another one”.

  • Else they will be able to book that slot.

The reason I opted for that is to use as few rows as possible, in your case do you have to store all these 222 selections in your data and filter them out when one has been chosen? That would take up half the available rows for a free app.

1 Like

44 (38 pilots + 6 aircraft) unique relation columns (not rows) to filter free times based on which pilot and aircraft is chosen.

The 222 comes in with the start time choice component. Visibility and filter both based on chosen pilot and aircraft. Wish there was a dynamic way to assign filters and visibility for this use…

1 Like

Hi ThinhDinh, my app is similar to what you have done. I am a beginner and got stuck. I was doing a scheduler for FLU clinics. I want patients to select a time and of course prevent double booking. Would you be willing to share the process?


I have a simple Booking example in https://concepts.glideapp.io/


Hi Rae, the idea behind preventing conflicts here is to have a tab with multiple user-specific columns, let people choose them outside of a form, join them together in a template column and then use a relation to match that template column back to the same column in the sheet where you store confirmed bookings.

If the relation is not empty then show the form button to catch all info stored in the user-specific columns via Columns components, else hide the button and show a text that the slot is booked.

In my case, the template contains the start time of the booking, the dock number and the date. Is it the same for your case? It gets harder to explain when you add in a duration for the booking, but the things I mentioned above can give you a start.


Thank you Jeff, I’ll play around and see how it goes.

1 Like

Thank you ThinhDinh, I think I get it. I will have to try it and see if I did get it. I’ll let you guys know, what happened in the following days.


Jeff…clever idea for concepts. I never thought to just throw them all into one app like that. Very nice sir.

1 Like

Hey @Jonathon_Kohn !

Your app seems great ! Any pictures to share ? I like the concept behind it and the way you did it. Looking forward to hear more on it :slight_smile:

1 Like

Thank you. It’s in desperate need of updating though. Most of the concepts are quite old and could be done more easily with newer functionality, so I haven’t pushed it as much. Someday I want to take some time to redo it and maybe split it into separate apps so it’s easier to understand, then have a driver app that links to each one.


Let me know when it’s done, I would definitely like to take it for a spin.

1 Like

I will try to find the time to share a little. The updates these heroes have released over the last 3 months have GREATLY improved the booking system but parts of it still have to be hacked…

hmm, how about a community built and maintained Concept app?
Lots of people here with their own set of unique skills. Would be nice to pull all these together to showcase different techniques and possibilities with Glide… or would that be too difficult to manage?

@Drearystate @Robert_Petitto @ThinhDinh @Lucas_Pires @Wiz.Wazeer @Manan_Mehta (apologies to anyone obvious I’ve missed)


It’s been discussed in the past to make it a community effort. I was kind of thinking of a driver app where people can add links to example apps that can be copied. The driver app could have some rudimentary search capabilities or categorization to make it easy to find concepts and short descriptions of what they do. With deep linking, it would be easy to share a links, or just share a direct link to the app.

My whole thought behind the concepts app was to keep concepts really simple and demonstrate how to do something that has been asked about over and over in the forum. The idea is not to have a full featured app or pack it full of extras, but just a simple example so somebody can easily look at it and figure out the inner workings. Maybe it could be set up with simple example app, but also offer a advanced version that takes that basic example and adds some more complexity to it.

One thing I had done with my app was to keep it public in an effort to prevent people from using there real email address in the app. Because of that I had to come up with a way of “simulating” a sign in, which now probably isn’t the best way to handle that. With the newer features we have now, we can use user specific columns and anonymous emails to protect multiple users who may be using these concept apps that anybody can copy.


I’m all for it.


Hola @jonathon_kohn

Did you finish this APP and work as you desire?

I like this kind of APPs and more if they are associated to aviation :muscle: