I have some questions that are not intended to offend, but rather press you to think through the UX and the likely possibilities. I of course do not know exactly your vision for how this would work, but have myself worked for more than a decade in restaurants and am a Bubble expert.
I am taking some liberties in making some assumptions. The main assumption here is that the Users are actually just going to be a Customer of a Restaurant that is sitting in the Restaurant at a Table who will make an Order to be delivered to the Table and consumed at the Restaurant.
How is this going to happen in practice? Are the customers expected to open their own device and navigate to the application OR are you going to be expecting the Restaurant to have a device at the table for the customers to use?
In either situation, how to you expect to track the proper Table for the Restaurant employees to know which table made the Order?
If you expect the Restaurant to provide the Table with a Device to use, is it expected that the Restaurant would have multiple devices with each Table having it’s own device, OR would the server give the Table a device to use and then remove that device from the Table after the Order has been processed?
All of these scenarios have different implications for your setup.
Example: If it is the multiple device, one for each table that doesn’t leave the table and is affixed to the table, that is easy enough. In this situation your Restaurant would likely have it’s owner version of the application (not an application where multiple restaurants have their own ‘page’ but either their own version of the application or a subDomain). They would then create Users in the Database which would be the Table, as that is what truly an Order in a Restaurant revolves around. Then when they place the device on the table and affix it, any ‘Sessions’ would be created using the “Created By” field as the User (AKA Table).
I would personally venture to guess that not a single person who goes into a restaurant is going to want to use their own device to create an Order while sitting in the Restaurant, so for me personally I would definitely be creating the app in such a way as to expect the Restaurant to provide the device, and in that, making it so that a User is a Table.
In all reality, I personally would make it so that the Server has control over the device and make it so that it is a ‘Mobile POS’ system, something that makes it so the Main Terminal most restaurants may use in conjunction with their existing POS system is replaced by multiple devices that Servers carry with them. With this, the Servers are trained on how to use the system and it will function as smoothly as a restaurant would need it to…Impossible to blame the customer for making a mistake in the ordering process using a software they have no prior knowledge of how to operate properly.
Why give the Customer so much freedom? Because it is not actually freedom you are creating, but rather Friction and making the Ordering Process more difficult for the Customer to navigate.
Your goal for good UX is to make anything a person does on your app as easy as possible, and if they are going to need to decide on "How do we want to do it, should we all add our names or should we create tabs (I believe here you may be referencing a Bill so that users can separate their costs from each others) you are just making the whole process more confusing for the Customer.
Again, I’d build it with expectation that the customer either orders from a device affixed to the table and the order is Simple and based on the Table and not a name or ‘tab’. Either that, or make it so the Server controls the device.
You can do it using the List Shifter Plugin. I use this plugin to create my Shopping Carts to process Orders and I am able to track the items quantity and other related details. The developer of the plugin has put up some videos on the showcase page detailing how to create a shopping cart and do other things with list item tracking…it is essentially what it was first built for I believe.
Again here, this is my personal perspective and you probably strongly disagree, but I personally do not see a situation in which a Restaurant Customer will want to pull out their own device and navigate to the site and find the Restaurant they are currently in to then locate the menu and figure out how to start the ordering process.
Again here, I think this is friction and the Customer should not be made to make this type of decision…besides, this also entails more friction because the Customer will first have to create the list of ‘tabs’ or the list of people at the table.
Think about the friction here. Each time they make a selection of an item they have to then do one more step, which would take anywhere from 2-10 seconds depending on how quickly the user could decide which ‘tab’ or person it belongs to…a large table (I used to serve tables of 20+ people) could take well over 20 minutes to create their Order (and Restaurants would not be happy using an application that reduces their TurnOver Rate).
From my view, both as an experienced service industry participant (I’ve done every job in a Restaurant from dishwasher to cook to bartender) and as an experienced Bubble developer, I think the best approach is to have the Server Control the Device and the Order Process.
This would allow them to have the ability to quickly select from a dropdown menu the Table the order is for, and enter the number of Customers at the Table and Select a Seat Position for the Customer the specific items are for. Then at the end of the meal when the check is ready to be created the Server can ask if they want to separate the Tabs and ask which Customers items belong on the same Tab and quickly select from the Table Position to add certain items to certain Tabs.
I truly hope this helps you think through the UX and the application development.
Learn From an Expert
Boston85719 is an expert Bubbler with a decade experience as an educator. Real name Matthew, he has been actively building SaaS apps, marketplace apps, scheduling apps and more for clients, himself and for sale as templates.
As an official Bubble Bootcamp Instructor, he leads Bubble Bootcamps on a regular basis.
Always willing to offer advice via the Bubble Forum, Matthew also offers Private Personal and Group Training Sessions.
Through his site, NoCodeTrainer, Matthew provides a range of tutorials with editor access to help you jumpstart your Bubble development.
Always accessible you can send Matthew a private message via the forum or send an email directly with your requests.
Be sure to checkout the Stripe Integration Course when you are ready to integrate Stripe payments to start monetizing your application via product sales or subscriptions.