App
- Location: The UI can be found under
src/App.js
- Working: Configures Native base, Fonts, Push Notification, Apollo, Authentication and Navigation.
- Result: Everything is set up to load the subsequent view based on whether or not the user has authenticated. The tutorial screen will appear initially if the user has not authenticated; else, the menu screen will appear.
Register
- Location: The UI can be found under
src/screens/Register/Register.js
Its mutation can be found undersrc/apollo/server.js
with constantcreateUser
- Working: Registers User using Google, Facebook or Manual Registration
- Result: Users that join using Facebook or Google will immediately receive their profile pictures as well. Any option that is chosen causes a backend auth token to be created and sent to the frontend.
Login
- Location: The UI can be found under
src/screens/Login/Login.js
Its mutation can be found undersrc/apollo/server.js
with constantlogin
- Working: Logins User using Google, Facebook or Manual Registration. A separate component for ForgotPassword is also present its component can be found
src/components/ForgotPassword
Its mutation can be found undersrc/apollo/server.js
with constantforgotPassword
- Result: Logins User with validation. If a user uses forgotPassword an email will be sent to him with reset link for changing his/her password.
Menu
- Location: The UI can be found under
src/screens/Menu/Menu.js
Its query can be found undersrc/apollo/server.js
with constantcategories
- Result: Fetches categories of the items
MenuItems
- Location: The UI can be found under
src/screens/MenuItems/MenuItems.js
Its mutations and queries can be found undersrc/apollo/server.js
with constantfoods
andsrc/apollo/client.js
with constantsfoodItem
andgetCartItems
- Working: Apollo has two primary file servers.and client in js.js While the second file is used for internal application level state management, the first file is utilized to communicate with the api server. While foodItem is a fragment, the queries constants foods and getCartItems are queries.
- Result:
foods
is queried with the selected category in the previous screen. If a user clicks add button inside the MenuItems screenfoodItem
fragment is executed which also updated querygetCartItems
which updated the quantity inside cart item as well as the adds the food item if it exists previously will only update its quantity.
ItemDetail
- Location: The UI can be found under
src/screens/ItemDetail/ItemDetail.js
Its mutations and queries can be found undersrc/apollo/server.js
with constantlike
andsrc/apollo/server.js
with constantfoodItems
andgetCartItems
- Working: Constants
foodItems
andgetCartItems
have been described abovelike
is a mutation which adds it to like food with parameter food id.
Cart
- Location: The UI can be found under
src/screens/Cart/Cart.js
It has Apollo constants ofgetCartItems
andgetProfile
.getProfile
is located atsrc/apollo/client.js
- Working: Constant
getProfile
is a type of query that gets user details name, email, phone, location and picture. - Result: The
getProfile
is used to get the user delivery location.
Payment
- Location: The UI can be found under
src/screens/Payment/Payment.js
It has Apollo constantsplaceOrder
andgetCartItems
.placeOrder
is located atsrc/apollo/server.js
Its a mutation. - Working: Constant
placeOrder
send the details to the server with item delivery address payment status and user profile. - Result: The user chooses between using Stripe or Paypal to pay. If the Cash on Delivery option is chosen, no payment is made and the payment status is still pending. From the admin panel, its status can be modified. The user is also given access to the order details through email.
MyOrders
- Location: The UI can be found under
src/screens/MyOrders/MyOrders.js
It has Apollo constant ofmyOrders
located atsrc/apollo/server.js
its of type query - Result: All the users orders are queried with an option to reorder it for the user.
Settings
- Location: The UI can be found under
src/screens/Settings/Settings.js
It has Apollo constants ofupdateUser
,uploadPicture
,profile
andgetProfile
. ConstantsupdateUser
,uploadPicture
andprofile
are located insrc/apollo/server.js
while constantgetProfile
is located atsrc/apollo/client.js
- Working:
updateUser
is of type mutation where the user information is updated.uploadPicture
is of type mutation where the users profile pic is updated on server.profile
is of type query where the user profile is queried. - Result: User profile is updated with image uploaded. All the fields in settings are required to place order.
Notifications
- Location: The UI can be found under
src/screens/Notifications/Notifications.js
It has Apollo constants ofgetNotifications
its of type query located insrc/apollo/client.js
- Results:
getNotifications
gets all the notification that the user has notification are generated when the order status is changed from admin panel.
OrderDetail
- Location: The UI can be found under
src/screens/OrderDetail/OrderDetail.js
It has Apollo constants oforderItem
its of type fragment located insrc/apollo/client.js
- Working:
orderItem
has all the details for item as well as the status of the order based on the status the timeline is rendered dynamically