Skip to content

CSCI 150 Software Specification

martin8051 edited this page Dec 10, 2020 · 25 revisions

Food Truck Hunter Project

Contents

  1. Introduction
  2. Description
  3. Requirements
    3.1 UI Requirements
    3.2 Functional Requirements
    3.3 Non-functional Requirements
  4. Prioritization
  5. Diagrams

1. Introduction

1.1 Objective

Food Truck Hunter is an IOS application aimed to help customers and vendors find one another. This document contains a collection of requirements for the development of this application. These requirements will be beneficial for the software development and provides an outline of the overall project to keep the developers and clients on track.

1.2 Scope

This application serves to help individuals to find delicious food cooked in mobile kitchens and in return allow food trucks to gain new customers and feedback. The application provides many applicable tools that include a map with geo location of Food Trucks nearest to the customer and the ability to also see their closing time and food menu. The customer is also given an option to customize their data as far as adding certain food trucks to their favorites and being able to access their favorite food trucks quickly to give them a better experience. Food Truck Hunter will be free for everyone to download from the App Store giving an ability to a wider audience testing it, expanding the database and leaving a feedback improvement.

The application will be used by two types of users, customer and vendor. Both are required to create an account, which will allow them to access functionalities of application. The account creation and sign in is handled with Google Firebase and Firestore API. After either one creates an account, they will be able to use their credentials to sign in. Users and vendors will have two different views. Users will be taken to a screen showing a list of their favorite food trucks. In addition, they will have access to a map with search functionality and their account settings and information. Meanwhile, vendors will be taken to a dashboard that contains their weekly schedule, basic information, location, and pictures of the menu. However, both users and vendors data are stored on Google Firestore.

1.3 Definitions, Acronyms, and Abbreviations

As described earlier, there are two types of users: customer and vendor. Throughout the documentation, the word vendor and food truck will be used interchangeably as a vendor must own a food truck.

2. Description

2.1 Components

The product is composed of three main components: client, authentication, and database.

2.1.1 The Client

The client is the application which the both customer and vendor uses. With the The application could be downloaded from the App Store. The application will make direct API to Google Firebase Authentication and Firestore.

2.1.2 The Authentication

This component is crucial as it handles the authentication of the client and users. Once the user is authenticated using their email and password, the user will get access to their profile and functionalities of the application.

2.1.3 The Database

The database used for this project is Google Cloud Firestore, which is a NoSQL database. The database contains data such as users and vendors information, user’s favorite food trucks, vendor’s week schedule, vendor’s food menus, and vendor’s locations coordinates. Data is queried directly by the client and to protect the documents from being tampered by users. Each collection is protected by its own rules to protect the documents. Thus, customers and vendors can only modify their data.

An example of the Customers collection:

  • Customers
    • 2te3eFdhGeY2WP3ipTqw
      • email: bobthebuilder@email.com
      • favorites: [{truck_id: 43545454, truck_name: Buck Wild Wings}]
      • first_name: bob
      • id: 32341239
      • last_name: the builder
      • phone_number: 5593334444
      • profile_img: ./img12.jpg
      • reivew_count: 1
      • status: basic
      • type: customer
    • 2te3eFdjk234sfFwql0F3
      • business_license: 90248123
      • email: jameswilson@buckwildwing.com
      • first_name: james
      • id: 12301230
      • last_name: wilson
      • phone_number: 5593330000
      • profile_img: ./default.jpg
      • truck_id: 43545454
      • truck_name: "buck wild wings"
      • type: vendor

An example of the Trucks collection:

  • Trucks
    • fFwED3aR2Rmp0tsin9oP
      • closing_hour: 123a31b
      • email: support@buckwildwings.com
      • cuisine: [american]
      • id: 12031433
      • locations: [36.852848° N, 119.770946° W]
      • menu_ref: /Menus/2s42Fsqock31sd
      • name: buck wild wings
      • owner_id: 12302123
      • owner_name: james wilson
      • phone: 5592221111
      • profile_img: ./img12.jpg
      • rating: 4.3
      • total_reviews: 5
      • type: vendor

An example of the Reviews collection:

  • Reviews
    • GeW3Dw312RWpBmsineo4
      • comment: "wings were great!"
      • helpfulness: {good:0, not_good:0}
      • rating: 4.0
      • reviewer_id: 12301230
      • review_name: diana m.
      • truck_id: 12031433

An example of the Menus collection:

  • Menus
    • 2gHvXwvRlkZM0ZMlGi0y
      • menu:
      • truck_id:

2.2 Users

This application has two types of user. One is the customer that interact with the client application to performs searching food trucks. The second type of user is a vendor. Vendor will use the application to update their closing time, location, add/modify their menu, upload photos of their food.

3. Requirements

