Deliverable 3: MVP - alejoriosm04/F2F GitHub Wiki

Table of Contents


1. Architecture & Data

1.1. Deployment Diagram

Deployment diagram

What changed

  1. Added the gunicorn and nginx to Programs.
  2. Added "dall-e-2" model to API node along gpt-3.5-turbo.
  3. Specified the PostgreSQL version.
  4. Specified operating version system (was "Ubuntu Jammy", now is "Ubuntu 22.04.1").
  5. Switched from an AWS EC2 instance to an Oracle Cloud instance.
  6. Updated libraries:
    1. Removed pandas and pillow.
    2. Specified matplotlib version.
    3. Added dotenv, openai, and django-bootstrap.
  7. Changed "ChatGPT 3.5" to "gpt-3.5-turbo".
  8. Downgraded to Python 3.10.12 from Python 3.11.1.

1.2. Component Diagram

Component diagram

Architectural overview

We use an MVC architecture where each component is, for the most part, directly mapped to a Django "app".

Module descriptions

  1. Authentication: Handles the sign-up, login, logout, and session.
  2. Recipes: Generates and displays recipes and their corresponding images.
  3. Kitchen: Creates ingredients and reminds user to update it.
  4. Statistics: Generates and shows a report.
  5. User: Handles editing and deleting accounts.

What changed

No changes.

1.3. Data Model

Data model diagram

What changed

  1. Fixed the relationship between Ingredient.user_id and User.id (was User.username).
  2. Removed the fields first_name, last_name, is_staff, is_active, is_superuser, date_joined from the User table as they were not that important to represent our system, but they still exist as fields in Django's default User model.
  3. Removed the fields unit_count and measurement_unit from the Ingredient table.

Data dictionary

User
# Column Data type Description
1 id int Unique id.
2 email varchar Used for log-in.
3 password hash Log-in credentials. Not stored as plain-text.
4 last_login date Last time the user interacted with the system.
Kitchen
# Column Data type Description
1 user_id int Id of the user.
2 last_modified_at timestamp Unix time when the user last modified any ingredients.
Recipe
# Column Data type Description
1 id int Unique id.
2 user_id int Id of the user for whom the recipe was generated.
3 title varchar Title generated by the LLM.
4 description varchar Steps of the recipe generated by the LLM.
5 prompt varchar Prompt sent to the LLM to generate the recipe
6 generated_at timestamp Unix time when the recipe was generated.
7 is_favorite boolean Whether the user marked the recipe as favorite.
Ingredient
# Column Data type Description
1 id int Unique id.
2 user_id int Id of the user that created the ingredient.
3 name varchar Name of the ingredient (user inputted).
RecipeHadIngredient
# Column Data type Description
1 recipe_id int Id of a generated recipe.
2 ingredient_name varchar Name of the ingredient at the time the recipe was generated.

2. Corporate Image

Color palette

Color palette

A complementary .ase file can be downloaded from here.

Fonts

Fonts

Glory and Montserrat are both licensed under the Open Font License.

Logo

Logo

Generated with Microsoft Image Creator.

Slogan

Slogan

We want to emphasize that our app uses the ingredients you already have so that they don't go to waste.

Screenshots from application

Main screen

Main screen

Kitchen

Kitchen screen

Recipe

Recipe screen

3. Repository

  1. requirements.txt.

    Generated with the pipreqs package (which only includes packages that have been imported in the project).

  2. README.md with installation instructions.

4. Video

http://www.youtube.com/watch?v=iu1o0oV7v0w

5. Project management

5.1. Backlog

Sprint backlog: https://github.com/users/alejoriosm04/projects/1/views/3?filterQuery=iteration%3A%22Iteration+3%22

5.2. Weekly Meetings

  1. Weekly 8: 2024‐03‐19
  2. Weekly 9: 2024‐04‐04
  3. Weekly 10: 2024‐04‐11
  4. Weekly 11: 2024‐04‐16

5.3. Retrospective