Software Requirements Specification for DELICHILL FOOD DELIVERY Version 1.0 approved Prepared by ADVN BA team ADVN - 03/03/2021 1 MENU A. INTRODUCTION ..............................................................................................................4 1. Purpose ................................................................................................................... 4 2. Scope...................................................................................................................... 4 3. Definition, Acronyms, and Abbreviations ................................................................... 4 4. References .............................................................................................................. 5 5. Overview ................................................................................................................ 5 B. GENERAL DESCRIPTION ..............................................................................................5 1. Product Perspective .................................................................................................. 5 2. Product Functions .................................................................................................... 5 3. User Characteristics ............................................................................................... 12 4. General Constraints ................................................................................................ 13 5. Assumptions and Dependencies ............................................................................... 13 C. SPECIFIC REQUIREMENTS ........................................................................................ 13 Functional Requirements ............................................................................................... 13 End User - Mobile application ..................................................................................... 13 I. EPIC: End-user (EU) Registration, Login and Password Reset. ............................13 II. EPIC: End-user (EU) Waiting Screen and Homepage. ...........................................15 III. EPIC: End-user (EU) Search and Search Results. ...............................................23 IV. EPIC: End-user (EU) view a merchant and its food/drinks. ...............................26 V. EPIC: End-user (EU) makes an order. ....................................................................26 VI. EPIC: End-user (EU) earning money/affiliate. ....................................................28 Shipper - Mobile application ...................................................................................... 32 I. EPIC: Shipper (S) Registration, Login and Password Reset. ..................................32 II. EPIC: Main function list on shipper application. ....................................................35 Merchant - Mobile application & website .................................................................... 47 I. EPIC: Merchant (M) or Restaurant: Registration, Login and Password Reset. ....47 II. EPIC: Activation Merchant Account. ......................................................................50 III. EPIC: Main function list on merchant application. .............................................51 IV. EPIC: Main function list on merchant website. ...................................................56 Administrator – Website ............................................................................................. 57 I. EPIC: Manage Merchant/ Restaurant Account.......................................................57 II. EPIC: Manage End user Account. ...........................................................................59 III. EPIC: Manage Shipper Account...........................................................................62 2 IV. EPIC: Manage transaction history of Shipper Account. .....................................68 V. EPIC: Manage transaction history of Merchant Account. ......................................70 VI. EPIC: Manage Landing Page and Policy. ............................................................70 VII. EPIC: Manage type of Merchant Account. ..........................................................71 VIII. EPIC: Manage general category. .......................................................................... 71 IX. EPIC: Manage menu of Merchant. ....................................................................... 72 X. EPIC: Manage main menu, topping list of Merchant.............................................. 73 XI. EPIC: Manage suggestion menu of Merchant. ..................................................... 75 XII. EPIC: Manage Promotion list of Merchant.......................................................... 78 XIII. EPIC: Manage the Order list of Merchant. .......................................................... 81 XIV. EPIC: Manage the Delivery list. ........................................................................... 82 XV. EPIC: Manage the refund order. .......................................................................... 83 XVI. EPIC: Manage payment for the Merchants. ........................................................ 84 XVII. EPIC: Manage payment for the End user Account. ......................................... 85 XVIII. EPIC: Manage the Shipper Account balance (Deposit money). ....................... 86 XIX. EPIC: Manage server: SMS, email server. ......................................................... 87 XX. EPIC: Manage payment method. .......................................................................... 87 XXI. EPIC: Manage Affiliate Campaign (AC) List. ..................................................... 88 XXII. EPIC: Manage user device to push notification. ............................................... 89 XXIII. EPIC: Push notification from admin. ............................................................... 89 XXIV. EPIC: Configure the big screen of the EU application. ................................... 89 XXV. EPIC: View the statistics. ................................................................................... 92 Non-functional Requirements ................................................................................................ 92 3 A. INTRODUCTION 1. Purpose The purpose of this Software Requirements Specification Document (SRS) is to outline the requirements for The Food Delivery platform (DeliChill). The SRS is used to Accompany the main contract between ADVN and Delichill to describe the outcomes, expectations and timelines of the project. Serve as a reference of the platform for different stakeholders: investors, Delichill’s teach, operation, and admin teams. Usable during the opration and maintanance phase. The SRS will address the needs of these two phases. 2. Scope DeliChill flatform comprises a food delivery system and an affiliate system. The platform will be built on Web and Mobile Application by using Ruby on Rail, React Native and MariaDB. The Delichill mobile application will be implemented with its core services as an application from which additional features/services can be added later, providing a foundation for future services to support the Delichill roadmap. Therae arer 4 types of users of the platform: Administration functions are envisioned to be supported only on desktop/laptop environments. Shipper functions are envisioned to be supported only on mobile application. Whereas End-user, Merchant functions will be supported via desktop/laptop on a web-based application and mobile applications can be downloaded on App Store (for iOS devices) and CH Play (for Android devices). 3. Definition, Acronyms, and Abbreviations User personas supported in Delichill platform End-user (EU): EU is the one who will order food/drinks, can have friends and a hierarchy network, can also monetize from purchasing goods (cashback) and receiving passive commissions from introducing others and get them to utilize the app. Especially with the affiliate marketing function, it will provide tools and market for the EU to monetize from the application. In that, KOL is a special type of user that will benefit from special features that are defined in the KOL section. Merchant (M): o Merchants are the restaurants whereby EU can order food from Merchants on this application. o Each merchant will have their own accounts as their restaurants and will be available on the EU dashboard. With the provided merchant accounts, they can: Manage the restaurant; Receive and process orders from EU; 4 4. Receive support to help with doing marketing (via promotions) in order to boost sales number. o Merchant has their own application and the app is available on mobile app and web-based application. Shipper (S): Shippers are the ones who will get food from a merchant and deliver it to end-users who place order via Delichill. Shipper has their own application and the app is available on mobile only. System Administrator (Admin): Admin will manage data and activities within the system Key Opinion Leader (KOL): people or organizations that have such a strong social status that their recommendations and opinions are listened to when making important decisions. In this system, KOL is a normal end user, who achieves a certain number of followers, KOL gets a higher rate than the normal EU. References In this Software Requirement Specification document, we use some references from internet. For more detail: https://en.wikipedia.org/wiki/Load_balancing_(computing) wikipedia about Load Balancing. https://www.cloudflare.com/en-ca/learning/what-is-cloudflare/ -- Explanation of cloudflare service in server design and configuration. https://docs.aws.amazon.com/AmazonS3/latest/dev/Welcome.html -- Explanation of Amazon S3 services defination. https://vi.wikipedia.org/wiki/Luật_An_ninh_mạng_Việt_Nam -- Refer to Vietnam cybersecurity law. 5. Overview The rest of the SRS is organized as follow: General description: This section describe the general factors that affect Delichill platform and its requirements. Those factors include: product perspective, product funtions, user characteristics, general constraints, assumptions and dependencies. Specific requirements: This section contains all the details the software developers needs to create platform design. B. GENERAL DESCRIPTION 1. Product Perspective DeliChill is a food delivery system with affiliate main functions. The system shall have the following components they will be responsible for deferent activities like searching, ordering food, sharing food item and earning money from affiliate actions (For End User); Receiving and processing order (for Shipper); Receiving and processing order, creating and run affiliate campaigns (for Merchant); And system management activities of Admin. 2. Product Functions 5 Roles - Plaftform End User - Mobile application Group of functions EPIC: Register, login and reset end-user (EU) passwords Use-case Name Registration OTP-SMS verification Login and Password Reset EPIC: End User's Home and Home Screen (EU) Waiting Screen when opening the app Homepage - News banner Homepage - Friends hub Homepage - Food suggestion per meal in a day Homepage - Type of Drink suggestions Homepage - Food suggestions by KOL latest order Homepage - Healthy food/drink list suggestions EPIC: End User Search and Search Results (EU) Search for food and merchants System displays hashtag below the search bar System displays search results EPIC: The end user (EU) sees a seller and their food / drinks View information and food/drinks from a merchant View food/drinks of a merchant in detail EPIC: The end user (EU) places an order Add to cart Remove from cart Customise my food order Provide my address Check out cart Choose payment method Add coupon Remove coupon System alert when an EU chooses an invalid coupon Update cart 6 Cancel order Cancel order and get a refund in case of paying in advance Compulsory advance payment Successful order Tracking order Rate order EPIC: End users (EU) earn money / affiliates Share affiliate link of a food Share affiliate link of a merchant Sharing my affiliate link Share link campaigns View statistics of the profits the EU receives from their activities on the app View the available campaigns End-User (EU) earn coins from inviting other users to join successfully End-user (EU) earn coins from inviting other EU to order food successfully End-user (EU) earn coins from having other accounts fill in the form End-user (EU) earn coins from ordering food from many merchants with promotion programmes End-user (EU) earn coins from having other users install the app successfully View report of total members in their team and how much the whole team earns (maximum of 5 levels of downlines) End-user (EU) views all available campaigns End-user (EU) views HOT campaigns End-user (EU) views the campaigns that they take part in End-user (EU) views the graph chart of their revenue through times End-user (EU) can make a request to withdraw coins from the system to their own account End-user (EU) balance changes after getting approval for withdrawing coins EPIC: End-user sets up addresses in their profiles 7 End-user (EU) adds additional addresses in their profile End-user (EU) remove additional addresses in their profile End-user (EU) chooses a default address End-user (EU) adds additional information to their addresses End-user (EU) can pin the location on the map manually in case the system doesn’t autopopulate the address on the map EPIC: Friend hub End-user (EU) search for friends via phone numbers End-user (EU) send friend requests End-user (EU) cancel friend requests End-user (EU) accepts friend requests End-user (EU) declines friend requests End-user (EU) unfriend other EU on their friends list End-user (EU) set privacy for their posts Limited access to the app for non-login users Shipper - Mobile application EPIC: Shipper (S) Registration, Login and Password Reset. Registration OTP-SMS verification Login and Password Reset EPIC: Main function list on shipper application Login the first time Top up View my rating Get new order / new delivery and Process it Delivery Process and Manage my task list Call the customer or the End-user Money Flow, My balance and The History of balance change Withdrawal request View my notification list 8 View my statistics Merchant - Mobile application & website EPIC: Merchant (M) or Restaurant: Registration, Login and Password Reset Registration OTP-mail verification Login and Password Reset EPIC: Activation Merchant Account Admin verify the merchant account EPIC: Main function list on merchant application Manage my account View the merchant rating Get notification about my new order and Process it View the order history and Process the order View the balance history and the current balance View my notification list EPIC: Main function list on merchant website Manage my main menu Manage the suggestion menu View my published menu Manage my promotions Manage my Affiliate Marketing Programs View my statistics Administrator – Website EPIC: Manage Merchant/ Restaurant Account Create a new Merchant account Update Merchant Manage the request list to update Merchant’s menu 9 EPIC: Manage End user Account Create a new End user (EU) account Update EU View the important information of the EU EPIC: Manage Shipper Account Create a new Shipper (S) account Update Shipper View the important information of the S Rules for Shipper’s balance EPIC: Manage transaction history of Shipper Account View the transaction list of all Shippers EPIC: Manage transaction history of Merchant Account View the transaction list of Merchants EPIC: Manage Landing Page and Policy Update Landing Page EPIC: Manage type of Merchant Account Merchant type EPIC: Manage general category Create / Edit / Delete the general category /tags list EPIC: Manage menu of Merchant Approve the request list about Merchant’s menu Create / Edit / Delete all items on this Merchant’s menu EPIC: Manage main menu, topping list of Merchant. Approve the request list about Merchant’s menu Create / Edit / Delete all items on this Merchant’s menu 10 EPIC: Manage main menu, topping list of Merchant Approve the request list about Merchant’s menu Create / Edit / Delete all items on this Merchant’s menu EPIC: Manage suggestion menu of Merchant Approve the request list about Merchant’s suggestion menu Create / Edit / Delete all items on this Merchant’s suggestion menu EPIC: Manage Promotion list of Merchant Approve the Promotion list of Merchant Create / Edit all Promotions EPIC: Manage the Order list of Merchant View the order list EPIC: Manage the Delivery list View the delivery list Configure the delivery fee EPIC: Manage the refund order View the refund order EPIC: Manage payment for the Merchants Config the time to calculate a revenue milestone EPIC: Manage payment for the End user Account View the withdrawal request of End user Config a withdrawal limited for the EU View EU withdrawal history and statistics EPIC: Manage the Shipper Account balance (Deposit money) 11 View the recharge requesting of the Shipper EPIC: Manage server: SMS, email server Turn On / Off payment methods EPIC: Manage Affiliate Campaign (AC) List About AC EPIC: Manage user device to push notification View device list EPIC: Push notification from admin Send a notice by manual EPIC: Configure the big screen of the EU application Configure a Homepage creen Configure a Searching results View system config the formula for dividing money by involved parties EPIC: View the statistics View sysem’s reports 3. User Characteristics End-user (EU): EU is the one who will order food/drinks, can have friends and a hierarchy network, can also monetize from purchasing goods (cashback) and receiving passive commissions from introducing others and get them to utilize the app. Merchant (M): o Merchants are the restaurants whereby EU can order food from Merchants on this application. o Each merchant will have their own accounts as their restaurants and will be available on the EU dashboard. With the provided merchant accounts, they can: Manage the restaurant; Receive and process orders from EU; Receive support to help with doing marketing (via promotions) in order to boost sales number. Shipper (S): Shippers are the ones who will get food from a merchant and deliver it to end-users who place order via Delichill. Shipper has their own application and the app is available on mobile only. 12 System Administrator (Admin): Admin will manage data and activities within the system Key Opinion Leader (KOL): People or organizations that have such a strong social status that their recommendations and opinions are listened to when making important decisions. In this system, KOL is a normal end user, who achieves a certain number of followers, KOL gets a higher rate than the normal EU. 4. General Constraints Apps for the EU and S is built for IOS (versions >=10.0) and Android (versions >=6.0); For other operating systems, the application may not run in good. In this system, we use Google Maps service to get the user’s location. System need the the user’s permission for the device’s location. Number of levels in affiliate system is defined in source code. 5. Assumptions and Dependencies In this system, ADVN are not responsible for the third party services (Amazon, CloudFlare, Google, SMS Gateway,...). System will request permission to get the location, if user reject, system cannot detect the user’s location. C. SPECIFIC REQUIREMENTS Functional Requirements End User - Mobile application The following user stories define specific use-cases to be supported by the application. They are defined in a specific format to help provide clarity of the context and purpose of the use-case. I. EPIC: End-user (EU) Registration, Login and Password Reset. As an EU, I require the ability to register/create a new EU account. Login to an existing account and have an option to reset my password. All registrations receive an SMS-based (OTP) verification code required to complete registration. 1. STORY: Registration. As an EU, I can register a new account with First Name, Last Name, Phone Number, and Password, so that I can begin my EU account with minimal friction. ● All of these fields are required. ● First and Last Name must pass field validation: Be at least 2 characters for each field. Must be alpha-numeric (no special symbols/emojis/etc.). Max 20 characters for each field. ● Phone number must pass a phone number format field validation. Must be numeric. Max 10 characters. ● Email must pass an email format field validation. Max 50 characters. ● Passwords must be at least 8 characters, and must include at least one of each: Upper Case, Lower Case, Number and Special Character. Max 20 characters. ● Password will include a toggle icon to switch between masked (“***”) and visible password visibility. 13 ● ● The registration view will include a link to switch to the Login view. If the provided email address or phone number already exists in the system as a registered and verified user, an appropriate message (e.g. “Account Already exists, click here to Login”) will be shown to allow the user to proceed to the Login view. ● Registration actions on the EU registration view will record a new user account with role type of “End User” and will record the current datetime of registration in the “created_at” user record field. 2. STORY: OTP-SMS verification. As an EU, I am required to complete the registration flow by entering the 6-digit numbers provided in a text message to the number that I use to register my account to ensure that I am the owner of the provided phone number. ● A configuration in the DB will define which verification mode to use. For the verification code mode, a 6-digit confirmation code will be generated and sent to the phone number specified. The verification code will expire in 5-minute. ● The SMS template will follow this format as: Your Delichill verification code is {{verification_code}}. This code will expire in 5 minutes. Do not share this code to anyone. ● On the screen for EU to enter OTP code, it will contain an option to “Resend new confirmation code” to allow the user to receive a new code. ● Failure to enter a valid code will result in the user record being applied with an “unverified” status. User accounts with this status will allow the user to retry registration using this phone number (e.g. will NOT generate an “Account already exists” response for future registration attempts). 3. STORY: Login and Password Reset. As an EU, I can login using my previouslyregistered phone number and password, and have an option to reset my password (“Forgot Password?”), so that I can authenticate myself as a valid user. It will also include a link to register a new account. ● A Login failure must differentiate between an invalid (unregistered) phone number and an incorrect password, providing a type-specific error message to the user. ● If the user fails a login attempt n-consecutive times (n is a DB-configurable numeric retry count), the application will disallow additional login attempts for n seconds (n is a DB-configurable numeric wait period, in seconds). ● The “Forgot Password?” link will prompt the user for their phone number and upon submission will respond with “A Temporary Password has been sent to your registered phone number” (when the phone number is a valid match to an active user account) or “Account not found” (when the phone number is not matched to an active user account) or “Account not active, contact support” (when the phone number is matched to an inactive user account). ● The generated temporary password reset code will expire in n minutes (n is a DBconfigurable numeric expiration period, in minutes) ● The generated temporary password SMS is obfuscated so that it cannot be artificially simulated by a malicious user ● After entering a temporary password , the system will advance the user to a password reset view, allowing the user to specify a new password. The password field will 14 ● ● II. include a toggle icon to switch between masked (“***”) and visible password visibility. Completing the password submission will provide a validation message (e.g. “Your password has been reset. Please login.”), where the user must return to the login view to login with the new password. The “Don’t have an account yet?” link will advance the user to the registration view. Successfully authenticating will advance the user to their default view EPIC: End-user (EU) Waiting Screen and Homepage. As an EU, after seeing the waiting screen, I require the ability to continue using the app by accessing the Homepage of the app so that I can see what this app offers. 1. STORY: Waiting Screen when opening the app. As an EU, I can see the waiting screen for 03 seconds when I open the app before I am redirected to the Home screen. ● The waiting screen will display the latest activity of 3 random KOLs on top and an app branding picture. The screen is static and no action shall be taken via this waiting screen. ● This screen will remain for 3 seconds. ● After 3 seconds, the system will advance users to the Home screen. 2. STORY: Homepage - News banner. As an EU, I can view the news on the sliding banners so that I can catch up with the new and latest news. 15 ● ● ● ● ● ● The news panels are placed on the top of the page in a static format whereby when the EU scrolls down to see more contents, the news panels stay still. Each article is displayed as a panel and the articles are arranged in a horizontal format whereby the EU will swipe right/left to see more panels. There shall be dots to indicate the number of panels available. When EU is at the first panel, they can’t swipe left. EU can start swiping left or right when they’re not at the first or last panel. When EU is at the last panel, EU shall see a right arrow with a text of “See all”. By clicking “See all”, the system will advance users to the list of the current news. By clicking on the article panel, the system will advance EU to the content of that article The articles shall contain: ○ A banner of content. This is a static image, maximum size of 1.3Mb and in a standard format of images: .png, .jpg, .jpeg ○ Published date time in a format of: dd/mm/yyyy hh:mm 16 ○ ● Content of: ■ Maximum n images; ■ Free text of 5,000 words, EU can enter to create a line break. There’s a “Back” button on the article page for the EU to go back to the previous page. 17 3. STORY: Homepage - Friends hub. As a login EU, I can see the latest food that my 5 random friends are having so that I know about my friends activities and I have some ideas of what I might order later. ● This section is applicable for login users only ● The system shall randomly pick 5 followings and display their latest dishes in a format of: Thumbnail of the account and text: Name of the account - the latest food. ● The EU swipes left/right to see more. After the 5th item, there’s a right arrow button with the word “See more”. By clicking “See more”, the system will advance the EU to view a list of activities of 20 friends ● If an EU has 0 friends, the system will display a text of: “No friends yet. Start to follow them so you can see what’s up.” ● If an EU has 1-5 friends, the system will display all of their following activities. If an EU has more than 5 friends, the system will randomly pick 5 friends to display their activities on the Homepage. ● The system will only display friends with activities ● By clicking on a friend's thumbnail, the system will advance the EU to view the 3 latest foods that the account has ordered recently. 18 ● There’s a “Back” button on the KOL profile for the EU to go back to the previous page. 4. STORY: Homepage - Food suggestion per meal in a day. As an EU, I can see some food suggestions for different types of meals during a day so that I can be suggested what I want to order and I don’t have to spend much time thinking about what I want to eat. ● Based on the time of the day, the system will display different section titles to indicate meals of the day as follows: Breakfast - Lunch - Dinner. ● Each meal (Breakfast - Lunch - Dinner) will have a set of food recommendations that are set by the admin and the EU will see it differently based on the time the EU uses the app. ● There shall be 5 types of food suggestions. The EU will swipe to the right to see more or left to go back. ● When the EU is at the 5th item, there’s a right arrow button with the word “See more”. By clicking “See more”, the system will advance the EU to the list of more ● types of food. Next step of seeing what is on the list: See STORY: As an EU, I can see a list of restaurants which offer the food I want so that I can order that food from a chosen restaurant. There’s a “Back” button on the food list for the EU to go back to the previous page. 19 5. STORY: Homepage - Type of Drink suggestions. As an EU, I can see some drinks types suggestions so that I can have some ideas in mind of what I want to order for drinks. ● ● ● ● The EU can see types of drinks suggestions in the Drinks section. These drinks types will be set up by the admin. There shall be 5 types of drink suggestions. The EU will swipe to the right to see more or left to go back. When the EU is at the 5th item, there’s a right arrow button with the word “See more”. By clicking “See more”, the system will advance the EU to the list of more types of drinks. Next step of seeing what is on the list: See STORY: As an EU, I can see a list of restaurants which offer the drink I want so that I can order that drink from a chosen restaurant. There’s a “Back” button on the drink list for the EU to go back to the previous page. 20 6. STORY: Homepage - Food suggestions by KOL latest order. As an EU, I can see food suggestions of the latest dish from random KOLs on the system so that I can have some ideas in mind of what I want to order. ● The EU can see the latest food that a KOL has just ordered in the format of: ● Thumbnail of a KOL - {{Name of a KOL}} is eating {{name of food}} There shall be 5 KOLs. The EU will swipe to the right to see more or left to go back. 21 ● ● ● When the EU is at the 5th item, there’s a right arrow button with the word “See more”. By clicking “See more”, the system will advance the EU to the list of more KOLs. By clicking on a thumbnail of a KOL, the system will advance EU to that KOL profile which displays their n current food There’s a “Back” button on the KOL profile page for the EU to go back to the previous page 7. STORY: Homepage - Healthy food/drink list suggestions. As an EU, I can see food suggestions of healthy food categories so that I can easily order healthy dishes when I want healthy food. ● The EU can see some merchants that offer healthy dishes in the “Healthy” section. ● There shall be 5 suggestions. The EU will swipe to the right to see more or left to go back. ● When the EU is at the 5th item, there’s a right arrow button with the word “See more”. By clicking “See more”, the system will advance the EU to the list of more merchants that offer healthy dishes. ● By clicking on a thumbnail of a merchant, the system will advance the EU to that merchant to see more dishes that the merchant offers. 22 ● There’s a “Back” button on the merchant page for the EU to go back to the previous page III. EPIC: End-user (EU) Search and Search Results. As an EU, I can search for food, merchants so that I can specify the food, merchants and KOL that I am seeking. 1. STORY: Search for food and merchants. As an EU, at the search bar, I can type in keywords so that I can seek for a specific type of food, merchant or KOL. ● ● Keywords for the EU to type in shan’t be specified as upper/lower cases or with/without Vietnamese keyboard. E.g., the EU can either type Cơm tấm or Com tam, the system shall return the same result. The search shall be triggered by pressing “Search” on the keyboard. 23 ● The EU must type in the exact keywords to have results returned. ● The EU is required to search keywords in Vietnamese language unless the language input from Merchants is in English. 2. STORY: System displays hashtag below the search bar. As an EU, under the search bar, I am shown the “hot” keywords so that I can be suggested some food to order. ● When the EU taps on the search bar, the system will advance the EU to the search page. Under the search bar, the EU will see some hashtags of food suggestions that are set up by the admin. ● When the EU taps on one of the hashtags, the system will advance the EU to the list of merchants that offer that food for the EU to order. 24 3. STORY: System displays search results. The Search (Results) view will render a list of merchants or KOL matching the search keywords from the EU in the search bar. ● ● ● ● The search results view includes a list of each Merchant record, with the following attributes: ○ A thumbnail; ○ Promotion icon; ○ Name of the merchant; ○ Name of the dishes that contain the search keywords as suggestions and its pricing ○ Distance to the EU in kilometres; ○ Time to deliver to the EU in minutes; ○ Merchant rating; ○ Affiliate link (//TODO See STORY: As an EU, I can share affiliate link of a food, a merchant so that I can monetise from this app) The system will display the number of search results before showing the results list. The search results will be displayed in list view and the EU will scroll down to see more. The system only displays merchants that are within 5 kilometres from the EU location. The search results will be sorted into 4 tabs of: ○ Nearby: ■ Merchants that are within 5 kilometres from the EU location. ■ Merchants are sorted from the closest to the furthest 25 ○ ● IV. Top sales: ■ Display the merchants with a lot of orders placed ■ Sort from the most to the least ○ Best reviews: ■ Display the merchants with rating from 4.5/5 ■ Sort from the highest to the lowest rating ○ Promotions: ■ Display merchants that are offering promotions ■ Sort from the newest to oldest promotion programmes Next step - EPIC: End-user (EU) makes an order. As an EU, after finding a merchant that I like, I require the ability to make an order from the merchant so that I can enjoy the food and drinks from that merchant. EPIC: End-user (EU) view a merchant and its food/drinks. As an EU, I can view a merchant and its information so that I take further action like ordering food from them or sharing information about them. 1. STORY: View information and food/drinks from a merchant. As an EU, I can click on a merchant and view the information of the merchant including what food and drinks they offer so that I can make a decision of what to order. 2. STORY: View food/drinks of a merchant in detail. As an EU, I can view the details of that food in a merchant including: images, price, food description, comments, rating, the number of orders made. V. EPIC: End-user (EU) makes an order. As an EU, after finding a merchant that I like, I require the ability to make an order from the merchant so that I can enjoy the food and drinks from that merchant 1. STORY: Add to cart. In the Search results and merchant views, the views contain a list of food with a button action to “Add to Cart”, so that the EU can make an order for the food and drinks that they want. 2. STORY: Remove from cart. As an EU, after adding some food to cart, I require the ability to remove some items that I don’t want to order anymore out of my cart. 3. STORY: Customise my food order. As an EU, when I order a dish, I require the ability to customise my order by choosing extra options that are set in that merchant or leaving a note to the merchant. 4. STORY: Provide my address. As an EU, I am required to provide my current address so that I can order food and a shipper knows where I’m at to deliver the food to me. 5. STORY: Check out cart. As an EU, when I finish adding items, I can review my order by checking out the cart so that I can see the information of my order regarding what food I order and how much I have to pay for my order and how many points for cashback. 26 6. STORY: Choose payment method. As an EU, when I review my order, I require the ability to choose payment method amongst the given options so that I can proceed and complete the order process. 7. STORY: Add coupon. As an EU, when I proceed the payment, I require the ability to add a coupon so that I can get discounts. 8. STORY: Remove coupon. As an EU, when I proceed the payment, I require the ability to remove the coupons that I have chosen earlier so that I can choose a better one. 9. STORY: System alert when an EU chooses an invalid coupon. As an EU, I can see the alert to tell me that the coupon I choose is not applicable for my current order so that I can choose other coupons or update my cart accordingly to have the promotion. 10. STORY: Update cart. As an EU, when I check out cart, I require the ability to update cart so that I can add/remove items as I wish. 11. STORY: Cancel order. As an EU, after placing order, before the system completes finding a rider, I require the ability to cancel my order. 12. STORY: Cancel order and get a refund in case of paying in advance. As an EU, after I cancel my order, if I pay for the order in advance, I can get a refund from the system so that I will not lose my money for something I don’t receive. 13. STORY: Compulsory advance payment. As an EU, I have to pay for my order in advance if the total bill is worth more than 500,000 VND or the location from the restaurant to me is more than 5km so that I can ensure with the shipper that my order is not a fraud. 14. STORY: Successful order. As an EU, after I complete payments, I can see that my order is placed and a rider is on the way to pick up my order. 15. STORY: Tracking order. As an EU, I can see where my order is at in the ordering and delivering process. 16. STORY: Rate order. As an EU, I can rate and leave comments for the food and merchant and shipper so that I can let the app communities know about the food and merchant and shipper to improve their services and quality. 27 VI. EPIC: End-user (EU) earning money/affiliate. As an EU, I can monetise from the app by sharing affiliate links from the app with my own account. 1. STORY: Share affiliate link of a food. As an EU, I require the ability to share a link of a food in a merchant so that I can monetise from that. 2. STORY: Share affiliate link of a merchant. As an EU, from the Merchant result list, I can share a merchant by clicking on the Share button so that I can monetise from my action. ● The EU will click on the share icon then the system will generate a link that will advance others to view the merchant info and with that EU ID so the EU will be recorded for later affiliate bonus. ● For each click via that link by other users, that EU gets points. 3. STORY: System generates an affiliate link with my user ID so that I am recorded for sharing the link. 28 4. STORY: Share link campaigns. As an EU, I can share a campaign link by clicking on the Share button so that I can share that with other people and I might be able to earn coins from doing that 5. STORY: View statistics of the profits the EU receives from their activities on the app. As an EU, I can see the statistics of how much I earn from my sharing activities so that I can track my balance and my incomes generated from the app. 6. STORY: View the available campaigns. As an EU, I can view the available campaigns so that I can actively choose the one that I like to earn money. 7. STORY: End-User (EU) earn coins from inviting other users to join successfully. As an EU, I can earn coins from when a new user registers an account and becomes an app user via the sharing link generated from my account. 8. STORY: End-user (EU) earn coins from inviting other EU to order food successfully. As an EU, I can earn coins when other EU order food from a merchant via the sharing link generated from my account. 9. STORY: End-user (EU) earn coins from having other accounts fill in the form. As an EU, I can earn coins when other accounts types (Merchant, Shipper, KOL, Investor) fill in the form via the sharing link generated from my account. 10. STORY: End-user (EU) earn coins from ordering food from many merchants with promotion programmes. As an EU, I can receive coins from ordering food from merchants with promotion programmes. 11. STORY: End-user (EU) earn coins from having other users install the app successfully. As an EU, I can earn coins by having other users install the app successfully via the sharing link generated by my account. 12. STORY: End-user (EU) View report of total members in their team and how much the whole team earns (maximum of 5 levels of downlines). As an EU, when I’m in the Earn module, I can see the number of my team members and the total incomes of a whole team (maximum 5 levels of my downlines) so that I can be aware of how and what my downlines are doing. 29 30 13. STORY: End-user (EU) views all available campaigns. As an EU, I can see all the campaigns that are available during that time on the app so that I can join in the ones that would bring me values. 14. STORY: End-user (EU) views HOT campaigns. As an EU, I can see all the HOT campaigns that are available during that time on the app so that I can join in the ones that would bring me values. 15. STORY: End-user (EU) views the campaigns that they take part in. As an EU, I can see what campaigns I have joined and how much I earn from the campaigns so that I can keep track with my activities. 16. STORY: End-user (EU) views the graph chart of their revenue through times. As an EU, I can see the line chart that visualises the revenue that I gain from the app over time. 17. STORY: End-user (EU) can make a request to withdraw coins from the system to their own account. As an EU, I can make a request to the system admin to withdraw coins back to my own account so that I can make use of my own coins. 18. STORY: End-user (EU) balance changes after getting approval for withdrawing coins. As an EU, I can see that the coins in my account are deducted and my integrated ATM card changes in terms of balance. 19. STORY: End-user (EU) gets notified of their request of withdrawal status. As an EU, I can get notified of my withdrawal request so that I can track the balance. VII. EPIC: End-user sets up addresses in their profiles. As an EU, I can add addresses in the app so that the shipper later knows where to deliver the food to. 1. STORY: End-user (EU) adds additional addresses in their profile. As an EU, I can add up to 5 addresses in my profile so that later I can choose the location I’m currently at for shippers to deliver my order. 2. STORY: End-user (EU) remove additional addresses in their profile. As an EU, I can remove the additional addresses in my profile so that later I can add more addresses or remove unwanted addresses 3. STORY: End-user (EU) chooses a default address. As an EU, I can choose one of the addresses I added to be my default address so that I don’t have to keep selecting one address for my later orders. 4. STORY: End-user (EU) adds additional information to their addresses. As an EU, I can add more information to my address such as building, suite number,.. So that I can specify my address to the shippers. 5. STORY: End-user (EU) can pin the location on the map manually in case the system doesn’t auto-populate the address on the map. As an EU, I require the ability to pin my location on the map so that I can mark my location on the map for the shipper to see in case the system doesn’t auto-populate my location after I fill in the address. VIII. EPIC: Friend hub. As an EU, I can connect with other people as friends so that I can see my activities and vice versa. 31 1. STORY: End-user (EU) search for friends via phone numbers. As an EU, I can search for other EU via the phone numbers that they used to register Delichill accounts so that I can send friend requests to them. 2. STORY: End-user (EU) send friend requests. As an EU, I can send friend requests to other EU so that I can become friends with them and see their activities on the app. 3. STORY: End-user (EU) cancel friend requests. As an EU, I can cancel the friend request that I send to another EU so that I can do something when I send a wrong request or when I don’t want to send the request to that person anymore. 4. STORY: End-user (EU) accepts friend requests. As an EU, I can accept friend requests from others so that I can be friends with them and see their activities. 5. STORY: End-user (EU) declines friend requests. As an EU, I can decline friend requests from others so that I don’t have to be friends with them or see their activities. 6. STORY: End-user (EU) unfriend other EU on their friends list. As an EU, I can unfriend EU on my friend lists so that I don’t have to connect with them anymore due to my personal reasons. 7. STORY: End-user (EU) set privacy for their posts. As an EU, I can set privacy for my posts to be public or only me so that I can decide what posts of mine can be viewed and what posts cannot. ● Impact: Suggest friends activity on Homepage (US 2.3 - Homepage - Friends hub) 8. STORY: Limited access to the app for non-login users. As a non-login EU, I can only visit the app with limited access until I log in. ● For non-login users, EU can view all information on the app except: o Ordering food process and proceeding check-out payment; o Viewing “Earn” page; o Viewing Friend Hub; o Affiliate related features; Shipper - Mobile application The following user stories define specific use-cases to be supported by the application. They are defined in a specific format to help provide clarity of the context and purpose of the use-case. I. EPIC: Shipper (S) Registration, Login and Password Reset. I require the ability to register/create a new account. Login to an existing account and have an option to reset my password. All registrations receive an SMS-based (OTP) verification code required to complete registration. 1. STORY: Registration. I can register a new account with First Name, Last Name, Phone Number, and Password, upload photos of my vehicle information, my driving license, so that I can begin my Shipper account with minimal friction. All of these fields are required. First and Last Name must pass field validation: Be at least 2 characters for each field. Must be alpha-numeric (no special symbols/emojis/etc.). Max 20 characters for each field. 32 Phone number must pass a phone number format field validation. Must be numeric. Max 10 characters. Email must pass an email format field validation. Max 50 characters. Passwords must be at least 8 characters, and must include at least one of each: Upper Case, Lower Case, Number and Special Character. Max 20 characters. Password will include a toggle icon to switch between masked (“***”) and visible password visibility. The registration view will include a link to switch to the Login view. If the provided email address or phone number already exists in the system as a registered and verified user, an appropriate message (e.g. “Account Already exists, click here to Login”) will be shown to allow the user to proceed to the Login view. Registration actions on the Shipper registration view will record a new user account with role type of “Shipper” and will record the current datetime of registration in the “created_at” user record field. 2. STORY: OTP-SMS verification. I am required to complete the registration flow by entering the 6-digit numbers provided in a text message to the number that I use to register my account to ensure that I am the owner of the provided phone number. A configuration in the DB will define which verification mode to use. For the verification code mode, a 6-digit confirmation code will be generated and sent to the phone number specified. The verification code will expire in 5-minute. The SMS template will follow this format as: Your Delichill verification code is {{verification_code}}. This code will expire in 5 minutes. Do not share this code to anyone. On the screen for the EU to enter OTP code, it will contain an option to “Resend new confirmation code” to allow the user to receive a new code. Failure to enter a valid code will result in the user record being applied with an “unverified” status. User accounts with this status will allow the user to retry registration using this phone number (e.g. will NOT generate an “Account already exists” response for future registration attempts). 33 3. STORY: Login and Password Reset. I can login using my previously-registered phone number and password, and have an option to reset my password (“Forgot Password?”), so that I can authenticate myself as a valid user. It will also include a link to register a new account. A Login failure must differentiate between an invalid (unregistered) phone number and an incorrect password, providing a type-specific error message to the user. If the user fails a login attempt n-consecutive times (n is a DB-configurable numeric retry count), the application will disallow additional login attempts for n seconds (n is a DB-configurable numeric wait period, in seconds). The “Forgot Password?” link will prompt the user for their phone number and upon submission will respond with “A Temporary Password has been sent to your registered phone number” (when the phone number is a valid match to an active user account) or “Account not found” (when the phone number is not matched to an active user account) or “Account not active, contact support” (when the phone number is matched to an inactive user account). The generated temporary password reset code will expire in n minutes (n is a DBconfigurable numeric expiration period, in minutes) The generated temporary password SMS is obfuscated so that it cannot be artificially simulated by a malicious user After entering a temporary password, the system will advance the user to a password reset view, allowing the user to specify a new password. The password field will include a toggle icon to switch between masked (“***”) and visible password visibility. Completing the password submission will provide a validation message (e.g. “Your password has been reset. Please login.”), where the user must return to the login view to login with the new password. The “Don’t have an account yet?” link will advance the user to the registration view. 34 II. Successfully authenticating will advance the user to their default view. Shipper sign up successfully, his account status is “Unactivate”, an admin has to update from “Unactivate” status to “Activate” status, this account can log in to the Shipper application. EPIC: Main function list on shipper application. 1. STORY: Login the first time. Without becoming a user of this system, this application can not identify who they are. Therefore the user has to login into this system successfully before making a deposit. If this is the first time I log in successfully, the shipper can view the delivery interface on a mobile application with the empty database. If Shipper’s balance < 500.000vnd, every time login, the system will display the warning pop-up: "Your balance must be at least 500.000 VND to have the opportunity to receive the ride”. = “Tài khoản của bạn phải có tối thiểu 500.000vnđ, bạn mới có cơ hội nhận chuyến đi” · On the pop-up, there are two options: o Case 1: User clicks on the button “Do it later” = “Để sau”, the system turns off the pop-up and do nothing. 35 o Case 2: Shipper clicks on the button “Top up now” = “Nạp tiền ngay”, move to “STORY: Top up”. 2. STORY: Top up. I can make a transaction to top up into my wallet User clicks on the "TOP UP NOW" = “Nạp tiền ngay” button. On the deposit screen, there are two options: o Case 1: User clicks on the button “Do it later” = “Để sau” to stop top up action, the system back to the lastest screen and do nothing. o Case 2: User wants to make an online payment: Step 1: User inputs the value deposit Step 2: User chooses one of the online payment methods, including: MOMO, VNPAY, and Internet Banking. Step 3: User clicks on the “Top up now” = “Nạp tiền ngay” button, this application will advance the user to another payment application (MOMO Application, VNPAY Application, and Bank Applications): If the payment process is successful: o The system will get back a payment status is "Successful". Meaning the amount in the wallet will increase exactly to the amount just paid. o The application displays the notification: "You just have transferred {the amount just paid} into your wallet" = “Bạn vừa chuyển số tiền {số tiền} vnđ vào ví.” If the payment process is failed: o The system will get back a payment status is "Failed". Meaning the payment process is not successful. o The application displays the notification: "Your payment process was failed. Please try again later" = “Quá trình thanh toán thất bại. Xin vui lòng thử lại!” 3. STORY: View my rating. EU can leave the review text and a star rating to the Shipper, after the completed order. 36 My rating is counted by the average of the total number of stars On My profile, user can view my rating (AVG) The number of stars is shown in a rating review: on each order in the “Completed” status, from 1star to 5 stars. S click on “View Detail” on each review notification to view the review. 4. STORY: Get new order / new delivery and Process it. If I am the best suitable with the order, and match some conditions of the system, I can get it. The conditions are: o The balance must be at least 500.000 VND to receive a ride, and at least 1 million VND to receive a cash order. o The nearest location from Shipper to Merchant, which is the restaurant of this order, meaning Shipper must Online and turn on his location 37 The notification advances shipper to view detailed order in "New" status, there are 2 cases: o o Case 1: Shipper clicks on the "Reject" button to skip this order. Meaning: The system continues to scan to find out another shipper This order is not shown on his task anymore. If Shipper clicks on the notification, the application will show the pop-up: "This information is unavailable" = "Thông tin không còn khả dụng" Case 2: Shipper clicks on the "Accept" button to get this order. Meaning: The system sends a notification to the Merchant of this order This order is moved automatically from "New" status to "Going to get food" = "Đang đi lấy món" status. 38 5. STORY: Delivery Process and Manage my task list. Shipper application will have a task list. 39 The delivery process: End-user places an order, then the Shipper accepts to get it, then the Merchant gets a notification to prepare this order. Each order status is the task list of the shipper, there are in the following sequence: o "New" = "Mới": when the system assigns an order to this Shipper, he accepts it. o "Going to get food" = "Đang đi lấy món": in this status, End-user can cancel this order, if it happens, this order status becomes "Cancelled" = "Hủy”. o "Receiving food" = "Đang nhận món": from this status onward, the EU does not have the permission to cancel the order. Shipper must update manuals from "Receiving food" to "Going to deliver". o "Going to deliver" = "Đang đi giao": Shipper must update manually from "Going to deliver" to "Completed". o "Completed" = “Hoàn thành”: this time system counts commission or profit for related roles (EU, Shipper, Merchant). o “Canceled” = “Đã hủy”: the list canceled order is from Cancel action of the EU. Filter orders: by status, by a period of the last 3 months Order list: only shows orders generated in this year Order details including restaurant name, list of dishes (name and quantity), the total bill including a delivery fee, customer information, distance, notice of the EU (if have) 40 6. STORY: Call the customer or the End-user. A shipper can call the EU by default phone call feature of his mobile device. A shipper can call the EU by click on the phone icon on the detailed order, link to the default phone-call feature of the mobile device 41 7. STORY: Money Flow, My balance and The History of balance change. My balance is updated depending on the below money flow, I can view the balance numbers change and also the history in real-time Money flow: o Cash Order: The total amount is deducted immediately from Shipper’s wallet when Shipper confirms to pick up the order to delivery. If the EU cancels the order, the system will fully refund for Shipper. If the order is successfully delivered, a Shipper will receive x% of Total delivery fee. o Oline payment Order: The EU pays the Total amount from the moment he placed the order, meaning Shipper does not need to collect money from the EU. 42 If the EU cancels the order, this order status is “Canceled”, notify to related Shipper and related Merchant. If the order is successfully delivered, a Shipper will receive x% of Total delivery fee. 8. STORY: Withdrawal request. The story: o Shipper has the right to request a withdrawal, the condition is an amount not greater than the amount of the existing balance. o Submit a request, the administrator has paid manual outside the system and he must update status “Paid” = “Đã thanh toán” OR “Unpaid” = “Chưa thanh toán”, the system will immediately deduct the corresponding amount from the account. The balance is not less than 0. On the Shipper application: o Following the screens flow: My Profile > My balance > Submit withdrawal request. In this “Withdrawal request” screen, the “Withdrawal amount” field = “Số tiền muốn rút” field : User inputs the numbers only and entering the “Submit a request” = “Gửi yêu cầu rút tiền” button. There are 2 cases: Case 1: Withdrawal amount is greater than the amount of the existing balance, a pop-up is shown: “The withdrawal amount must be less than or equal to the available amount in your wallet” = “Số tiền muốn rút phải nhỏ hơn số tiền khả dụng trong ví của bạn”. It’s only one choice “Ok” = “Đồng ý” button to close this pop-up and clear all information on the last screen. Case 2: Withdrawal amount is less than or equal to the available amount in the shipper's wallet, this request will be submitted to the administrator and become a record in Shipper’s withdrawal request list in “Unpaid” status. 43 9. STORY: View my notification list. Notification function of the system using Google Firebase, at the moment Google is free for this function If Shipper’s balance < 500.000vnd, every time login, the system will display the warning pop-up: "Your balance must be at least 500.000 VND to have the opportunity to receive the ride”. = “Tài khoản của bạn phải có tối thiểu 500.000vnđ, bạn mới có cơ hội nhận chuyến đi” On the pop-up, there are two options: o Case 1: User clicks on the button “Do it later” = “Để sau”, the system turns off the pop-up and do nothing. o Case 2: Shipper clicks on the button “Top up now” = “Nạp tiền ngay”, move to “STORY: Top up”. Shipper updates the completed status of the order, notify him about this order: a delivery fee and the total bill. The format notification is: 44 o To the payment online order: "Your payment online order with the ID {Order_ID} has the total bill is delivery fee is {amount} vnd" = "Đơn hàng đã thanh toán online mã {Mã đơn} có tổng tiền là {số tiền} vnđ và phí giao hàng là {số tiền} vnđ" o To the cash order: "Your cash order with the ID {Order_ID} has the total bill is delivery fee is {amount} vnd" = "Đơn hàng thu tiền mặt mã {Mã đơn} có tổng tiền là {số tiền} vnđ và phí giao hàng là {số tiền} vnđ" o Receive general notification from admin: text + images. o Receive notification about the rating of the successful order. The format notification is: "Your rating is {number from 1 to 5} star from the order with ID {Order_ID}. View detail" = "Bạn nhận được đánh giá {con số} sao từ đơn hàng mã {mã đơn hàng}. Xem chi tiết". Click "View detail" to see the detailed review. 45 10. STORY: View my statistics. The Shipper’s application shows the income by daily. Following the screen flow: “My Profile”>“Income statistics” = “Tài khoản của tôi”>“Thống kê thu nhập”: to view my income by daily 46 Merchant - Mobile application & website The following user stories define specific use-cases to be supported by the application. They are defined in a specific format to help provide clarity of the context and purpose of the use-case. I. EPIC: Merchant (M) or Restaurant: Registration, Login and Password Reset. I require the ability to register/create a new account. Login to an existing account and have an option to reset my password. All registrations receive an SMS-based (OTP) verification code required to complete registration. 1. STORY: Registration. I can register a new account with Merchant Name, Password, Manager name, Phone number of Manager, Email of manager, so that I can begin my Merchant account with minimal friction. 47 All of these fields are required. First and Last Name must pass field validation: Be at least 2 characters for each field. Must be alpha-numeric (no special symbols/emojis/etc.). Max 20 characters for each field. Phone number must pass a phone number format field validation. Must be numeric. Max 10 characters. Email must pass an email format field validation. Max 50 characters. Passwords must be at least 8 characters, and must include at least one of each: Upper Case, Lower Case, Number and Special Character. Max 20 characters. Password will include a toggle icon to switch between masked (“***”) and visible password visibility. The registration view will include a link to switch to the Login view. If the provided email address or phone number already exists in the system as a registered and verified user, an appropriate message (e.g. “Account Already exists, click here to Login”) will be shown to allow the user to proceed to the Login view. Registration actions on the Merchant registration view will record a new user account with role type of “Merchant” and will record the current datetime of registration in the “created_at” user record field. 48 2. STORY: OTP-mail verification. I am required to complete the registration flow by entering the 6-digit numbers provided in an email that I use to register my account to ensure that I am the owner of the provided email. A configuration in the DB will define which verification mode to use. For the verification code mode, a 6-digit confirmation code will be generated and sent to the email specified. The verification code will expire in 5-minute. The mail template will follow this format as: Your Delichill verification code is {{verification_code}}. This code will expire in 5 minutes. Do not share this code to anyone. On the screen for the EU to enter OTP code, it will contain an option to “Resend new confirmation code” to allow the user to receive a new code. Failure to enter a valid code will result in the user record being applied with an “unverified” status. User accounts with this status will allow the user to retry registration using this email (e.g. will NOT generate an “Account already exists” response for future registration attempts). 3. STORY: Login and Password Reset. I can login using my previously-registered phone number and password, and have an option to reset my password (“Forgot Password?”), so that I can authenticate myself as a valid user. It will also include a link to register a new account. A Login failure must differentiate between an invalid (unregistered) email and an incorrect password, providing a type-specific error message to the user. If the user fails a login attempt n-consecutive times (n is a DB-configurable numeric retry count), the application will disallow additional login attempts for n seconds (n is a DB-configurable numeric wait period, in seconds). The “Forgot Password?” link will prompt the user for their phone number and upon submission will respond with “A Temporary Password has been sent to your registered phone number” (when the phone number is a valid match to an active user account) or “Account not found” (when the phone number is not matched to an active user account) or “Account not active, contact support” (when the phone number is matched to an inactive user account). The generated temporary password reset code will expire in n minutes (n is a DBconfigurable numeric expiration period, in minutes) The generated temporary password Email is obfuscated so that it cannot be artificially simulated by a malicious user After entering a temporary password, the system will advance the user to a password reset view, allowing the user to specify a new password. The password field will include a toggle icon to switch between masked (“***”) and visible password visibility. Completing the password submission will provide a validation message (e.g. “Your password has been reset. Please login.”), where the user must return to the login view to login with the new password. The “Don’t have an account yet?” link will advance the user to the registration view. Successfully authenticating will advance the user to their default view. 49 Merchant sign up successfully, his account status is “Unactivate”, an admin has to update from “Unactivate” status to “Activate” status, this account can log in to the Merchant application. II. EPIC: Activation Merchant Account. A restaurant register flow is the same as an End-user flow, but this Merchant account can not work on the system unless the admin enters and verifies by manual, meaning the admin updates the account status as Activation or Deactivation, not only by the OTP code. Registration information includes: manager name, manager phone number, Email (username to login), password (password to log in) 1. STORY: Admin verify the merchant account. Admin has the new Merchant list when Merchant register on Merchant application, these accounts have a “Deactivation” = “Không hoạt động” Status, the administrator must update this status become “Activation” status. Then this Merchant can log in. 50 III. EPIC: Main function list on merchant application. 1. STORY: Manage my account. Merchant can reset the password and view the merchant profile (all information is not changed) Update closing hours, if a user chooses to enter this restaurant, the message "This restaurant is out of service, please choose another restaurant". Address update: support turn on device location to locate restaurants. Update the bank account of the restaurant. See what kind of restaurant, VIP or not configured by the administrator. 2. STORY: View the merchant rating. The EU can leave the review text and a star rating to the Merchant, after the completed order. The merchant rating is counted by the average of the total number of stars On My merchant profile, user can view the merchant rating (AVG) The number of stars is shown in a rating review: on each order in the “Completed” status, from 1star to 5 stars. M clicks on “View Detail” on each notification to view the review. 51 3. STORY: Get notification about my new order and Process it. A user places an order, the system finds the most suitable Shipper and he accepts the delivery, finally, a notification about this order will be pushed to this merchant. The first order status is “New”, it is automatically updated, Merchants can not reject this order, but the End-user can. From “New” status, M updates to “In Progress” status by hand. From “In Progress” status, M updates to Delivery status by hand. 4. STORY: View the order history and Process the order. Order history has 4 tabs: New, In Progress, Delivered, Completed. 52 o New = Mới: M gets an announcement about the new order, which is placed by an EU and accepted by a Shipper and corresponding to the "Receiving food" = "Đang nhận món" status of shipper. o In Progress = Đang làm: M update the order status from "New" to "In Progress", this order information will be synchronized on the whole system. o Delivered = Đã bàn giao: M update the order status from "In Progress" to "Delivered", this order information will be synchronized on the whole system. o "Completed" = “Hoàn thành”: when shipper delivery successfully, the orders will be moved from Delivered tab to Completed tab. In this time system counts commission or profit for related roles (EU, Shipper, Merchant). o “Canceled” = “Hủy”: the list canceled order is from Cancel action of the EU. Each tab includes an order list with the latest to farthest time order, within this year, each record is shown: the Order_ID, Total bill, Created time. Clicking on each record to go to the detailed order. 53 Order details include: 1. Order_ID 2. Created time 3. The the order status 4. Information of the driver delivering 5. Name of customer and destination of the order 6. Item name, description, topping (if has), the amount of item, general note 7. The price of each item and total price 8. Promotional code customers use 54 5. STORY: View the balance history and the current balance. The balance is depending on the Completed orders. The system keep tracking and record Merchant’s balance by every order’s value in real-time, with Completed order is corresponding “Not paid” = “Chưa thanh toán” status. This balance status must be updated by administrator, update “Paid” = “Đã thanh toán” status updating is done, this final balance will be reset to 0. 6. STORY: View my notification list. Notification function of the system using Google Firebase, at the moment Google is free for this function When a Shipper updates the status of the order is completed, notify this M about this order. The format notification is: " Receiving {amount} VND from an order with code {Order number}" = "Nhận được {số tiền} vnđ từ đơn hàng có mã {Mã đơn}" Receive general notification from admin: text + images. 55 Receive notification about the rating of the successful order. The format notification is: "Your rating is {number from 1 to 5} star from the order with ID {Order_ID}. View detail" = "Bạn nhận được đánh giá {con số} sao từ đơn hàng mã {mã đơn hàng}. Xem chi tiết". Click "View detail" to see the detailed review. IV. EPIC: Main function list on merchant website. Including the function list of the merchant application and the below listing. 1. STORY: Manage my main menu. Including the function list of a merchant's application and Merchant can submit a menu to an administrator. In this pending menu, M can create, update, and remove food items. When the administrator approves this pending menu, it’s become an official menu and could be published. Within 7 days from the date of posting, M can edit the menu. 2. STORY: Manage the suggestion menu. Including the function list of a merchant's application and Merchant can submit a menu to an administrator. In this pending menu, M can create, update, and remove food items. When the administrator approves this pending menu, it’s become an official menu and could be published. Within 7 days from the date of posting, M can edit the menu. 3. STORY: View my published menu. This menu has: o Each item food includes the Item name, topping (if has), quantity in stock, available/ unavailable status of this item, available/ unavailable status of topping o From the first approval of an administrator, the M can update without approval. 4. STORY: Manage my promotions. There are 4 types of promotions, which are pre-installed by the system, M chooses 1 of them to apply, corresponding data of this Merchant. They can be effective after 60 minutes submitted They are: o Discount percent (%) o Charge the amount o Attached product/item (Buy A get a product list) The promotions tabs includes Upcoming promotion, waiting to approve promotion, Canceled promotion, and In Progress promotions, Completed promotion. Filter by status. 56 5. STORY: Manage my Affiliate Marketing Programs. There Affiliate marketing lists are created by the administrator. Filter by status. The promotions tabs includes Upcoming Program, waiting to approve Program, Canceled Program, and In Progress Program, Completed Program 6. STORY: View my statistics. Report about my Promotions: o Sale report, Order (order history, all orders - finished or canceled), Money, Payment Status, Payment Information Report about my Affiliate Marketing Programs: o Clicks, purchases/clicks, success orders, campaign cost, the number of total users participating in each campaign o Total user participation, Conversion Rate Administrator – Website I. EPIC: Manage Merchant/ Restaurant Account. 1. STORY: Create a new Merchant account. This merchant list is from 2 ways: Case 1: Merchant is created by admin. Case 2: Merchant is registered successfully by itself on Merchant application, then administrator gets the Merchant account in Pending status, he must update to Activate status, meaning Merchant have to get approval from admin to activate the account. 57 There are 4 stautus: Waiting for Approval - Verified, Active - Deactivate Merchant login to the app to see the status is Verified or not. 2. STORY: Update Merchant system. The admin has permission to update the profile of the Merchant. 3. STORY: Manage the request list to update Merchant’s menu. On a Merchant application, Merchants submit a new request, admin will receive a new record on the Request menu list in pending status, these menus will be published after 60 minutes, without approval by the admin. Merchant updated the menu (with a text notice), Admin gets the Updated Menu list. o If Admin rejects this request, He will input the text reason and the rejected Merchant will get the notification on the application. o If Admin approves, this menu will be published everywhere. 58 II. EPIC: Manage End user Account. 1. STORY: Create a new End user (EU) account. There are 2 types of user account (EU): Normal End User and KOL. Normal end user (Normal EU) has the function list on A End-User mobile app Stories KOL is a normal end user, who achieves 1000 friends, KOL gets a higher rate than the normal EU. o These EUs can register accounts with activation mechanisms by SMS or can be created by the admin. 2. STORY: Update EU. The admin has permission to update all information of the EU. EU registered successfully, the default status is Active, admin can be updated to Deactivate. 3. STORY: View the important information of the EU. 59 Order history Balance and the balance history His 5 level down-line tree: the detailed users of level 1, the profits he gets from this tree. 60 The withdrawal request list and the request history View report about his joined Affiliate list. 61 III. EPIC: Manage Shipper Account. 1. STORY: Create a new Shipper (S) account. ● Shipper is only created by admin, meaning Shipper can not register an account with activation mechanism by SMS by normal. 62 ● ● ● A shipper can register by himself. The Shipper account also has 4 statuses like Merchant: Waiting for Approval Verified, Active - Deactivate Admin must validate it and update the shipper account status, then the Shipper can be allowed to access the system, and topping up to receive the new order / new delivery. 63 2. STORY: Update Shipper. The admin has permission to update the profile of Shipper. 64 3. STORY: View the important information of the S. ● Delivery history 65 ● Balance and the balance history ● The withdrawal request list and the request history 66 ● View his profile information, driver licence, the rating from End user. 67 IV. EPIC: Manage transaction history of Shipper Account. 1. STORY: View the transaction list of all Shippers. 68 \ ● ● ● ● ● System records all actions and can update the Shipper’s balance. Admin only view and can not change this list. This list can be filtered by time. Report the current balance of each Shipper. The actions directly affected to the balance are: o Shipper top-up to this balance. o Shipper approve to confirm the delivery. 69 o o 2. The completed order. EU cancel the paid order, which is done by payment. STORY: Rules for Shipper’s balance. The amount shipper earns after 24 hours is the available balance, the new delivery fee amount has not been withdrawn. ● A minimum withdrawal request allowed is 200k ● A minimum required to receive a new delivery is 500k ● So for each withdrawal, there must be a minimum of 700k in the Shipper account. ● V. EPIC: Manage transaction history of Merchant Account. 1. STORY: View the transaction list of Merchants. ● ● ● ● VI. System records all actions can update the Merchant’s balance. Admin only view and do not change this list. Report the current balance of each Merchant. The actions directly affected to the balance are: o The completed order. o EU cancel the paid order, which is done by payment. o Admin update following the withdrawal request of Merchant. EPIC: Manage Landing Page and Policy. 1. STORY: Update Landing Page. ● Website: Admin can update information on Landing Page: o Banners: header, footer. o Text: address, phone number, email, company name. o News: Policy term. ● End user’s Application: Admin can update the Policy screen on application. 70 VII. EPIC: Manage type of Merchant Account. 1. STORY: Merchant type. ● System defines Merchant type include: o Normal type does not have a blue tick, that is shown in the Merchant profile. o VIP type has a blue tick that is shown in the Merchant profile. ● Admin select the type for each Merchant. VIII. EPIC: Manage general category. 1. STORY: Create / Edit / Delete the general category /tags list. ● The general category is used for all merchants in the system. ● Merchants only use it, and do not edit this category. ● The general category is the tag list, which is shown on the Search screen on the EU application. ● Admin can create, edit and delete the general category. 71 IX. EPIC: Manage menu of Merchant. 1. STORY: Approve the request list about Merchant’s menu. ● This menu is created by Merchant in Pending status, 24 hours after sending request, if Admin does not update Pending status to Active status, system does it automatically. ● Do not approve, then Admin must enter the reason for refusing, the restaurant will receive a rejected notification. ● In the Active status, this menu can be published. 72 2. STORY: Create / Edit / Delete all items on this Merchant’s menu. ● Admin can create a new item, edit item information (images and text), or delete it, before updating active status. X. EPIC: Manage main menu, topping list of Merchant. Each item on the Main menu has a topping list, adding a topping item will count amount to the total bill. 1. STORY: Approve the request list about Merchant’s menu. ● This menu is created by the Merchant owner in Pending status, 24 hours after sending request, if Admin does not update Pending status to Active status, system does it automatically. ● In the Active status, this menu can be published in all systems. 73 2. STORY: Create / Edit / Delete all items on this Merchant’s menu. ● Admin can create a new item, edit item information (images and text), or delete it, before updating active status. 74 XI. EPIC: Manage suggestion menu of Merchant. This suggestion menu is shown on My cart screen of the EU's application, each Merchant has one. 75 1. STORY: Approve the request list about Merchant’s suggestion menu. ● This menu is created by Merchant in Pending status, 24 hours sending request, if Admin does not update Pending status to Active status, system does it automatically. ● In the Active status, this menu can be published in all systems. 76 2. STORY: Create / Edit / Delete all items on this Merchant’s suggestion menu. ● Admin can create a new item, edit item information (images and text), or delete it, before updating active status. ● Almost all merchant information can be updated by admin. Some exceptions are ID Merchant, sharing link and username to log in. 77 XII. EPIC: Manage Promotion list of Merchant. 1. STORY: Approve the Promotion list of Merchant. ● Merchants send one or more Promotions based on available structure in Pending status, Admin have to update Pending status to In Progress status, the Promotions can be active. ● If discount for 1 restaurant party, apply like 3 coupons below: ● Buy items get a product list ● Discount ● Percentage reduction ● In case of mass discounts (by category): Discounts by restaurant category, Restaurant type, Percentage discount, Maximum value for discount amount, Specific amount discount, By category of dishes, According to the payment method, Minimum Order Value. 78 2. STORY: Create / Edit all Promotions. 79 ● Admin can create a new Promotion, edit it, before updating active status. 80 3. STORY: Turn On/ Turn Off a Promotion. ● Admin can set the priority to show on EU application. 4. STORY: Set the priority of a Promotion. ● Admin can set the priority to show on EU application (by changing the priority number). XIII. EPIC: Manage the Order list of Merchant. 1. STORY: View the order list. 81 ● ● ● XIV. All orders with all status are shown in the list, the latest update is on the TOP position. Each record is each order. Filter by Merchant, by status. EPIC: Manage the Delivery list. 1. STORY: View the delivery list. ● All deliveries with all status are shown in the list, the latest update is on the TOP position. ● Each record is each delivery. ● Filter by Shipper, by status. 2. STORY: Configure the delivery fee 82 ● ● ● XV. Delivery fee is shipping cost (original). Admin can configure the rate (%) what system will deduct per order. Formulas: ○ 1km = x vnđ (x is unit price - defined by admin); ○ 5km: system will deduct 20%; ○ 7km: system will deduct 20% (for first 5km) + 22% for 2km; EPIC: Manage the refund order. Context: User has paid an online payment order, then Shipper on the way to receive food, meaning the delivery is on “Going to get food” status, and the End user cancels this order. 1. STORY: View the refund order. ● When the EU clicks cancel successfully, at the same time the following steps are activated: ○ Voucher code, if used, can still be activated and used like this time (if valid) ○ Cancel the recognition results for the referrer if any, meaning if added, the system subtracts accordingly. 83 ● ● ● XVI. ○ Cancellation of recognition results for successful sharers. All deliveries with “Canceled” status are shown in the list, the latest update is on the TOP position. Each record is each delivery. Filter by Shipper, by time. EPIC: Manage payment for the Merchants. 1. STORY: Config the time to calculate a revenue milestone. ● System records all actions can change the Merchant’s balance. ● External checking accountant to see if the data match or not, if there are no mistakes, admin transfer money from outside and update to “Paid ”status. ● Admin only view and can not change this list. ● System config the time to calculate automatically the Merchant's revenue on Monday and Thursday for successful orders. ● Every milestone amount has two status: o Unpaid: admin has not updated to the Paid status yet, the Merchant’s balance is added to Revenue amount X, and the payment actions proceed outside. o Paid: admin has updated from Unpaid status, the Merchant’s balance is subtracted X. 84 XVII. EPIC: Manage payment for the End user Account. 1. STORY: View the withdrawal request of End user. End user sends a request with an amount, every request is a record. If admin updates from Unpaid status to Paid status, the EU’s balance will be subtracted equal to this amount. 2. STORY: Config a withdrawal limited for the EU. ● Admin sets the minimum withdrawal limit for the EU, the EU can send a withdrawal request. 85 3. STORY: View EU withdrawal history and statistics. ● Filter by time (latest month, 3 latest month, this year). ● View the report about total withdrawal money by time. XVIII. EPIC: Manage the Shipper Account balance (Deposit money). 1. STORY: View the recharge requesting of the Shipper. ● Shipper recharges to account by sending money to Delichill banking account (by a defined syntax), every request is a record. ● Delichill admin receives list requests report, updates the balance for shipper. 86 XIX. EPIC: Manage server: SMS, email server. There is some important information to manage-configure the SMS and email server, and the admin can view them. XX. EPIC: Manage payment method. 1. STORY: Turn On / Off payment methods. ● System has 3 payment methods, including MOMO, VNPAY and ATM Card. ● Admin can turn On or turn Off these methods. 87 XXI. EPIC: Manage Affiliate Campaign (AC) List. 1. STORY:About AC. ● Based on the business model to build successfully computational formulas related to the components or objects in the system. Understand that when the user participates in one of the flows of each AC, the system will record and evaluate to calculate the benefits for each related object. ● New people referral campaign, Food introduction campaign, Restaurant introduction campaign are pre-set, admin is not created manually. ● Each AC has counted the users number, who have joined this AC, admin can edit this number by manual, and it is shown on EU applications. ● Corresponding to each sharing link, important information is required combined as follows: Which restaurant, what dish, who is the sharer, who successfully ordered the order, 5 up-line of the sharer, 5 up-line of the ordered user, reoccurred time, valid link time. ● Reoccurred time: This is a time limit that if passed, the shared link is no longer valid and assigned to that shared object, and the sharer will not receive any benefits. 2. STORY: System config the formula for dividing money by involved parties (System, Shipper, EU shares link, EU places order who clicks on link, EUs belong to 5 UP-LEVEL of EU share link, , EUs belong to 5 UP-LEVEL of EU places order) If the order is delivered successfully, the system updates simultaneously: o Total bill = Shipping fee + Food fee. o Shipping fee = Delichill gets 15% + The shipper gets 85%. o Food fee = Delichill gets 20% + 80% for Merchant. o Delichill gets 20% = 100% = 80% for the related commissions + 20% for Delichill officially. o 80% for the related commissions = 121 parts. o 121 parts = 100 parts for the Referral or EU shares link + 21 parts. o 21 parts = Delichill gets 6 parts + 15 parts. o 15 parts = 5 * 3 parts, shares for 5 users who belong to 5 up-lines of the Referral, if not enough 5 levels, Delichill will get the rest. There are 2 cases: o Case 1: According to the above Rule, User A places an order successfully who is introduced by user B, 100 parts B takes, the last 15 parts are divided by 5 up-lines of B. o Case 2: A places an order by himself, no one introduces, with the above formula, but Delichill will take 100 parts, the last 15 parts are divided by 5 up-lines of A.. For orders, after COUPON is deducted, they will be charged for Affiliate. In the case of sharing a restaurant, if there are many products in the shopping cart, calculate the commission for stakeholders from the correct formula as above. In the case of sharing food, if there are many products in the shopping cart, only commission for related parties from section 121, for the particular dish of the share 88 link. For example, an order has $ 100, there will be a $ 15 shipping fee, $ 85 for food, then the restaurant will be charged 80% of $ 85. In this case, the order is only $ 20 which is the price of the item in the share link, so the commission from 121 is 20% of 20 $. XXII. EPIC: Manage user device to push notification. 1. STORY: View device list. ● System collects all EU device information. ● Admin only view and do not change this list. XXIII. EPIC: Push notification from admin. 1. STORY: Send a notice by manual. ● Admin input the title and the text to send to all users in this system at the same time. ● Admin can select one of the user types to send: EU or S or M. ● Admin can select a specification device to notify. XXIV. EPIC: Configure the big screen of the EU application. 1. STORY: Configure a waiting screen. ● Admin choose 3 KOLs, who will be shown on the waiting screen. ● Admin can configure the welcome-screen images. 89 2. STORY: Configure a Homepage creen. ● Admin change banner list: image and link. ● Configure a Searching results: if Admin do not configure the searching result, it will work by logic, which is relevant distance from a Shipper to a Merchant: o NEARBY = “GẦN NHẤT”: the Merchant list result is within 10km, the priority is from near to far. o BEST SELLER = “BÁN CHẠY NHẤT”: the Merchant list result is within 5km, based on the total orders from the first completed order, the priority is 90 ● ● from the highest to the lowest. Please view more: “3. STORY: Configure a Searching results”. o TOP RATING = “TOP ĐÁNH GIÁ”: the Merchant list result is within 10km, based on the average star number of each Restaurant, the priority is from the highest to the lowest, the same star is shown randomly. Please view more: “3. STORY: Configure a Searching results”. Friend Hub: if End user has friends, the Friend-hub shows the friend list by random. If not or without logging-in, Friend-hub list is the KOLs by random; Admin can set up the priority of KOLs list. KOL list, Healthy list, Drink list and Food list follow the same rule of Friend hub. Admin can set up the priority. 3. STORY: Configure a Searching results a. Set up the TOP RATING MANUAL LIST. ● In the BEST REVIEW table of Restaurant, “Số ưu tiên” is automatically calculated exactly with the actual average rating of each Restaurant. The highest number is 100 corresponding to 5 STAR. ● This number is automatically calculated and edited by Admin. ● The higher number and the last updated it shows up first in the search result list b. Set up the TOP SALE MANUAL LIST. ● In the restaurant's best-selling results (TOP SALE): “Đơn thành công” is the total number of sold orders with "Successful" status for each restaurant. ● This number is calculated automatically and edited by the Admin. ● The higher number and the lasted updated it is, the more it is displayed first in the search result list. 91 XXV. EPIC: View the statistics. System show the raw data based on the data listed above: ● End User list; ● Shipper list; ● Merchant list; ● Order list; ● Delivery list; ● Promotion list; ● Affiliate Campaign list; Non-functional Requirements Performance: Response time: less than 1.5 seconds for each request from users Stress test, load test: System can run good with about 1 000 000 request/day; about 10 000 – 12 000 CCU (Concurrent users). Availability: runable 24/7; commimtent of of downtime less than 5h/year; Security: Anti virus: We buy this service from Amazon. Anti DDOS: First, we design rules in sourcecode to ban any account for a time if it spam. Second, we use services from CloudFlare to anti DDOS. To avoid risk from internal DeliChill staff, we set 1 admin account can login to 1 and only one device; (In phase 2, we will develop functions to save all admin actions). 92 Supportability: Android >= 6.0 and IOS >=10.0; Chrome, safari; Any update, fix bug will not affect to availability of platform. Server design suggestion Cloudflare: Cloudflare is one of the biggest networks operating on the Internet. People use Cloudflare services for the purposes of increasing the security and performance. In this system, we buy this service to anti DDOS Load Balancing: Load balancing refers to the process of distributing a set of tasks over a set of resources (computing units), with the aim of making their overall processing more efficient. Load balancing techniques can optimize the response time for each task, avoiding unevenly overloading compute nodes while other compute nodes are left idle. Amazon S3: Amazon Simple Storage Service is storage for the Internet. It is designed to make webscale computing easier for developers. Amazon S3 has a simple web services interface that you can use to store and retrieve any amount of data, at any time, from anywhere on the web. It gives any developer access to the same highly scalable, reliable, fast, inexpensive data storage infrastructure that Amazon uses to run its own global network of web sites. The service aims to maximize benefits of scale and to pass those benefits on to developers. 93 API 1 – API 2: Server for EU Mobile App API. We built 2 servers to increase performance and backup. In case 1 server is down, the other server is still working normally. If a servers down, It will auto START after 5 minutes. Wed 3 – Web 4: Server for EU Web App API. We built 2 servers to increase performance and backup. In case 1 server is down, the other server is still working normally. If a servers down, It will auto START after 5 minutes. Admin + Merchant: This server will process for Admin and Merchant. Server backup: This server is backup for all other servers. Amazon CloudDB: Save all data Cloud DB (provided by a Vietnam service provider): To save user information and for the Vietnam Government Law. 94