3.1 UI Requirements

  • ID - FR1: Login/Register/forgot Password page
    Description: page that allows a user to either log in, to create a new account as a vendor/Customer , or to recover a password
    Dependency: none

  • ID - FR2: Customer Landing page
    Description: Customers that are signed in will be see a landing page with three sub pages: Map page, Customer Settings page, favorites page
    Dependency: FR1

  • ID - FR3: Customer Map Page
    Description: Used to search for nearby food trucks
    Dependency: FR2

  • ID - FR4: Truck page
    Description: Page containing all of a particular Food Truck's information such as hours, location, menu, ability to add Truck to Customer's Favorites
    Dependency: FR2

  • ID - FR5: Customer Settings Page
    Description: page containing information of the user, can be edited/modified if desired and the ability to logout of the app
    Dependency: FR2

  • ID - FR6: Customer Favorites Page
    Description: Page containing all of the Customer's favorite Food Trucks
    Dependency: FR4

  • ID - FR7: Food page
    Description: Page with the image, price, description of a particular food
    Dependency: FR2

  • ID - FR8: Vendor Landing page
    Description: When Vendors login they will see a page with 2 tab pages: Vendor Settings page and Vendor Menu page
    Dependency: FR1

  • ID - FR9: Vendor Settings Page
    Description: Page where Vendors will be able to see/modify info related to their Food Truck: Open/Closed, Name, Location, Closing time and the ability to logout
    Dependency: FR8

  • ID - FR10: Vendor Menu Page
    Description: Page where Vendors will be able to see/edit their menu food items with the attributes: food name, Price, Description, and add a picture of the food
    Dependency: FR8

  • ID - FR11: Get directions to location via Re-direct
    Description: Customers can get directions to a Food Truck
    Dependency: FR4

  • ID - FR12: Call Food Truck
    Description: Customers will be able to call a Food Truck
    Dependency: FR4

3.2 Functional Requirements

  • ID - FR1: Customer Sign up
    Description: User will be able to register as either a Customer
    Dependency: none

  • ID - FR2: Vendor Sign up
    Description: User will be able to register as a Vendor
    Dependency: none

  • ID - FR3: Forgot Password
    Description: Users will be able to request a link to reset their password in the event that they forget it
    Dependency: FR1 or FR2

  • ID - FR4: User login
    Description: Registered users will be able to login to the application
    Dependency: FR1 or FR2

  • ID - FR5: Truck Search
    Description: Customers will be able to search for Trucks
    Dependency: FR1, FR4

  • ID - FR6: Truck View
    Description: Customers will be able to view a particular Food Truck and their info: open/closed, name, location, closing time and menu
    Dependency: FR5

  • ID - FR7: Add Truck to Favorites page
    Description: Customers can add Food Trucks to their Favorites
    Dependency: FR6

  • ID - FR8: Get Directions to Food Truck
    Description: Customers can get redirected to Apple maps to request directions to a Food Truck's Location
    Dependency: FR6

  • ID - FR9: Call a Food Truck
    Description: Customers can be redirected to Phone calling app to call a particular food truck of their choosing
    Dependency: FR6

  • ID - FR10: Favorites Page
    Description: Customers can see their favorite Food Trucks on this page and access them if they choose
    Dependency: FR4, FR7

  • ID - FR11: Edit Customer Name
    Description: Customers will be able to edit their Name
    Dependency: FR2, FR4

  • ID - FR12: Edit Customer Phone Number
    Description: Customers will be able to edit their Phone number
    Dependency: FR2, FR4

  • ID - FR13: Edit Customer Profile Picture
    Description: Customers will be able to edit their Profile Picture
    Dependency: FR2, FR4

  • ID - FR14: Edit Vendor Truck Name
    Description: Vendors will be able to edit their Truck's Name
    Dependency: FR1, FR4

  • ID - FR15: Edit Vendor Truck Open/Closed Status
    Description: Vendors will be able to edit their Truck's Open/Closed Status
    Dependency: FR1, FR4

  • ID - FR16: Edit Vendor Truck Location
    Description: Vendors will be able to edit their Truck's current Location
    Dependency: FR1, FR4

  • ID - FR17: Edit Vendor Truck Menu
    Description: Vendors will be able to edit their Truck's Menu food items
    Dependency: FR1, FR4

  • ID - FR18: Edit Vendor Food item
    Description: Vendors will be able to edit their foods info: Name, Price, Description, and Image
    Dependency: FR17

3.3 Non-Functional Requirements

  • 3.3.1: Responsiveness
    Description: No action should take longer than 4 second to process
    Rational: Allows for a smoother user experience

  • 3.3.2: IOS Compatibility
    Description: IOS users should be a able to utilize this app as long as they have the newest version of IOS installed
    Rational: Allows users to download/install the application

4. Prioritization

Week Deliverables
September 7 Planned Functionality and goals
September 14 Decided Which Tools/ Processes to use
September 21 Connected Project with database
September 28 Sign Up/Sign In Screen and Firebase
October 5 Created signup based on user
October 12 Redirected users to different screens
October 19 Implemented basic map and user settings
October 26 Implemented basic vendor settings
November 2 Updated map to show nearby food trucks
November 9 Added Truck pages for customer to view
November 16 Added Menu and menu items for vendor
November 23 Added basic favorites interface
November 30 Added Phone call redirecting from app
December 7 Redesigned database info for storing menus and favorites

5. Diagrams

Use Case Diagram Class Diagram