Fix A Plate

A sustainable food management system! This semester-long project is aimed at reducing food waste by encouraging sustainable eating and shopping habits. This is not your standard food tracking app. Fix a Plate allows you to minimize waste by creating custom shopping lists, managing ingredients, and sharing recipes. Our users are not only making improving their body but also save their wallets by prioritizing resource utilization.

#

Overview

Fix A Plate: The One App For Sustainable Eating

Checkout our different features and how they all connect with each other.

User Info Screen

Users can input their own height, weight, and gender to get personalized calorie goal.

Pantry

Easily add, remove, and monitor what items are in your pantry.

Meal Data Visualizations

The meal page keeps track of your meals and you can see different data visualizations of your daily and monthly calories.

Global Recipes

The recipe page allows you to create recipes and access all other recipes created by other users.

Shopping List

You can easily add ingredients that you are missing for a certain recipe to your shopping list or update the whole list.

Smart System

Every page is interconnected for example the recipe page will let you know if you have enough ingredients and will allow you to update your shopping list accordingly.

Demo Video

User Interface

Take a visual tour of our user-friendly interface or check out our wireframes.

Login Page

Login Page Image

Key Features

  • Create an account a new account or login
  • Account information is securely saved in Firebase
  • Login and account creation checks for null and empty inputs

Profile Page

Profile Page Image

Key Features

  • Enter height, weight, and gender
  • Info stored in the user database
  • Easily accessible from any screen

Input

Input Page Image

Key Features

  • Enter meal and estimated calorie count.
  • Displays calculated calorie goal
  • Displays daily and monthly calorie calorie intake using MPAndriodChart

Shopping List Page

Shopping List Page Image

Key Features

  • Easily increase and decrease quanities of items
  • Checkboxes represents buying the item
  • Once items are bought they are moved to your pantry and recipes are updated

Ingredients Page

Ingredient Page Image

Key Features

  • Add and remove ingredients from pantry
  • Pantry database is linked to each individual user
  • Enter quantity, calories, expiration date etc

Recipe Page

Recipe Page Image

Key Features

  • Global cookbook database for all to enjoy
  • Submit a new recipe
  • Sort and filter through all recipes
  • Indicates whether you have enough ingredients in pantry
  • Easily add missing items to shopping list

Design and Architecture

Domain Model Image

Domain Model

A domain model is a conceptual representation of the key entities, relationships, and rules within a specific domain or area of interest. It visually outlines how different components interact and are structured, providing a clear understanding of the system's core elements and their connections. Domain models are often used in software development to align technical implementation with real-world concepts, ensuring that the system accurately reflects the domain it serves.

SD Diagram Image

Sequence Diagram

The sequence diagram illustrates the interactions between the user, IngredientsViewModel, ingredients, and Firebase. The use case is for when the user edits the quantity of ingredients in the pantry. The first user action is a button press, which triggers two alternative flows within the IngredientsViewModel: If the user presses the "increase" button, the increaseQuantity function is called, which in turn updates the ingredient's quantity in Firebase and consequently updates the Ingredient object. If any other button is pressed, the second flow checks if the ingredient quantity is less than one; if true, the removeIngredient function is called, leading to updates in both the ingredients list in Firebase and the ingredient's quantity. The diagram displays the relationship between the user, viewmodel, and the database to modify the ingredient data; resulting in a change in both the application state and the backend database.

UseCase Image

Use Case

A use case diagram is a type of UML (Unified Modeling Language) diagram that visually represents the functional requirements of a system. It illustrates the interactions between users (actors) and the system to achieve specific goals or "use cases." These diagrams are used during the analysis and design phases of software development to capture the essential behaviors and functionalities of the system from the user's perspective.

DCD Image

Design Class Diagram

A DCD (Design Class Diagram) is a type of UML (Unified Modeling Language) diagram that shows the detailed design of classes within a software system. It illustrates the internal structure of classes, including their attributes, methods, and the relationships between them. The DCD is typically used during the design phase of a software project to refine and detail how the system's classes will interact, providing a blueprint for developers to implement the system.

mvvm Image

MVVM Architecture Evidence

MVVM is an architecture used to separate code in a way that improves the readability and maintainability of code in applications. MVVM has three aspects: Model, View, and View Model. The model represents the base data structures or classes of information the application uses. In the context of our application, Firebase represents the model that holds the firebase authentication and database access information. We also have a User model which holds a user's information such as name, recipes, ingredients, and shopping lists. View represents the visual elements that the users interact with. In our app, this is currently shown through the login and registration screens as this is where we use Firebase to manage users. In future sprints, we will be utilizing the realtime database for functionality of the recipes, shopping lists, etc. The final aspect of MVVM is View Model, which acts as a mediator between view and model. Within our application, this is the file FireBaseViewModel, which is used to extract data from the Model (Firebase), perform the authentication of the user, and send information back to the view. The view calls on functions held within the View Model that use data from the model to perform the request or action and report back to the view.

Conclusion and Reflection

Reflecting on our journey with "Fix A Plate," we take pride in the strides we've made toward reducing food waste and promoting efficient resource use. Throughout the development process, we encountered challenges such as miscommunication and limited knowledge of Android Studio and Firebase. However, by fostering open communication and debriefing after each sprint, we were able to learn from our experiences and improve our workflow. These efforts allowed us to overcome obstacles and ultimately deliver a product that aligns with our vision. The process not only strengthened our technical skills and project management abilities but also deepened our commitment to sustainable practices. We're excited to see the positive impact our app will have on fostering sustainable eating habits.