# Havi Dock Booking - A warehouse dock booking app that prevents conflicts

**URL:** <https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349>\
**Category:** Project Showcase\
**Created:** [June 5, 2020, 1:19pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349 "2020-06-05T13:19:28Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 5, 2020, 1:19pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/1 "2020-06-05T13:19:28Z")

</div>

Hi guys, hope you are all well.

Today I want to show my application that I have been working on with a friend for the past week. His company provides warehouse services and he needs a dock booking app for clients, one which would include different, pre-defined booking durations and of course, prevent conflicts.

### **The link of the app**

> **[HAVI Dock Booking](https://dockbookingtemp.glideapp.io/)**
>
> A warehouse dock booking app that prevents conflicts

A little video to show you the process, including the email confirmation. The link is [here](https://streamable.com/w847j1) if the video embedded below doesn’t work.

[https://cdn-b-east.streamable.com/video/mp4/w847j1.mp4?token=tolWkNv6bmPinrulL9AxwA&expires=1591382100](https://cdn-b-east.streamable.com/video/mp4/w847j1.mp4?token=tolWkNv6bmPinrulL9AxwA&expires=1591382100)

> **If you want to read about the app, here, I go through each part of it.**
>
> ## **1/User Profiles screen**
> 
> Users can configure their profile, which consists of profile image & name, using text entry & image picker.
> 
> When they have made a booking, their active bookings will be showed under the title, like in the screenshot below.
> 
> ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/9/920f22b430dbb2016c893cff173233a090a620e8.png)
> 
> ## **2/Booking screen**
> 
> Includes various choice components that reflect the type of dock the user needs. There are 4 unique types of dock based on the combinations of temperature & small/big dock type.
> 
> - The truck type will be dynamically generated based on the choice of dock type.
> - The dock choices will be dynamically generated based on the choice of temperature & dock type.
> 
> ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/7/74c1eaad8a89678d1f583989d0c38d7c079b7f13.png)
> 
> Once a date & dock choice have been chosen, bookings from that same date and same dock will be shown to the user before the pick a start time. If the user still persists to choose a slot that conflicts, the app will prevent them from booking.
> 
> ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/9/9a4b83bae4e6aa206f4aeb1df616484a45111feb.png)
> 
> ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/e/e4396d2ed9e8940ba8f3b3bc8cd935f49ca5ae10.png)
> 
> Inside the form, the choices from the previous screen will be showed in a basic table. The last 2 information users are asked to enter are the PO number and the truck license plate number.
> 
> ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/c/cec6a64975c305e1f5acf5d7c3ed4763f8c2f637.png)
> 
> Once the booking is confirmed, a nice little mail will be sent to the user’s email address, with an automatically generated image of the booking details.
> 
> ## **3/Admin screen**
> 
> If you’re not the admin, you can’t access this screen.
> 
> ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/5/5cebe4775f831f1e38692742e935ff0fedd27a2e.png)
> 
> The admin tab has 2 functions: availability & dock calendar.
> 
> The availability part allows the admin to click checkboxes of which docks are available for next week (booking is only allowed for next week due to business set up). Only available docks will be shown to the user in the booking tab.
> 
> ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/6/607cb6f2d4bd6c079e1f6cd8ef8412698242e19d.png)
> 
> The dock calendar part allows the admin to check the bookings based on a date choice.
> 
> ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/5/58fe8e8ac25c4dcfa1ee18edd27573f35ec83f37.png)

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 5, 2020, 1:24pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/2 "2020-06-05T13:24:20Z")

</div>

The image confirmation after each booking would look like this:

 ![image](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/e/ed0a6db80f43599b73f9b463c9edbd0e07755ed4.png)

It’s the same concept that I used here:

> [@Concept: Sending digital membership card after subscription](https://community.glideapps.com/t/concept-sending-digital-membership-card-after-subscription/9539):
>
> Hi, today I would like to show a concept of delivering digital membership card after users have bought a subscription pack. This consists of a form in Glide, a script in Google Sheets, some work with Cloudinary to come to the final product: a personalized email, with the image of the “digital membership card” inside. Here’s how it works in real time. [ezgif-1-024248462a01] You can try it out yourself in my test app: [https://tdslab.glideapp.io/](https://tdslab.glideapp.io/) I am trying to deliver the same thing for order…

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 5, 2020, 1:29pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/3 "2020-06-05T13:29:18Z")

</div>

Special thanks to @Jeff_Hager for the 0.1, 0.2, etc. concept, sorry I forgot which post it was to link it here.

Thanks to @Robert_Petitto for testing it a while ago, I wanted to make sure it works with another country’s datetime format because we struggled for a while with that. If you test this and find out that you can still make conflict bookings please let me know.

---

<div class="post-metadata">

**Author:** ![osxzxso](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/osxzxso/32/7356_2.png) [@osxzxso](https://community.glideapps.com/u/osxzxso)\
**Post date:** [June 5, 2020, 4:23pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/4 "2020-06-05T16:23:17Z")

</div>

Wow!!! This app rocks. @ThinhDinh You covered a lot of angles to get this app functioning the way it does. Nice work!

I did a test booking and selected a particular date/time slot (from the USA) and after the booking has been confirmed it prevents me from booking again using the same date/time slot. So it appears to work properly and not allow conflicting schedules to be created.

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 5, 2020, 4:23pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/5 "2020-06-05T16:23:52Z")

</div>

Did you receive the email as well? Thank you for taking time to test it. 😄

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 5, 2020, 4:25pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/6 "2020-06-05T16:25:46Z")

