AVAILABLE COMPONENTS Mobile Component Web Component PITCH Every true "foodie" worth their salt knows that some of the best food in any city can be found on food trucks - but knowing when and where those trucks will be can be next to impossible, and discovering new ones often relies on word-of-mouth that is long on tales of delicious, but short on actual details. FoodTruck TrackR was designed to make finding and eating at a food truck fast, easy and fun. Quickly see all of our Operator partners' nearby food trucks that currently open, view their current real-time GPS location, know the scheduled arrival and departure times, view photos, read customer reviews and much more, all in our easy to use app. Try FoodTruck TrackR today, and enjoy the best food YOUR city has to offer. MVP
-
User can register/create an account as either a
operatorordinerby providing, at a minumum, a uniqueusername, a validemailand a strongpassword. (mobile, web) -
User can log in as an
operatorordinerusing theusernameandpasswordprovided on signup/account creation. (mobile, web)- each
dinermust have, at a minimum, the following properties:username: Stringpassword: StringcurrentLocation: GPS coordinates or physical addressfavoriteTrucks: Array of thediners favorite trucks
- each
operatormust have, at a minimum, the following properties:username: Stringpassword: StringtrucksOwned: Array oftrucks that the operator owns
- each
-
Authenticated
operatorcan create, view, update and delete atruckobject. Atruckmust have, at a minimum, the following properties: (web, mobile)-
imageOfTruck: Image or image URL -
cuisineType: String -
customerRatings: Array of allcustomerRatingvalues -
customerRatingAvg: Integer equal to the mean of the values contained in thetruckscustomerRatingsarray. -
menu: [menuItems]- a
menuItemobject musty have, at a minimum, the following properties:itemName: StringitemDescription: Stringitem photos: an Array of images or image URLsitemPrice: Double or FloatcustomerRatings: Array of allcustomerRatingvaluescustomerRatingAvg: Integer equal to the mean of the values contained in thecustomerRatingsarray.
- a
-
currentLocation: This object must have, at a minimum, the following properties:location: GPS coordinates or physical address of the current location of thetruck.departureTime: Datetime that thetruckwill depart thecurrentLocation
-
nextLocation: optional. Object must have, at a minimum, the following properties:location: GPS coordinates or address of the next location that thetruckwill go.arrivalTime: Datetime, the estimated/scheduled time thetruckshould arrive at the currentnextLocation.departureTime: Datetime that thetruckis scheduled to depart thenextLocation
-
-
Authenticated
dinercan search fortrucksby the following criteria: (mobile, web)trucksnear thediner'scurrentLocation. Query should return alltrucks with acurrentLocationwithin the defaultradSize.- results must also be filterable by the following properties:
cuisineTypeof atruckcustomerRatingAvgof atruckradSize: desired radius distance fromuser'scurrentLocation(should use the default value forradSizeif not specified bydiner)
-
Authenticated
dinercan view search query results as either a List or a map with annotations/pins. (mobile) -
Authenticated
dinercan input acustomerRatingfor atruckor amenuItemand it will be added to the appropriatecustomerRatingsArray. (mobile) -
Authenticated
dinercan view, add and deletetrucks in theirfavoriteTrucksArray. (mobile) STRETCH -
Authenticated
operatorcan create, update and delete apromotionfor atruckand/or amenuItemthat will be displayed on theirtruckprofile. When thepromotionis first created, a push notification with details of the promotion should be sent to anydinerwho has thattruckin theirfavoriteTruckslist. (web, mobile) -
Authenticated
dinercan upload photos ofmenuItemsor atruckwhen they are within a givenradSizefrom thattruck. (mobile) -
Implement a feature that lets an authenticated
dineradd atrucknot already listed on the platform, and a process for anoperatorto claim and verify ownership of atruckfrom this list. (web) -
Implement at least one of your main views using SwiftUI. (iOS)