We would like to build Coffee Ordering System that allows our customers to order coffee from our stores to pick up from the counter or designated areas. The system needs to be Arabic and English based. Note that anything that the customer sees must be multilingual, everything else needs to be in English only. The system needs to cater for multiple countries, cities in each country, and available shops in each city. Each store will have its own operating hours, location, staff, photo, menu, currency etc.

The system will consist of 3 parts. The system will consist of 3 parts:
- The Admin Dashboard. English only. Web base.
- The Staff Order Processing Interface. English only. iOS tablet native (iPad)
- The end user app. English & Arabic. Smartphone (iOS & Android native) based. Please note that Arabic is a right-to-left language.
The below specifications are intended for illustration purposes. We’ll leave the business process, the Admin Dashboard, and the Staff Ordering Process for you to implement using the best practiced methods and the most intuitive interface and functionality. The only interface that we care for its looks is the end user’s app which must be identical to the wireframe attached.
The Admin Dashboard:
Here the admin should configure each store with each store having a different location (country, city, and a store location (GPS & address), GPS pickup area, average order prepare time, a menu of goods to order from, operating hours, a phone number, an email, visible or hidden in the end-user app, a store name, a store description, a store photo, a currency symbol (USD, GBP, AED, etc.), a VAT percentage, and a loyalty program percentage. The loyalty program percentage is used to give the customer cashback credit as a percentage from each purchase. The customer can redeem this cashback at checkout to pay for goods ordered. To redeem this cashback, it must be greater or equal to the total order.
The admin should be able to create a store, copy a previously configured store, delete a store, hide/unhide a store. We will leave the user interface for the Admin module for you to decide upon, however, it should be easy and intuitive. We recommend it to be a web based.
The interface here needs not to be multilingual. English interface is sufficient.
Pickup Methods at Checkout:
Each store should have two pickup options:
- For walk-in customers where the customer will walk into the store to claim the order using an
order number. No car information is needed and no GPS tracking. - For drive through customers where the store will deliver the order to the customer to his/her car at the designated pickup areas as defined by the Admin.
Each store can offer both of these options or just one of them. This is since some stores are located with a mall and it would be impossible to deliver the order to the mall’s parking lot. If the Admin offers only one option, then customer needs not to select the pickup method at checkout.
Payment Methods:
Each country should have a different payment gateway associated with it. The available payment methods are per store are only online payment. The system needs to remember the payment cards used. We want to use Apple Pay & Google Pay where applicable.
The Menu Items:
Each menu item needs to have a name (Arabic & English), photo, price, price symbol (Arabic & English), and customizable extras (Arabic & English). Some customizable extras are required to choose from represented by radio buttons, others are optional presented with a checkbox. Each extra should have a price associated with it, including free. If free, then the extra cost should be hidden.
The Multilingual Captions:
To simplify the translation process, there must NOT be any static captions in the system. All text displayed in the app which will be seen by the customer, including error messages, notifications, emails, etc., must be retrieved from the database before displaying it. Depending on the language used, the system will retrieve and display the corresponding text for that language. Each row in the table should contain an auto generated reference number, English text, and the corresponding Arabic text. There should be an interface for the Admin to modify this text for both languages. We assume that the Arabic text field will be empty for us to translate locally. The list should be sorted by the English text.
The Customer Interface:
The customer interface should be a list based on the goods we offer based on the selected store. Please note that not all stores offer the exact same products.
- The county. Since the app will work for different countries, when the customer starts the app, the app will check the country the customer is in and allow him/her to pick the city of choice. The system needs to remember this choice for subsequent usage of the app and should not ask for it for subsequent usage of the app. The user can change the city from the app menu. The list of cities should come for the cities entered by the Admin.
- The customer profile data. Here we’ll need to collect the First Name in one field, the phone number, the email address, and the car’s license plate number. A password and a way to reset it in case they forgot it. The user can have multiple plate numbers in case they have more than one car. It should be alphanumeric.
- Face ID to login.
The Staff Order Processing Interface
Here the app will be web-based running on a tablet installed in every store that services the orders coming from the customers. The interface needs not to be multilingual. English interface is sufficient. Each order will have the following Progress statuses:
- New. For new orders once received.
- Accepted. Orders once accepted by the store.
- In the making. Orders once the store starts preparing it.
- Completed. Orders once they are done and ready for delivery to the customer in his car or
collected at the counter. - Delivered. Once the order is delivered to the customer or picked up at the counter.
- Cancelled. The store can choose to cancel an order if they need to.
- No Show. In case the order was Completed yet no one collected it.