</div>

Just to make it clearer it would block multiple slots from being booked so that a truck won’t show up when one is still in the dock.

For example: If your truck is booked from 10AM to 11AM, then I want to book a slot from 9.45AM to 10.30AM in the same dock, it will be blocked as well because it conflicts with the 10AM to 10.30AM part.

---

<div class="post-metadata">

**Author:** ![kyleheney](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kyleheney/32/41173_2.png) [@kyleheney](https://community.glideapps.com/u/kyleheney)\
**Post date:** [June 5, 2020, 4:32pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/7 "2020-06-05T16:32:46Z")

</div>

Very nice! Can I ask how you’re sending emails? It doesn’t seem to be coming from Zapier, so I assume it’s using a script?

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 5, 2020, 4:34pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/8 "2020-06-05T16:34:02Z")

</div>

Yes it’s using a script I wrote. In the future if clients want to change the message that comes along with the image I can just modify it in the script.

The image was done using Cloudinary.

---

<div class="post-metadata">

**Author:** ![osxzxso](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/osxzxso/32/7356_2.png) [@osxzxso](https://community.glideapps.com/u/osxzxso)\
**Post date:** [June 5, 2020, 4:36pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/9 "2020-06-05T16:36:02Z")

</div>

Yep, I received the email confirmation…

 ![email](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/7/7bc290057a1e4137aef2a9423ff21ef5472c2398.png)

My initial booking was scheduled for 8:00 AM, Monday, June 8th  
(and it should last 30 minutes, 8:00 AM - 8:30 AM)

When I attempt another booking starting at 8:15 AM, Monday, June 8th  
(it prevents the booking and says the slot is taken)

 ![prevention](https://us1.discourse-cdn.com/flex002/uploads/glideapps/original/2X/c/cf4e5be4a1130ab90910d89bdafac3db979404b5.png)

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 5, 2020, 4:36pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/10 "2020-06-05T16:36:24Z")

</div>

Thank you, so it works as intended!

---

<div class="post-metadata">

**Author:** ![kyleheney](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/kyleheney/32/41173_2.png) [@kyleheney](https://community.glideapps.com/u/kyleheney)\
**Post date:** [June 6, 2020, 6:35pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/11 "2020-06-06T18:35:57Z")

</div>

I’ve got a very similar booking app for rooms in my building, but I’ve been using Zapier to send the emails (which is causing an issue as we reach the limits of the free tier — we’re a non-profit). Can you share the script you used to do this? I’m not super familiar with scripts so would appreciate a template of sorts to get me started in automating emails like this (without Zapier). Thanks!

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 7, 2020, 3:10am UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/12 "2020-06-07T03:10:24Z")

</div>

Hi @kyleheney, I have sent you a personal message.

---

<div class="post-metadata">

**Author:** ![Jaime](https://avatars.discourse-cdn.com/v4/letter/j/4bbf92/32.png) [@Jaime](https://community.glideapps.com/u/Jaime)\
**Post date:** [June 7, 2020, 4:20am UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/13 "2020-06-07T04:20:27Z")

</div>

> [@Concept: Sending digital membership card after subscription](https://community.glideapps.com/t/concept-sending-digital-membership-card-after-subscription/9539/1):
>
> Cloudinary

I’d love to see this as well @ThinhDinh if you could share.

---

<div class="post-metadata">

**Author:** ![Manan\_Mehta](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/manan_mehta/32/13957_2.png) [@Manan\_Mehta](https://community.glideapps.com/u/Manan_Mehta)\
**Post date:** [June 7, 2020, 5:27am UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/14 "2020-06-07T05:27:50Z")

</div>

This is amazing! Any specific time lag from the form submission to receival of the email?  
I have used google scripts in the same way as you for whatsapp messages but the image confirmations looks so much better than a basic text. Loved the idea.

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [June 7, 2020, 5:38am UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/15 "2020-06-07T05:38:40Z")

</div>

Should just be seconds. However in some cases the mail has been sent from my side but it takes the client a while to receive, happens randomly.

---

<div class="post-metadata">

**Author:** ![Manan\_Mehta](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/manan_mehta/32/13957_2.png) [@Manan\_Mehta](https://community.glideapps.com/u/Manan_Mehta)\
**Post date:** [June 7, 2020, 5:40am UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/16 "2020-06-07T05:40:32Z")

</div>

Love it! You have made me want to dive into cloudinary all over again!

---

<div class="post-metadata">

**Author:** ![adiboo\_adib](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/adiboo_adib/32/24714_2.png) [@adiboo\_adib](https://community.glideapps.com/u/adiboo_adib)\
**Post date:** [November 20, 2021, 10:59am UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/17 "2021-11-20T10:59:45Z")

</div>

Hi i can’t duplicate the app can you fix it please. Thanks

---

<div class="post-metadata">

**Author:** ![ThinhDinh](https://sea2.discourse-cdn.com/flex002/user_avatar/community.glideapps.com/thinhdinh/32/49_2.png) [@ThinhDinh](https://community.glideapps.com/u/ThinhDinh)\
**Post date:** [November 20, 2021, 12:37pm UTC](https://community.glideapps.com/t/havi-dock-booking-a-warehouse-dock-booking-app-that-prevents-conflicts/10349/18 "2021-11-20T12:37:05Z")

</div>

Sorry but this app was not intended to be copyable.
