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.
Checkout our different features and how they all connect with each other.
Users can input their own height, weight, and gender to get personalized calorie goal.
Easily add, remove, and monitor what items are in your pantry.
The meal page keeps track of your meals and you can see different data visualizations of your daily and monthly calories.
The recipe page allows you to create recipes and access all other recipes created by other users.
You can easily add ingredients that you are missing for a certain recipe to your shopping list or update the whole list.
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.
Take a visual tour of our user-friendly interface or check out our wireframes.
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.
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.
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.
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 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.
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.