1 of 32

Personalised Pantry

2 of 32

Browse various Recipe

Search, Filter, Recipe by name, cuisine, ingredients and

diet restrictions

Give a clear instruction and description about recipes

Add Recipe (Approved by ChatGPT)

Main Features

3 of 32

Meal planner

Filter for exclude ingredients, equipments, difficulty

Alternative tools

Load more recipe from Spoonacular API

Cut-off Feature

4 of 32

Challenge Time!

5 of 32

Get your recipe approved

Chat

6 of 32

Demo Time!

Try your own!

https://project-pantry-beta.vercel.app/

7 of 32

Technology

Frontend

backend

System assistant

Deployment service

Bootstrap 5

Django

GPT-4o-mini

Vercel, Supabase

Render

8 of 32

Development plan

Iteration 1

  • Create document
  • Create server
  • Recipes are visible

Iteration 2

  • Search recipe
  • Sort recipe
  • Filter recipe

Iteration 3

  • Search recipe
  • Sort recipe
  • Filter recipe

Iteration 4

  • Favourite recipe
  • Create recipe
  • UI revision
  • Remake filter recipe

Late

Late

9 of 32

Development plan

Iteration 5

  • Adding badge to added recipe
  • Page for add recipe
  • Remake filter recipes

Iteration 6

  • Google Auth
  • AI approvement
  • AI alternative ingredient
  • Remake Filter finished

Iteration 7

  • Apply AI features
  • Add cuisine tag

Deploy

  • Deployed the website
  • Debug

10 of 32

New Technology and Knowledge

ChatGPT

Imgur

11 of 32

How to write a good and effective prompt?

Task

Context

Exemplar

Persona

Format

Tone (Optional)

12 of 32

Example of a good prompt?

You are a chef embedded inside a recipe-viewing program. You are here to give the alternative ingredient to the users. Answer the question in this JSON format strictly:[{"name":"The ingredient name","description":"The description of the ingredient","amount":number,"unit":"The unit of the amount"},{"name":"The ingredient name","description":"The description of the ingredient","amount":number,"unit":"The unit of the amount"},...] if the ingredient cannot be replaced, for example, you cannot make a fried rice without rice, return [{"name":"","description":"","":number,"unit":""}] strictly.

Task

Format

Exemplar

Persona and context

13 of 32

14 of 32

Problem with the process

15 of 32

The closer to the end, the harder it becomes to reach.

Lack of Pull Request Review

Reason

How to fix?

  • Burnt out (Overworked)
  • Paralleled project from another subject
  • Many minor issues discovered during deployment.
  • Reduce work time for team members.
  • Stop multitasking
  • Check PR in details
  • Working On-Site on Wednesday
  • PR need 2 people to approved
  • Don’t have enough time to check
  • Don’t want to check PR

  • Increase Daily Scrum time from 15 mins to 25-30 mins to review PR
  • New PR will be posted and notified members

The problem we encountered (process)

16 of 32

Even more problems!

  • Problem with Daily Scrum (AGAIN)!
  • Task board abandonment

17 of 32

Technical Problem

18 of 32

What did we encounter during bug bounty?

Cannot upload image to imgur

  • Onrender is a shared IP and imgur limits to 50 request / Hour / 1 IP

Problem with OnRender

19 of 32

Changing deployment host

20 of 32

What did we encounter during bug bounty?

An attack from a

“Mysterious Person”

21 of 32

22 of 32

23 of 32

Why did this happened?

We did not handle all the possible error cautiously

This is beyond our expectations…

24 of 32

Don’t trust GitHub Auto merge

25 of 32

Problem with the filter feature

26 of 32

Problems with testing a program

that use an API

27 of 32

Mocking vs No Mocking

Mocking: the practice of replacing parts of a system under tests with controlled mock versions that simulate the behavior of those parts.

Purpose of each test:

  • Testing the ways the API calls the data -> no mock
  • Testing the functionality of the codes -> mock

(STOP BURNING YOUR API KEY)

28 of 32

Mocking

29 of 32

No Mocking

30 of 32

Improvement from the feedbacks

  • I think it’s going to be better if each recipe has its labels on its panel. For example, Salad has the label “Vegetarian” or kebab has the label “Halal”
  • I think that implementing Google authentication would help validate user content. I also like how you refined your software process to be something that works with your group.
  • I think it's going to be a better application if you also provide a search bar with allergies or does not contain some ingredients. Imagine if you can't eat spicy food, you may want to filter out chili.

31 of 32

Improvement from the feedbacks

  • I think that the "Difficulty" filter should be grouped above with other filters for consistency. Otherwise, the UX design looks straightforward to use. (edited)
  • I think filtering multiple ingredients at the same time would be very helpful, if I have a pineapple and pizza dough in my fridge, I want to filter the recipes that contain both ingredients.
  • I think a cuisine origin filter would be nice such as Thai, Japanese, Italian, None, etc.
  • More work needed for frontend or Revision of UI

32 of 32

Possible Improvement

  • Change AI Model to a different model or a trained AI
  • User can edit Recipe
  • Improve filter to be able to filter all the possible data
  • Using slug instead of PK
  • Sorting of data
  • Refactoring
  • Add captcha