Skip to content

Latest commit

 

History

History
124 lines (70 loc) · 7.79 KB

README.md

File metadata and controls

124 lines (70 loc) · 7.79 KB

PotLuck

PotLuck is a cross-platform flutter application that helps people find recipes based on the ingredients that they already have. We believe in reducing food waste by using every ingredient in your pantry. You can do this by cooking alone or by cooking with friends, pooling together your available ingredients. PotLuck facilitates this process and makes it easy to decide what to cook.

Flutter and Project Setup

  1. Download and install the Flutter SDK for your operating system through the instructions found here.
  • Unless you want to add Flutter to your PATH environment variable every time you want to use it, pay close attention to the section on updating your path permanently.

  • You must follow at least one (or both) of the platform-specific (iOS/Android) sets of instructions to be able to build the app, including instructions for setting up an emulator if you do not have a physical device to install the app to.

  • If installing Flutter on iOS, make sure to follow the steps to install and set up CocoaPods.

  1. In a terminal, clone this repo in a directory of your choice.
$ git clone https://github.com/mariecrane/PotLuck.git
$ cd PotLuck
  1. Follow the instructions in SECRETS.md only through step 2.

  2. Download and install the Google Services config file for your platform.

  • For running on iOS devices:

    1. Download GoogleService-Info.plist

    2. Using XCode, drag the file into the Runner/Runner/ directory of your Flutter app. It is very important to use XCode to complete this step, as the app will not build properly otherwise! Check out this tutorial to see an example of what this should look like.

  • For running on Android devices:

    1. Download google-services.json

    2. Move the config file into the android/app/ directory of your Flutter app. Unlike for iOS, you can do this however you wish.

  1. In a terminal, get the Flutter plugin dependencies for the project.

    $ cd <path/to/project/root>
    $ flutter pub get
  2. Run the app.

  • For running on iOS devices:

    1. Open the project in XCode, if not already opened.

    2. Near the run and stop buttons at the top of the window, select which device to run the app on. You can choose a connected iOS device or an iOS simulator. To run on your own device, you need to set up a signing configuration and trust yourself as the developer on your device.

    3. Press the white Run button in the top left corner of XCode. (Looks like a play button, a triangle pointing to the right.)

  • For running on Android devices:

    1. Open the project in Android Studio, if not already opened.

    2. Near the top of the window, select the device you want to run the app on. If nothing is selected, the dropdown will read "no devices". If no devices are available from the dropdown, you need to connect a physical Android device or create a virtual device.

    3. Press the green Run button toward the top right of the window. (Looks like a play button, a triangle pointing to the right.)

Frequently Asked Question

  1. How do I add/remove friends?
  • To Add: On the Search Page, at the lower right of the page, there is a floating orange button with an add friends icon. After pressing the button, the Friends Page will show. You must know your friend's email address beforehand through off-App communications so that you are able to enter their email in the prompted section. After typing, press the orange Add button. This will send a friend request to that account. Friend Requests show underneath the Friend Requests section on the same page. It is empty if there are none. When you get a request, the friend's image and email will be displayed along with a green add icon. Pressing the icon will add them into your friend list.

  • To Remove: Route to the Friends Page note above's instructions. Your friends are listed on this page. Following their email, there is a red icon. When that icon is pressed, an alert will prompt you to continue or cancel your unfriending request. If confirmed, that account will be taken off you friend's list.

  1. What is the Pantry?

    The Pantry is where you store information about the ingredients you have. It mimics a real pantry, cupboard, refrigerator that contains ingredients for usage. These ingredients in the Pantry can be realistic or to the will of the user. Ingredients can be added and removed at any time. When added to the Pantry, it will also show on the Search page to allow an easier selection of ingredients for the recipe search.

  2. How do I change my profile picture?

    On the Profile Page, the default image is a User with an orange background. When this circle image is pressed, it will prompt the user to change their image to an existing image on their device. There are editing features available.

  3. Can I change my email/password?

    To change your email and/or password, there is an Edit Profile button located on the Profile Page. When pressed, another page will show. In order to change for any option, THE CURRENT PASSWORD MUST BE ENTERED FIRST into the prompted box. Enter the desired new email and/or password into the prompted areas and press the following button to change.

  4. How do I add ingredients that are not in a Pantry to my Search?

    Some users may wish to add additional ingredients that realistically may not be in their possession. Most common cases are for hypothetical searches. On the Search Page, there is a prompted search bar at the top of the page. This can be used to search for an ingredient that may reside in any of the User or Friends' pantries, or it can be used to add ingredients to an others catagory. When an ingredient is typed in, if it does not exist in any pantries, it will prompt to add to the Others section. Press this option and a new drop down will be created, similar to your friends' pantries, where ingredients can be deselected from the search.

Known Issues and Missing Features

  • There is currently no way to revoke a friend request sent to another user.

  • Auto-completions on the Pantry and Search pages lags behind the input when typing quickly.

  • There is no way to specify the amount of each ingredient in a user's pantry, or how much to use in a search.

  • Adding every ingredients of a given user to a search requires selecting every ingredient individually.

  • Not all parts of the app layout scale well to low-dpi screens.

  • There is no way to view more than the first 30 recipe results for any given search.

  • Logging out of an account and then logging into a different acccount may still display the info from the previous account.

  • Error messages are cryptic and unhelpful.

  • Many user actions cause no immediate visual feedback, such as confirming a new profile image choice, until the UI finally receives an update from the back end.

  • App does not fail gracefully in the absence of an internet connection.

  • Recipe page does not display ingredient amounts.

  • There is no way to filter search results by dietary restrictions like allergies, calorie count, micronutrients, vegan, vegetarian, kosher, halal, etc.

  • Ingredients are not sorted by user as they are added to a search.

  • Layout and usage of the search page can be unclear upon first encounter.

  • There is currently no tutorial or onboarding experience for the main app features.