Sample Capstone Project Vineyard An Android Based Healthy Recipe Recommendation Application

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 131

VINEYARD: AN ANDROID-BASED

HEALTHY RECIPE RECOMMENDATION APPLICATION

A Capstone Project
Presented to
the Faculty of the Department of Computer and Information Sciences
University of San Carlos

In Partial Fulfillment
of the Requirements for the Degree of
Bachelor of Science in Information Technology

By
Chris Ray B. Belarmino
Charlene Marie C. Buena
Robee Marie B. Cal
Emilany B. Legaspi

Mary Jane G. Sabellano, MSIT


Faculty Adviser

March 2, 2017
CERTIFICATE OF AUTHORSHIP/ORIGINALITY

This is to certify that the authors are responsible for the work submitted in this
capstone. The intellectual content of this capstone is a product of original work.
Any assistance that the authors received in the preparation and work of the
capstone itself has been acknowledged. In addition, the authors certify that the
materials and literatures taken from other sources are properly quoted.

CHRIS RAY B. BELARMINO


March 2, 2017

CHARLENE MARIE C. BUENA


March 2, 2017

ROBEE MARIE B. CAL


March 2, 2017

EMILANY B. LEGASPI
March 2, 2017
APPROVAL SHEET

This capstone entitled, “VINEYARD: AN ANDROID-BASED HEALTHY


RECIPE RECOMMENDATION APPLICATION” prepared and submitted by
CHRIS RAY B. BELARMINO, CHARLENE MARIE C. BUENA, ROBEE MARIE
B. CAL and EMILANY B. LEGASPI in partial fulfillment for the degree of
BACHELOR OF SCIENCE IN INFORMATION TECHNOLOGY, has been
examined and is recommended for acceptance and approval for ORAL
EXAMINATION.

CAPSTONE COMMITTEE

MARY JANE G. SABELLANO, MSIT


Adviser

ERWIN GAIL V. SARMIENTO GENEVIEVE G. ELVENA


Member Member

ANGIE M. CENIZA
Committee Chair

PANEL OF EXAMINERS

Approved by the Committee on Oral Examination with a grade of PASSED.

ANGIE M. CENIZA
Committee Chair

ERWIN GAIL V. SARMIENTO GENEVIEVE G. ELVENA


Member Member

Accepted and approved in partial fulfillment of the requirements for the


degree BACHELOR OF SCIENCE IN INFORMATION TECHNOLOGY.

MARY JANE G. SABELLANO, MSIT


Chair, Department of Computer and Information Sciences

February 10, 2017


Date of Oral Examination
ACKNOWLEDGEMENT

It is a given that the making of a Capstone Project is strenuous, time


consuming and resource exhausting. With that reason, we are truly grateful to the
select number of people who have helped us see through the completion of this
study.
First and foremost, we would like to extend our immeasurable appreciation
to our adviser, Ms. Mary Jane G. Sabellano, MSIT, who undoubtedly supported us
and granted us the guidance and valuable provisions throughout the length of our
Capstone Proposal and Project.
We also would like to acknowledge our friends, classmates and fellow
researchers for their active participation and eagerness towards the completion of
this undertaking.
In addition, our heartfelt gratitude goes to our parents and guardians who
not only supported us financially, but also offered their aid and comfort in every
possible way they could.
Above all, we express our love and devotion to our Heavenly Father, who
bestowed us the knowledge, passion and patience in order to see this study
through its end.

It was through them that we were able to accomplish so much.

iv
ABSTRACT

Over the years, the volume content and the number of people using the
internet has considerably increased. As people choose to lead a healthier lifestyle,
selecting better and healthier food recipes have posed as a potential problem due
to the overwhelming choices and options available. Filtering with significance is
necessary in order to eradicate redundant or unnecessary information from the
web that hinders individuals in finding the key content that they need. This research
presented an Android-based mobile application that recommended healthy recipes
based on inputted ingredients. The application’s main functionalities were
assessed through a set of pre-defined test cases that rendered an overall
acceptance percentage of 100%. A standardized System Usability Scale, utilized
to evaluate system usability, resulted into an 82.18 total usability score, rendering
the application acceptable. By using the application, individuals were able to gain
a better outlook in creating their own healthy meals and were able to provide
themselves the knowledge needed to transform available ingredients into healthy
dishes beneficial for their lifestyle.

v
TABLE OF CONTENTS

ACKNOWLEDGEMENT .......................................................................................iv

ABSTRACT .......................................................................................................... v

TABLE OF CONTENTS .......................................................................................vi

LIST OF FIGURES ...............................................................................................ix

LIST OF TABLES .................................................................................................xi

CHAPTER 1 INTRODUCTION ............................................................................. 1

Rationale of the Study ....................................................................................... 1


1.1 Statement of the Problem .......................................................................... 2
1.2.1 General Objective ............................................................................... 2
1.2.2 Specific Objectives ............................................................................. 2
1.2 Significance of the Study ........................................................................... 3
1.3 Scope and Limitation ................................................................................. 4

CHAPTER 2 RELATED SYSTEMS ...................................................................... 5

CHAPTER 3 TECHNICAL BACKGROUND........................................................ 13

3.1 Web Scraping .......................................................................................... 13


3.2 Recommender System ............................................................................ 13
3.3 Content-based Filtering............................................................................ 14
3.4 Boyer-Moore Algorithm ............................................................................ 15
3.5 Android Operating System ....................................................................... 16
3.6 Client-Server Architecture ........................................................................ 17

CHAPTER 4 DESIGN AND METHODOLOGY ................................................... 18

4.1 Conceptual Framework ............................................................................ 18


4.2 Analysis and Design ................................................................................ 19
4.2.1 Use Case Diagram and Description.................................................. 19
4.2.2 Sequence Diagram ........................................................................... 25

vi
4.2.3 Database Structure ........................................................................... 26
4.2.4 User Interface ................................................................................... 28
4.3 Development Model ................................................................................. 34
4.4 Development Approaches........................................................................ 35
4.5 Software Development Tools ................................................................... 36
4.6 Project Management ................................................................................ 37
4.6.1 Schedule and Timeline ..................................................................... 37
4.6.2 Responsibilities ................................................................................. 38
4.6.3 Budget and Cost Management ......................................................... 39
4.7 Verification, Validation and Testing .......................................................... 40

CHAPTER 5 RESULTS AND ANALYSIS ........................................................... 41

5.1 Web Scraping and Data Manipulation...................................................... 41


5.1.1 Web Scraping ................................................................................... 43
5.1.2 Data Manipulation ............................................................................. 46
5.2 Recipe Recommendation Algorithm ........................................................ 47
5.3 Application Development ......................................................................... 50
5.4 Application Testing and Evaluation .......................................................... 53
5.4.1 Black Box Testing ............................................................................. 53
5.4.2 User Acceptance Testing .................................................................. 54
5.4.2.1 System Usability Scale .............................................................. 54
5.4.2.2 Results ...................................................................................... 56
5.5 Application Deployment ........................................................................... 57

CHAPTER 6 CONCLUSION AND RECOMMENDATION .................................. 61

REFERENCES ................................................................................................... 62

APPENDICES .................................................................................................... 70

APPENDIX A PRELIMINARY QUESTIONNAIRE ........................................... 71


APPENDIX B PRELIMINARY TEST RESULTS .............................................. 73
APPENDIX C SYSTEM USABILITY TEST QUESTIONNAIRE....................... 77
APPENDIX D SYSTEM USABILITY TEST RESULTS .................................... 78

vii
APPENDIX E SYSTEM USABILITY TEST RESULTS – SCORING ............... 79
APPENDIX F BLACK BOX TESTING – TEST CASES ................................... 80
APPENDIX G SOFTWARE MANUAL ............................................................. 95

USER MANUAL................................................................................................ 104

CURRICULUM VITAE ...................................................................................... 115

viii
LIST OF FIGURES

Figure 1. Recommendation Techniques ............................................................. 14

Figure 2. Boyer-Moore Algorithm Pseudocode ................................................... 16

Figure 3. Mobile/Tablet Operating System Market Share, June 2016 ................ 17

Figure 4. System Framework.............................................................................. 19

Figure 5. Use Case Diagram .............................................................................. 20

Figure 6. Sequence Diagram .............................................................................. 25

Figure 7. Database Structure.............................................................................. 26

Figure 8. Splash Screen ..................................................................................... 28

Figure 9. Login Page .......................................................................................... 28

Figure 10. Reset Password Page ....................................................................... 29

Figure 11. Sign Up Page .................................................................................... 29

Figure 12. Recipe Search Page for Registered Users ........................................ 30

Figure 13. Recipe Search Page for Guest Users................................................ 30

Figure 14. Home Page for Registered Users ...................................................... 31

Figure 15. Home Page for Guest Users ............................................................. 31

Figure 16. User Account Page for Registered Users .......................................... 32

Figure 17. Account Settings Page ...................................................................... 32

Figure 18. Account Settings Page for Google Accounts ..................................... 33

Figure 19. User Account Page for Guest Users.................................................. 33

Figure 20. Incremental and Iterative Model ........................................................ 34

Figure 21. Development Approach ..................................................................... 35

Figure 22. Schedule and Timeline ...................................................................... 37

ix
Figure 23. AllRecipes – Healthy Recipes ........................................................... 44

Figure 24. AllRecipes – Specific Recipe Page.................................................... 45

Figure 25. Vineyard Admin System .................................................................... 47

Figure 26. Algorithms for String Matching – Time Measurements (Gou, 2014) .. 49

Figure 27. Vineyard Recipe Recommendation Algorithm ................................... 49

Figure 28. Black Box Testing Result................................................................... 53

Figure 29. Acquiring a Developer Account ......................................................... 57

Figure 30. Completing the Registration Process ................................................ 58

Figure 31. Publishing an App on Google Play .................................................... 58

Figure 32. Filling in the Details ........................................................................... 59

Figure 33. Publishing the App............................................................................. 59

Figure 34. The Application on Google Play ........................................................ 60

x
LIST OF TABLES

Table 1 Pros and Cons of Content-based Filtering Techniques ......................... 14

Table 2 Use Case Description of Vineyard ......................................................... 20

Table 3 Use Case Description of Splash Screen ................................................ 21

Table 4 Use Case Description of Sign Up .......................................................... 21

Table 5 Use Case Description of Login .............................................................. 22

Table 6 Use Case Description of Reset Password ............................................. 22

Table 7 Use Case Description of Manage Account ............................................ 23

Table 8 Use Case Description of Search Recipe................................................ 23

Table 9 Use Case Description of Extra Filter ...................................................... 24

Table 10 Use Case Description of Save Recipe Offline ..................................... 24

Table 11 Software Development Tools ............................................................... 36

Table 12 Task Assignments ............................................................................... 38

Table 13 Budget for Expenses ........................................................................... 39

Table 14 Top 15 Most Popular Recipe Websites – September 2016 ................. 41

Table 15 Data Scraped and Filtered ................................................................... 46

Table 16 String Matching Algorithms (String searching algorithm, 2016) ........... 48

Table 17 Firebase Spark Subscription ................................................................ 52

Table 18 Five-Point Likert Scale ......................................................................... 56

Table 19 Weighted Mean of System Usability Scores ........................................ 56

xi
CHAPTER 1
INTRODUCTION

Rationale of the Study


A healthy diet is a regime that provides your body the necessary nutrients
it needs to fully function. This involves eating sufficient amounts of food from all food
groups – whole grains, fruits and vegetables, protein, dairy, fat and sugar
(Nordqvist, 2015).
Making better and healthier food choices has posed as a major problem
nowadays due to the considerable amount of change in the lifestyle and food
choices of individuals. The Philippines is not an exception to this. Being a middle-
income country, health has continuously been a major concern. Recent studies
have shown that aside from malnutrition coming from insufficient food intake, there
has been a 400% spike in the number of obesity cases, deeply rooted from the 1%
increase in 1992 to the 5% increase in 2013, and a nearly P5.6 billion loss met due
to different cases of coronary heart disease, stroke and diabetes (Perez, 2016).
Although people are generally aware of the significance of having healthy
and balanced eating habits, there are still difficulties when it comes to actually
translating this knowledge and incorporating it to one’s diet (Wagner, Geleijnse, &
van Halteren, 2011). The lack of competence and confidence in cooking and the
vast effort that should be done through manually browsing a full recipe catalogue,
brought about by the widespread growth of food varieties, is a recognized factor
that prevents people in their creation of healthy meals. People who are known to
be less competent in cooking and are easily frustrated when it comes to exploring
recipes due to time constraint and other factors lean towards consuming
convenience meals, which are generally unhealthy, providing little to no nutritional
value (Cardiff, 2013).
Together with the advancements of technology and the availability of
cooking equipment, numerous online systems have been introduced to aid the
decision making process of individuals in meal selection. Harvey & Elsweiler
(2015) were able to introduce a system capable of generating healthy meal plans,
1
Ueda et al. (2011) introduced a recipe recommender based on user preference,
Ge et al. (2015) created a food recommender mobile application with the help of
user ratings and Geleijnse et al. (2011) introduced a recipe advice system that
facilitates its users in making health-aware meal choices. Other systems include
Yummly, Gojee, SuperCook and Food2Fork. These systems were able to utilize
different approaches when recommending – using a health-aware
recommendation algorithm, using discriminators on recipes through focusing on
their contents, using a matrix factorization approach, and using ratings and tags
generated from users.
Although these systems help ease the problem of food selection, there has
not been a system with the specific goal of recommending healthy food recipes
from a select number of curated websites based on the food in stock or the
ingredients present. Such a system on a mobile platform, incorporated with a
recipe recommendation algorithm, will be a game changer to the problems of
different individuals when it comes to healthy eating.

1.1 Statement of the Problem


1.2.1 General Objective
The main goal of this research was to create an Android-based
mobile application for healthy recipe recommendation utilizing a recipe
recommendation algorithm based on user inputted ingredients.

1.2.2 Specific Objectives


This research aimed at:
1. Making use of a web scraper in extracting healthy recipes
from top recipe websites.
2. Implementing the use of a recipe recommendation
algorithm in recommending healthy recipes based on user
inputted ingredient/s.

2
3. Developing an Android-based mobile application that can
recommend healthy recipes based on user inputted
ingredients.
4. Testing and evaluating the application.
5. Deploying the application in the Android Play Store.

1.2 Significance of the Study


The output of this research was a healthy recipe recommendation
application beneficial to the following:
Parents. Planning healthy meals for the family can be a challenging task
given the constraints in time and the resources available. The application would
be beneficial since parents can easily search for recipes given the ingredients they
have, while still getting to serve healthy food recipes, not risking the family’s health.
Community. People are becoming conscious on the food they eat in order
to prevent diseases from coming their way. An application allowing people to
explore on different kinds of healthy recipes available is very timely for this reason.
This application will benefit the community by providing curated healthy recipe
choices from the ingredient/s provided.
Health Enthusiasts. Looking for category-specific recipes online is a very
tedious task given the thousands of available websites and their recipes. Through
this application, health enthusiasts would be able to easily find recipes that fit their
dietary needs.
Health Industry. The health industry is actively engaging everyone to
convert to a healthy lifestyle for better living. This application strengthens their
cause by providing healthy food choices and making healthy recipes accessible to
everyone, helping promote health and wellness.
Computing Field. People in the computing field and other researchers can
make use of the different information presented in this research. Further
researches can be done to delve deeper into the usage of other techniques and
algorithms in healthy recipe recommender systems or general recommender
systems as a whole.
3
1.3 Scope and Limitation
The system contained various healthy recipe information from 5 chosen
websites found on the Top 15 Most Popular Recipe Websites list for the month of
September 2016 by eBizMBA, http://www.ebizmba.com/articles/recipe-websites.
The websites were as follows: (1) AllRecipes http://allrecipes.com/recipes/, (2)
Chowhound http://www.chowhound.com/recipes/, (3) Epicurious
http://www.epicurious.com/ , (4) SimplyRecipes http://www.simplyrecipes.com/
and (5) EatingWell http://www.eatingwell.com/recipes/. Although these websites
contained a variety of recipes classified accordingly, the scraper only extracted
those found in their main healthy recipe section or tagged generally as a healthy
recipe. Any other pages or subsections in the websites were not included.
The scraping was only done to websites with healthy recipe sections that
purely contain recipe content. Websites with content in blog form or any other
format were not included.
The system made use of a recipe recommendation algorithm in
recommending healthy recipes generated from user input based on ingredient
keywords or any other words associated to ingredients.
The presence of internet connection was needed in order fully make use of
application features, like healthy recipe search, user account creation and saving
of recipe data.
The system only had two specific types of users: (1) Guest User and (2)
Registered User. Only Google accounts were supported during account creation.
The system was rendered as a mobile application running on Android
supporting operating system versions from 4.0 (IceCreamSandwich) or later, and
made use of a web server that allowed the mobile application to communicate with
the recipe recommender through the internet.
The system made use of a scheduler to maintain the application by
manually updating the recipe database once every two months.

4
CHAPTER 2
RELATED SYSTEMS

The rapid advances in technology has brought easier access to information.


Through the internet, millions of people are able to connect and share with
everyone regardless of location, nationality, status or other binding factors. Its
ubiquitousness will continue, made possible by the reality of the world leaning
towards becoming an even more technology-dependent place. Because of this,
people will be fazed with more and more choices, creating a need for tools and
techniques to aid in their processes of decision making and preventing information
overload (Isinkaye, Folajimi, & Ojokoh, 2015).

Web Scraping
There have been several researches known to employ the web scraping
method, with aspects involved with the level of automation, the object used in
extraction, domain dependence and wrapper induction.
Kanaoka, Fujii and Toyama (2014) were able to develop Ducky, a semi-
automatic web wrapper that extracts the data according to CSS selectors, coupled
with a Browser GUI that creates a significant environment for developers to treat
extracted data and integrate it with other services or applications.
DEiXTo (Kokkoras, Ntonas, & Bassiliades, 2013) is a web data extraction
suite that has four critical features that make web extraction easier, namely: (1)
DOM based extraction rules with regular expression support, (2) a matching
algorithm that improves the user’s ability to build well-engineered extraction rules,
(3) visual tools with synchronized DOM and web page representations and (4) a
complete programming language.
Grasso, Furche and Scallhart (2013) developed OXPath, an open source
web scraper that serves as an extension of XPath. Its four extensions include: (1)
a selection based on HTML specifics and visual features with the exposure of all
CSS properties, (2) the execution of user actions on selected nodes where the
scripted interfaces of web applications will interact, (3) navigation through data
5
paginated over many websites through bounded or unbounded navigation
sequences and (4) identification of data for extraction, assembled into hierarchical
records, regardless of its original HTML structure.
Sift (Geel, Church, & Norrie, 2012) is an end-user tool that allows discovery,
collection and organization of web content on the go. It fuses several well-
established techniques in demonstrating a novel approach towards content
aggregation. Furthermore, it enables end-users to participate in the extraction
process and adapt to the mapping rules according to personal preferences.
A prototype system called ClustVX (Grigalis, 2013) generates data
extracting wrappers for any given template-generated web page that contains a
list of structured data in any format with more than two data records.
Zheng, Gu and Li (2012) presented an approach to data extraction that
makes use of an algorithm designed for the record-level extraction tasks that
discovers record boundaries, divides them into separate attributes and associates
them with their values automatically. Also, it works for web pages without the same
templates and it has a wrapper generated work for pages from many distinct web
sources belonging to the same application domain.

Boyer-Moore Algorithm
A number of studies ranging from simple text editors to complex medical
systems have employed the use of the Boyer-Moore string matching algorithm to
aid them in their matching process. Boyer-Moore algorithm is used in text editors
for search and substitute commands and works best in the presence of a
moderately sized alphabet with a relatively long pattern (Asam, 2013).
Allmer (2016) in his study, adapted the Boyer-Moore algorithm, along with
another string matching algorithm called Knuth-Morris-Pratt to target the exact
matching of patterns between nucleotide sequences or DNA.
Another study combined the use of the Boyer-Moore algorithm and a rule
based system in creating a mobile application on Library Book Information (Basari,
Yusop, Hussin, & Shibghatullah, 2014). The researchers made use of the

6
algorithm since it removes the need for time consuming building of indices and it
adapts rapidly to changing text bases.
GNU Grep, a searching feature found in the GNU operating system, makes
use of the Boyer-Moore algorithm. This feature has been known to be fast, as
mentioned in an article by Haertel (2010), since it uses the algorithm and skips an
input whenever it finds a non-matching character.

Recommender System
Recommender systems are automated tools used in information searching
and filtering. Its key goal is to reduce information overload and provide specific
suggestions based on user preferences that can assist in the process of making
decisions. These systems have become an essential part in today’s experiences,
receiving attention in many different areas like artificial intelligence, information
retrieval, data mining, security and privacy, and business and marketing (Jannach,
Zanker, & Felferni, 2011).
Numerous researches employing the use of recommender systems have
been done in the past. Harvey & Elsweiler (2015) presented a web-based system
that automatically generates meal plans based on taste preferences and daily
nutritional guidelines. The system calculates each user’s nutritional requirements
based on their personal information (age, gender, height, etc.). It utilizes a
recommendation algorithm that creates a meal plan aligned to the guidelines given
by international health institutions. Other system functionalities include recipe
sharing, rating, searching and browsing.
Among the most famous recommender systems to date is Netflix. Netflix is
a video streaming site with a wide collection of movies and TV shows. It makes
use of a variety of algorithms to recommend tailored content to its users –
Personalized Video Ranker (PVR), Top-N Video Ranker, Trending Now, Continue
Watching, Video-Video Similarity, Page Generation: Row Selection and Raking,
Evidence, Search and Related Work (Gomez-Uribe & Hunt, 2016).
PersonalTour (Lorenzi, Loh, & Abel, 2011) is a multi-agent recommender
system that aids its customers in finding travel packages based on their
7
preferences. Their process involves determining solutions that match customer
needs by having agents acquire knowledge on past recommendations. Agents are
able to filter, retrieve and utilize information that can be of value to the decision
process done in recommending.
Chandramouli et al. (2011) introduced StreamRec, a real-time movie
recommender system that deals with the downsides of traditional recommender
systems through real-time incremental processing and push-based subscriptions.
It makes use of collaborative filtering, following a two-phased model, in its
recommendation approach and similarity scoring.
Sage (Ronen, et al., 2013) is an all-purpose recommender system by
Microsoft, used and designed as a cloud service. The system explores different
personalized recommendations and relations of items to other items. To form an
all-purpose recommender, it utilizes novel algorithms based on a one-class implicit
feedback. Its various features include, data collection and pre-processing, and
offline modelling.
Group Finder (Yao & Yarosh, 2016) is a content-based recommender for
online support groups. The suggestions made are generated through the
measurements of contents in posts from social and psychological dimensions. The
system uses a multiplicative score function algorithm in determining the scores and
recommends those lowest in the end.
Other noteworthy recommender systems are Yahoo, Amazon, Last.fm,
Youtube, IMDB and Tripadvisor. These systems make use of filtering techniques
that provide each user with recommendations either based on personal
preferences or through collaborative data acquired. Social networks like
Facebook, Twitter and Instagram have also become part of this trend, making use
of these technologies when suggesting what posts to like, groups to join or people
to follow.

8
Recipe Recommendation System
Recipe recommendation has been the core context of many prior works.
Over the years, the collection of recipes found on websites have been continuously
growing, giving users a hard time to select recipes of their choice with the
uncertainty of whether these really match their search specifically. Recipe
recommendation systems exploit various techniques and methods at par with the
advances present in technology, while keeping in mind its rudimentary goal of
creating an easier decision making environment for their users in creating food
choices.

Based on Recipe Ratings


Fernaández-Tobías et al. (2015) presented a novel food
recommender system that suggests recipes through the use of user rating
and tags. They have integrated this into an android-based food
recommender system that uses an implemented rating prediction algorithm.
The application greatly supports users who prefer performing cooking tasks
at home.
Freyne, Berkovsky and Smith (2011) introduced in their study an
analysis report on the use of a variety of techniques in recipe rating
prediction and incorporating this to a machine learning feature selection
algorithm.

Based on Cooking History


Ueda, Takahata and Nakajima (2011) proposed a personalized
recipe recommender that uses recipe browsing and cooking history in
acquireing the food preferences of its users. It breaks down different
ingredients found on the recipes and scores them according to usage and
ingredient specifics.
Another research (Ueda, Asanuma, Miyawaki, & Nakajima, 2014)
done in connection to the researchers’ previous work, still utilized the use
of the browsing or cooking history of its users, but this time employing a
9
more precise cooking recipe scoring method based on food preferences
and ingredient quantity.

Based on Ingredients
Yalvaç, Lim, Hu, Funk and Rauterberg (2014) introduced a mobile
application that serves as a social recipe recommender to help reduce food
waste in households through recommending recipes to a group of
connected people. The application allows for their users to log food and
waste related daily practices and the recipes recommended will be based
on the available ingredients within the group.
Maruyama, Kawano and Yanai (2012) introduced an android-
based system that recommends recipes through the object recognition of
food ingredients. The user would be able to obtain a list of recipes after
pointing a camera to different ingredients.

Based on Ingredient Networks


Chun, Yu and Adamic (2012) presented a study on how
collaborative recipe generation and modification can be possible through
using the web. They showed how the data acquired can be used to extract
insights about regional preferences, modifiability of individual ingredients
and the creation of two kinds of networks: (1) ingredient complements and
(2) ingredient substitutes.

Based on Healthy Food Choices


Geleijnse, Nachtigall, van Kaam and Wijgergangs (2011)
presented a prototype for a personalized recipe advice system that
facilitates its users to make health-aware meal choices based on previous
selections. They also applied the use of a goal-setting mechanism to
stimulate their users into adapting a healthier lifestyle.
Ge, Ricci and Massimo (2015) introduced a mobile recommender
system that offers recipe recommendations based on user preference while
10
taking into account the user’s health. It employs human-computer
interaction design and a health-aware recommendation algorithm.
Wagner, Geleijnse and van Halteren (2011) introduced a context-
aware kitchen with the use of accelerometers embedded on the utensils,
that retrieves and recommends recipes. The system’s main aim is to
gradually increase cooking competence and confidence, and consequently
motivate its users to prepare healthier food.

Other Related Systems


Hanai, Nanba and Nadamoto (2015) in their study on recipe
clustering, proposed a means in classifying the results generated from a
user search according to closely similar pages based on page structure and
important words.
Forbes and Zhu (2011) applied a matrix factorization approach to
recipe recommendation that incorporates content information as a linear
constraint.
Fang, Cheng, Man and Suh (2012) in their paper on intelligent
menu planning, proposed an approach that creates a recipe graph to
capture the co-occurrence of the relationships between recipes from a
collection of menus.
Yohei & Kouta (2014) exhibited the use of discriminators on
practical recipes through focusing on their contents. The researchers made
use of an SVM classifier to help reduce strain in their users’ recipe selection.
There has also been a considerable amount of online systems and
applications that have caught the public eye – Allrecipes Dinner Spinner,
Yummly, Gojee, Tender, SuperCook and Food2Fork.

While these recipe recommendation systems were able to show vast


capabilities in obtaining results catered on user choices, preferences, and
behaviors, not much effort had been done in creating a well-rounded application
specifically directed on recommending healthy recipes through user ingredients.
11
This presented a prospect for the researchers to create an application able to
recommend healthy recipes with content from top recipe websites based on
available user ingredients. Moreover, the researchers saw it fit to incorporate the
use of a recipe recommendation algorithm patterned from the Boyer-Moore
Algorithm to render fast and efficient results when searching for recipes in the
application. The presence of such an application would generally change an
individual’s outlook in creating their own healthy meals and provide them the
knowledge needed to transform available ingredients into healthy dishes beneficial
for their lifestyle.

12
CHAPTER 3
TECHNICAL BACKGROUND

3.1 Web Scraping


Web scraping, also referred to as web harvesting, web data extraction or
screen scraping, is a technique that utilizes different software programs to extract
information or large amounts of data from within web pages so they may be reused
in another context. Scraping has been around almost as long as the web,
oftentimes used as a mechanism for users to access and repurpose individual
information items from different websites (Geel, Church, & Norrie, 2012). The
extraction can be executed through numerous methods – metadata attributes
within the HTML, rules based on the document structure or the textual content
found on the web page.

3.2 Recommender System


Recommender systems are systems used in information filtering that help
deal with the problem of information overload through refining fragments of needed
information from a large amount of unstructured or general information generated
dynamically based on personalized user preferences, observed behavior or known
interests (Isinkaye, Folajimi, & Ojokoh, 2015). These systems undergo three
phases: (1) Information Collection Phase, (2) Learning Phase and (3) Prediction
or Recommendation Phase. For recommender systems to fully achieve its purpose
of having to represent its user’s interests, different types of input are needed which
are acquired from a variety of techniques presented in Figure 1.

13
Figure 1. Recommendation Techniques

3.3 Content-based Filtering


Among the approaches commonly employed by recommender systems,
content-based filtering makes use of information generated from users to create
their suggestions and predictions. This technique neglects the contributions
brought about by other users and is commonly utilized when recommending from
web pages, news articles and publications.
Listed on Table 1 below are the different pros and cons for the Content-
based filtering technique.

Table 1
Pros and Cons of Content-based Filtering Techniques
PROS CONS
 Recommendation accuracy is  Limited Content Analysis or
not affected even without the dependency on metadata from
presence of user ratings. different items, wherein there
 Can adjust recommendation should be a well-organized
results in a short span of time, user profile before actual
recommendation can be done.

14
depending on changes of user  Content overspecialization,
preference. wherein users are restricted on
 Users can get getting recommendation similar
recommendations without to information already present
risking their privacy. in their profiles.
 Can provide explanations
behind how recommendations
are generated to users.

3.4 Boyer-Moore Algorithm


Boyer-Moore Algorithm is a string search algorithm that is usually used on
text editors’ command searching and substitutions because of the property that the
longer the pattern is, the faster the algorithm goes (Pandiselvam, Marimuthu, &
Lawrance, 2014). Developed by Robert Boyer and J Strother Moore, Boyer-Moore
String Search Algorithm is considered as the most efficient string-matching
algorithm due to its preprocessing time complexity of strings. Aside from the
algorithm being used as a standard benchmark for string search literature, it is also
a practical method of choice for exact matching. The algorithm compares the
pattern with the text from right to left manner, utilizing the bad character shift and
good suffix shift approach. It is considered “sublinear” because it basically looks at
fewer characters that it passes (Moore, n.d.).

15
Figure 2. Boyer-Moore Algorithm Pseudocode
(Pseudocode etc for the Boyer-Moore Algorithm, n.d.)

3.5 Android Operating System


A recent report by comScore shows how mobile now represents 65 percent
of digital media time (Sterling, 2016). This brings us to a reality where everyone
can and are utilizing mobile technology for everyday processes. A study done by
Ali (2014), comparing mobile operating systems concluded that Android is more
preferred by mobile device users. As of June 2016, the Mobile/Tablet Operating
System Market Share shows how Android has the market leaning towards it,
accommodating more than half, with 65.58 percent.

16
Figure 3. Mobile/Tablet Operating System Market Share, June 2016
(Mobile/Tablet Operating System Market Share, 2016)

3.6 Client-Server Architecture


Client-server architecture is a type of computing architecture wherein a
server acts as a producer and client as the consumer. The server is the host which
delivers, processes and manages the resources and services requested by the
client (Techopedia Inc., 2016). It usually has databases integrated in them which
means it has a large storage capacity (Sparrow, n.d.). Clients are the ones that
provides the interface to allow a computer user to request services of the server.
It is also the one that displays the results that the server returns (Encyclopædia
Britannica, Inc., 2015). This type of architecture can have one or more client
connected to a central server. This can only happen through a network or through
the use of internet connection (Techopedia Inc., 2016).

17
CHAPTER 4
DESIGN AND METHODOLOGY

The overall usability, features and functionalities were tested through a select
number of users who provided feedback and suggestions to further enhance the
application. To achieve and accomplish the purpose of the study, the researchers
were keen on being able to grasp the entirety of the different topics concerned and
the concepts present, at parallel with defining all the corresponding steps taken
during the set period of time.

4.1 Conceptual Framework


Figure 4 shows the system’s main framework. The process commenced
when the users inputted corresponding ingredient/s to the mobile application. The
acquired inputs were then processed and healthy recipes that matched were sent
back and displayed in the application for user viewing. The recipe recommendation
system consists of four main components, as enumerated in the following:
1. Scraper and Filter: Scraped the data and filtered them accordingly for
storing in the database.
2. Database: Storage for selected information.
3. Recommender: Served as the method for acquiring specific information
needed by the user and producing matching results with the help of a
recipe recommendation algorithm.
4. Scheduler: Managed the manual scraping and filtering of the system to
update the data.

18
Figure 4. System Framework

4.2 Analysis and Design


4.2.1 Use Case Diagram and Description
The application contained two main users, the guest and the
registered user. Registered User capabilities included logging in and
logging out of the application, resetting of password, searching for recipes,
using the extra filters, management of account, viewing of recipe results,
and saving and deleting recipes. Guest capabilities included account
creation, searching of recipes, and viewing of recipe results. Guests had to
first create an account in order to save recipes for offline browsing.

19
Figure 5. Use Case Diagram

Table 2
Use Case Description of Vineyard
Use Case Name: Vineyard
Brief Description: Vineyard - General Overview of the System
Actor: Registered User, Guest User
Opened the mobile application on a compatible
Precondition:
Android phone.
Post-Condition: User successfully uses the application.
A. Splash Screen
B. Sign Up
C. Login
D. Reset Password
Main Flow:
E. Manage Account
F. Search Recipe
G. Extra Filters
H. Save Recipe Offline

20
Table 3
Use Case Description of Splash Screen
Use Case Name: Splash Screen
Brief Description: Both users open the application.
Actor(s): Registered User, Guest User
Precondition: Opened the mobile application on a compatible
Android phone.
Post Condition: The user successfully opens the application.
Flow of Activities: 1. Open the application from an Android
phone.
2. Select an activity: Create an Account or
Sign In.
Alternative Flow: 2.1 If Create an Account is chosen, the user will
be redirected to the Sign-up Screen.
2.2 If Sign In is chosen, the user will be
redirected to the Login Screen.

Table 4
Use Case Description of Sign Up
Use Case Name: Sign Up
Brief Description: A guest user signs up or registers for an account.
Actor(s): Guest User
Precondition: The user must be in the Sign-Up page.
Post Condition: The user is registered in the system.
Flow of Activities: 1. Input all required text fields.
2. Click Sign up button.
or
3. Click sign up with Google Account button.
Alternative Flow: 1.1 If not all text fields are inputted, an error
message will be prompted and the sign in will
be unsuccessful.
1.2 If the text fields contain invalid input, an error
message will be prompted and the sign in will
be unsuccessful.
1.3 If the user wants to cancel signing up, click
on Continue as Guest button.

21
Table 5
Use Case Description of Login
Use Case Name: Login
Brief Description: A registered user logs in to the system.
Actor(s): Registered User
Precondition: The user must already have an account.
The user must be in the Login page.
Post Condition: The user successfully logs in to the system.
Flow of Activities: 1. Input all required text fields – email and
password.
2. Click Log in button.
or
3. Click Sign in with Google button.
Alternative Flow: 2.1 If not all text fields are inputted, an error
message will be prompted and the sign in will
be unsuccessful.
2.2 If the text fields contain invalid input, an error
message will be prompted and the sign in will
be unsuccessful.

Table 6
Use Case Description of Reset Password

Use Case Name: Reset Password


Brief Description: A registered user resets his/her password.
Actor(s): Registered User
Precondition: The user must already have an account.
The user must be in the Reset Password Screen by
clicking the “Forgot Password” link in the Login
Screen.
Post Condition: The user successfully resets his/her password.
Flow of Activities: 1. Input email address used in signing in.
2. Click Reset Password button.
Alternative Flow: 2.1 If an email address that is not registered in
the database is provided, the reset password
will fail.

22
Table 7
Use Case Description of Manage Account
Use Case Name: Manage Account
Brief Description: A registered user edits their account information.
Actor(s): Registered User
Precondition: The user must be logged in to his/her account.
Post Condition: The user’s account information is updated.
Flow of Activities: 1. Go to the Profile page.
2. Click on Account Settings.
3. User edits information they want.
4. Click Edit Details button.
Alternative Flow: 3.1 If not all text fields are inputted, an error
message will be prompted and changes will
not be saved.
4.1 If the user does not want to edit his/her
information, click Back button.

Table 8
Use Case Description of Search Recipe
Use Case Name: Search Recipe
Brief Description: A user searches for a recipe.
Actor(s): Registered User, Guest User
Precondition: The user must be on the Search Recipe page.
Post Condition: The user can view a list of available recipes.
Flow of Activities: 1. User inputs ingredient keyword/s on the
search bar.
2. System returns a list of available recipes for
user viewing.
Alternative Flow: 2.1 If there are no recipes found, a blank Search
Page will be shown.

23
Table 9
Use Case Description of Extra Filter
Use Case Name: Extra Filter
Brief Description: A user searches for a recipe using the extra filter.
Actor(s): Registered User
Precondition: The user must be on the Search Recipe page.
Post Condition: The user can view a list of available recipes.
Flow of Activities: 1. User inputs ingredient keyword/s on the
search bar
or
2. Uses the extra filters (breakfast lunch,
snacks, dinner) located at the lower right
part of the screen.
Alternative Flow: 1.1 If there are no recipes found, a blank Search
Page will be shown.
2.1 If there are no recipes found, a blank Search
Page will be shown.

Table 10
Use Case Description of Save Recipe Offline
Use Case Name: Save Recipe Offline
Brief Description: A registered user saves a recipe for offline viewing.
Actor(s): Registered User
Precondition: The user must be on the Search Recipe page with
recipe results.
Post Condition: The user can view recipes anytime when logged in
to their account.
Flow of Activities: 1. User clicks on Save Offline button found on
recipe thumbnail.
2. The saved recipes will be shown in the
Homepage.
Alternative Flow: 2.1 If user wants to remove the saved recipe,
click the Delete Recipe button on the recipe
thumbnail.

24
4.2.2 Sequence Diagram

Figure 6. Sequence Diagram

The application had been accessed by guests and users, alike. The
splash screen was displayed when users first entered the application. Guest
users were able to choose between using the application immediately or
creating an account. Logging in allowed registered users to perform healthy
recipe search, meal filtering and saving of recipes offline. When a search
for recipes commenced, data inputted were sent to the web server for
processing and recipes matching the input were displayed back in a list in
the application for user viewing.

25
4.2.3 Database Structure

Figure 7. Database Structure

26
Figure 7 shows the database structure of the application. There were
five nodes: (1) content_Directions, (2) content_Ingredients, (3) ingredients,
(4) recipes, (5) time_Stamps and (6) users, representing the main
components of the structure.
The content_Directions node and content_Ingredients node
contained the recipe directions and recipe ingredients, each stored in one
string, individually. The contents were separated through a delimiter (’|’) and
were identified with the use of each specific recipe’s unique ID. The
ingredients node, which contained a list of all the ingredients per recipe,
served as the basis for returning matching recipes in the application’s recipe
search. The recipe node contained a list of unique IDs along with previously
scraped and filtered recipe information – recipe title, recipe description,
recipe url and recipe image url. The time_Stamps node provided a list of the
date and time when a certain recipe was added to the system database.
The users node contained a list of unique IDs of users registered in the
system along with their details, such as email address, name, image url,
user type, password, recipe counter and saved recipes. If the user signed
up through Google, no password child was created for that user.

27
4.2.4 User Interface

Splash Screen
Figure 8 shows the Splash
screen of the application. The “Create
an account” button allowed users to
sign up, while the “Sign in” button
allowed users to login to the
application.

Figure 8. Splash Screen

Login Page
Figure 9 shows the Login page
of the application. Users were able to
choose between logging in normally
with their email and password or
through connecting with their Google
accounts. Unregistered users were
given the option to continue as guest
through clicking the hyperlink at the
bottom section of the page.

Figure 9. Login Page

28
Reset Password Page
Figure 10 shows the Reset
Password page. Users were brought
to this page upon clicking the “Forgot
password?” hyperlink from the login
page. Users were asked to enter their
emails for the resetting of password.

Figure 10. Reset Password Page

Sign Up Page
Figure 11 shows the Sign Up
page of the application. Users were
able to choose between signing up
normally with their name, email and
password or through connecting with
their Google accounts. Unregistered
users were given the option to
continue as guest through clicking the
hyperlink at the bottom section of the
page.

Figure 11. Sign Up Page

29
Recipe Search Page
Figure 12 shows the Recipe
Search page of a registered user. The
users were able to input ingredient
keyword/s in the search input bar.
Each recipe box had a “Save Offline”
button that saved the recipes to the
application Home page. The button on
the bottom right contained meal type
filters – Breakfast, Lunch, Snacks,
Dinner and Others.

Figure 12. Recipe Search Page


for Registered Users

Figure 13 shows the Recipe


Search page of a guest user. The
users were able to input ingredient
keyword/s in the search input bar.

Figure 13. Recipe Search Page


for Guest Users

30
Home Page
Figure 14 shows the Home
page of a registered user. The
recipes saved offline were shown
here. The users were able to input
recipe title keyword/s in the search
input bar and delete saved recipes.
The button on the bottom right
contained meal type filters –
Breakfast, Lunch, Snacks, Dinner
and Others.

Figure 14. Home Page for


Registered Users

Figure 15 shows the Home


page for Guest Users. Clicking the
“Sign up here” button redirected the
user to the Sign Up page.

Figure 15. Home Page for Guest


Users

31
User Account Page
Figure 16 shows the User
Account page. The details of a user
were shown in this section. Clicking
the “Account Settings” button allowed
users who signed up through manual
email credentials to edit their account
information. Clicking the “Sign out”
button logged the user out of the
application.

Figure 16. User Account Page for


Registered Users

Figure 17 shows the Account


Settings page for users who signed
up through manual email
credentials. Users were able to
delete their account or edit their
name and password.

Figure 17. Account Settings Page

32
Figure 18 shows the
Account Settings page for users
who signed up through their
Google accounts. Users were able
to delete their account.

Figure 18. Account Settings Page


for Google Accounts

Figure 19 shows the User


Account Page for Guest Users.
Clicking the “Sign up here” button
redirected the user to the Sign Up
page.

Figure 19. User Account Page for


Guest Users

33
4.3 Development Model
The development of the software was done using the incremental and
iterative model, as shown in Figure 20. In this approach, the software was divided
into several components, each with separate design and build. Each build passed
through the requirements, design, implementation and testing phases. Each
subsequent build release added functionalities to the previous release and the
process continued until the complete system was achieved.
The researchers in the study incorporated the different functionalities of the
application individually – from extraction of recipe data from selected websites,
algorithm creation, database integration and so on. Before the implementation of
the builds, all build requirements were identified and developed, including the
software, hardware requirements and the system design. The testing phases then
followed to ensure that errors and bugs were recognized and fixed. After all the
concluded builds from the subsequent build releases, the system was then ready
for actual deployment.

Figure 20. Incremental and Iterative Model

34
4.4 Development Approaches
The system was developed using the bottom-up approach. The process
started with the creation of the subcomponents and then piecing them together to
form the whole system. The scraper was created first to extract the necessary data
from the websites, then the development of the application along with the creation
of the algorithm and its integration to the search functionality of the application in
displaying the necessary data based on user input. Figure 21 shows a clearer
picture of the approach used in the study.

Figure 21. Development Approach

35
4.5 Software Development Tools
The complete list of software development tools that were used in the
research are demonstrated in Table 11 below.

Table 11
Software Development Tools
Name Version Developer Purpose
Integrated Development
Environment (IDE) for
Android Studio 2.1 Google
developing applications for
Android.
Oracle An object-oriented
Java 8.0
Corporation programming language.
Is a software development
Java SE
Oracle environment used for
Development Kit 8.0
Corporation developing Java
(JDK)
applications.
Adobe Adobe Graphics editor.
CC 2015
Photoshop Systems
Is a set of development
Android Software tools used to develop
Development Kit 5.0 Google applications for Android. It
(SDK) includes required libraries, a
debugger and an emulator.
Extensible Markup
WWW
XML 1.1 Language. Markup
Consortium
language much like HTML.
A cloud-hosted NoSQL
Firebase 10.0.1 Google database with data stored
as JSON.

36
4.6 Project Management
4.6.1 Schedule and Timeline
Figure 22 shows the schedule and timeline of the entirety of the
research conducted.

Figure 22. Schedule and Timeline

37
4.6.2 Responsibilities
Table 12 presents the different tasks that were assigned to each
researcher in the study.

Table 12
Task Assignments

BELARMINO BUENA CAL LEGASPI


PROPOSAL STAGE
Research ✔ ✔ ✔ ✔
Requirements
✔ ✔ ✔ ✔
Specification
Documentation ✔ ✔ ✔ ✔
Proposal Defense

Presentation
DESIGN STAGE
(User Interface Design - Screens)
Splash ✔
Login ✔
Sign Up ✔
Reset Password ✔
Registered User: Home ✔
Registered User: Search ✔
Registered User: Profile ✔
Account Settings ✔
Specific Recipe ✔
Guest User: Home ✔
Guest User: Search ✔
Guest User: Profile ✔
Linking of Screens ✔ ✔
DEVELOPMENT STAGE
(testing and evaluation included in each step)
Web Scraping & Filtering ✔
Database Integration ✔
User Module
User Login ✔
User Registration ✔
Reset Password ✔

38
User Profile ✔
Account Settings ✔
Recipe Module
Algorithm ✔
Search Recipe ✔
Save Offline ✔
Delete Saved Recipe ✔
Extra Filters ✔
Linking of all Modules ✔ ✔ ✔ ✔

4.6.3 Budget and Cost Management


Table 13 enumerates the budget for expenses allocated by the
researchers. No additional hardware was procured throughout the duration
of the study.

Table 13
Budget for Expenses
Item Cost

Document Printing 3,000.00

Internet Consumption 2,000.00

Transportation 500.00

Google Play Deployment 1,500.00

Total 7,000.00

39
4.7 Verification, Validation and Testing
The researchers were in constant communication with their adviser during
the proposal phase of the research. This allowed thorough document check to
identify errors and inconsistencies present, and to make sure that the specific
guidelines set for the proposal document were followed.
The researchers utilized the Black Box technique for software testing. Test
cases were created to determine if the application satisfied the requirements and
worked according to its specifications. Unit testing was conducted in every build to
verify that the development components carried out its function. User Acceptance
Testing was also conducted to further evaluate the application’s usability.

40
CHAPTER 5
RESULTS AND ANALYSIS

This section demonstrates and discusses into a more refined view the
specific objectives mentioned during the first chapter of this study. The data
acquired are shown in various representations (e.g. textual, tabular, graphical) and
are further processed, analyzed and interpreted to gain basis for the summary and
findings.

5.1 Web Scraping and Data Manipulation


Before starting the whole process of web scraping and data manipulation,
the researchers had to identify first the different websites that would be rendered
useful and would meet the set research limitations and objectives. The selected
websites were chosen from the Top 15 Most Popular Recipe Websites list done by
eBizMBA for September 2016. The websites to be scraped, along with their
ranking information are shown in Table 14.

Table 14
Top 15 Most Popular Recipe Websites – September 2016
Other Ranking
Website Link Rank
Information
 338 – eBizMBA Rank
 25,000,000 –

http://allrecipes.com/ Estimated Unique


AllRecipes recipes/84/healthy-recipes/ 1 Monthly Visitors
 98 – Compete Rank
 273 – Quantcast Rank
 643 – Alexa Rank
http://www.chowhound.com/  1,900 – eBizMBA
Chowhound 6
recipes/healthy Rank

41
 6,000,000 – Estimated
Unique Monthly
Visitors
 1,090 – Compete
Rank
 913 – Quantcast Rank
 3,698 – Alexa Rank
 2,414 – eBizMBA
Rank
 4,750,000 – Estimated
Unique Monthly
http://www.epicurious.com/
Visitors
Epicurious search?content=recipe& 7
 1,339 – Compete
special-consideration=healthy
Rank
 1,297 – Quantcast
Rank
 4,606 – Alexa Rank
 2,502 – eBizMBA
Rank
 4,500,000 – Estimated
http://www.simplyrecipes.com/ Unique Monthly
SimplyRecipes 8
?s=healthy Visitors
 946 – Compete Rank
 213 – Quantcast Rank
 6,348 – Alexa Rank
 3,721 – eBizMBA
Rank
http://www.eatingwell.com/
EatingWell 12  3,750,000 – Estimated
recipes/
Unique Monthly
Visitors

42
 1,951 – Compete
Rank
 742 – Quantcast Rank
 8,470 – Alexa Rank

5.1.1 Web Scraping


To aid the process of scraping recipe content from the websites,
the Scrapy library in Python was used. Scrapy, an open-source web
crawling framework around since early 2008, has the main purpose of being
able to provide support for scraping the web. Companies like Dealshelve,
GrabLab, Monetate and Zopper use Scrapy as a tool to scrape the web
(n.d.).
Scrapy is an integrated system that consists of an engine for
controlling data flow between all components, a scheduler for receiving
requests, a downloader for fetching web pages and custom classes, called
spiders, written by users to parse responses and extract items (Myers &
McGuffee, 2015 ). Other libraries and platforms like scrape it and x-ray were
initially considered, but among them Scrapy was chosen since it had tools
with capabilities of both scraping and crawling, it supported proper
selectors, both CSS and XPath, for HTML document navigation, and it had
a stable documentation with a wide community able to assist users who
venture into using the library.
The websites all had different structures, with varying attributes
and components that had to be uniquely identified in order for the scraper
to work and extract only necessary data needed for the system. The spider
created extracted the contents with the use of Scrapy’s support for
identifying items through CSS selectors. The process steps, as
implemented in the scraping code, constituted of the following:

STEP 1. Access the recipe website.


STEP 2. Select a recipe item and generate its link.
43
STEP 3. Use the link and send an HTTP request to each recipe page from
the website.
STEP 4. Scrape the needed data from the page (e.g. recipe title, recipe
description, etc.).
STEP 5. Repeat steps 2-4 until all data are scraped.

For a clearer glimpse of the scraping process done, AllRecipes will


be used as a reference in the succeeding details.

Healthy Recipes
Figure 23 shows the overall list of the healthy recipes found in the
website. The URLs for the pages on AllRecipes were structured in a generic
format: allrecipes.com/recipe/[unique data ID]. For example, the recipe
Quinoa with Asian Flavors with a unique data ID of 199598 had its specific
recipe page at http://allrecipes.com/recipe/199598. After further inspection
of the website’s structure and the code that goes with it, it was determined
that the data-id attribute inside the heart image for each recipe list contained
the unique data ID per recipe item. Having done so, all unique data ID
attributes were utilized for the sending of HTTP requests through Scrapy in
extracting the data.

Figure 23. AllRecipes – Healthy Recipes

44
Extraction of Recipe Details

Figure 24. AllRecipes – Specific Recipe Page

Demonstrated in Figure 24 is a typical specific recipe page on


AllRecipes. The data to be stored in the system database and used in the
application are as follows:
 Recipe URL

 Recipe Title

 Recipe Description

 Recipe Image URL

 Recipe Ingredients

 Recipe Directions

45
After all the data were extracted and filtered, they were then
outputted into a json file and manually combined and formatted for
uploading to the database. The total count of scraped data from the different
websites was 11,297. Table 15 shows the breakdown of the recipes scraped
and filtered per website.

Table 15
Data Scraped and Filtered
Website Recipes

AllRecipes 3,139 recipes

Chowhound 109 recipes

Epicurious 2,119 recipes

SimplyRecipes 50 recipes

EatingWell 5,880 recipes

5.1.2 Data Manipulation


Since the scraping and filtering of data is done, the acquired data
were then stored into the actual system database on Firebase. During the
scraping process, a separate json file was generated per recipe website,
allowing a need to compile and format the outputs properly for storage.
The contents found in the ingredient database were taken from the
What’s Cooking competition in kaggle, https://www.kaggle.com/c/whats-
cooking. The dataset was then further parsed and then outputted into a json
file to avoid ingredient repetition and only save unique ingredient data in the
system database. The ingredient database served as a reference for the
users in inputting keyword-specific items in the application’s search module.
Vineyard Admin, a separate system on a web platform was
created for the sole purpose of ridding the manual uploading of recipe and
ingredient data in Firebase. The web application was developed using the
following technologies – HTML, CSS, JavaScript and Material-UI. As it had
46
already been deployed, it could be accessed via desktop through
https://vineyard-f7e80.firebaseapp.com/. An admin account was needed to
access the system and perform recipe and ingredient updates or deletions.
Figure 25 shows the landing page of the Vineyard Admin system.

Figure 25. Vineyard Admin System

5.2 Recipe Recommendation Algorithm


The system’s main function was to be able to recommend healthy recipes
to different individuals. This was made possible with the use of a recipe
recommendation algorithm fitting to the purpose of returning recipes that match
the different ingredient inputs.
String search algorithm, also called as string matching algorithm, is the
process of finding one or several occurrences of a string within another. Several
known string match algorithms are shown in Table 16.

47
Table 16
String Matching Algorithms (String searching algorithm, 2016)
Preprocessing Matching
Algorithm Description
Time Time
matches a pattern to each string 0
Naïve Θ(nm)
of the same length in the text (no preprocessing)

Knuth-Morris- preprocesses a pattern to obtain


Θ(m) Θ(n)
Pratt a better performance
attempts to establish a best
correspondence of the substring Ω(n/m),
Boyer-Moore Θ(m + k)
with the pattern in reverse worst
direction O(mn)
computes a hash function for a
pattern and then looks for a average
match using the same hash Θ(n + m),
Rabin-Karp Θ(m)
function for each possible worst
substring of the same length in Θ((n−m)m)
the text

A study done by Gou (2014) that provided a comparison between the string
match algorithms concluded that the best algorithm in a majority of cases is the
Booyer-More Algorithm. In the study, Gou made use of two types of alphabets, an
alphanumeric and DNA alphabet, with the algorithms implemented in C++. The
results of the tests done are shown in in Figure 26.

48
Figure 26. Algorithms for String Matching – Time Measurements (Gou, 2014)

With this, the researchers in the study decided to create a custom-made


string match algorithm patterned from the Boyer-Moore algorithm. The algorithm
was implemented in java using the string method contains(), which returned true if
the pattern was found in the given string and false if otherwise. Figure 27 shows a
pseudocode of the custom-made recipe recommendation algorithm patterned from
Boyer-Moore’s string search algorithm.

Figure 27. Vineyard Recipe Recommendation Algorithm

After ingredients were inputted in the search field, they were placed in an
ArrayList. Commas were used as a delimiter for multiple ingredient search. If the
searched ingredients matched an ingredient in a recipe, the flag, in the form of the

49
count variable, was updated. Each recipe in the database were then looped
through, with information such as recipe title, recipe description, recipe image, and
recipe key displayed in the list and stored in separate variables. The ingredients
searched, currently stored in the ArrayList, was then looped through and checked.
If the ingredients were found in a certain recipe, count had been incremented.
Once count was greater than or equal to the size of the ArrayList, the specific
recipes were then displayed into the ListView content in the Search Recipe page.

5.3 Application Development


When people cook, they might already have many materials and ingredients
available in their house, but they have no idea what food would be the best choice
to cook, more so if it would be beneficial for one’s health and diet.
Using the algorithm, the researchers developed a system that would allow
the users to transform everyday ingredients found at home into healthy cooked
meals beneficial for one’s diet and lifestyle. For convenience and wider use
especially when a user views into a recipe while cooking, the researchers
developed the application on an Android platform. Described in detail below is the
application’s outline, including its major modules and functionalities.

The system had the following major modules:


A. User Module
The user module constituted of all activities that could be done by the
system users. Only registered users were able to fully maneuver all functionalities
found in the application. The following are its submodules:
a. Login Module
The login module allowed registered users to access the full
capabilities of the system.
b. Sign Up Module
The sign up module made it possible for guest users to create their
own respective accounts and access the system.

50
c. Profile Module
The profile module was only available to registered users as it showed
their saved information upon user sign up.
d. Settings Module
The settings module was only available to registered users. This
allowed further profile customization and an option for account
deletion.

B. Recipe Module
The recipe module performed all activities that concerned recipe data
manipulation, including search, meal filtering and saving of recipes offline. The
following are its submodules:
a. Search Module
The search module was accessible by both guest and registered
users. After a user inputted corresponding ingredients in the search
field, they were then processed, with help from the recipe
recommendation algorithm, and returned back to the user in list form
for viewing.
b. Save Offline Module
The save offline module allowed registered users to be able to save
chosen recipe data offline. Saved recipes were located and displayed
in a list in the application home tab. Registered users were also able
to delete their saved recipe data.
c. Extra Filter Module
The extra filter module introduced meal filters – Breakfast, Lunch,
Snacks and Dinner that allowed registered users to readily filter
content based on recipe meal type.

51
Listed below are the constraints of the application:
1. The database capacity was also a major constraint of the application.
Table 17 shows the inclusions under the Spark subscription (Free) in
Firebase.

Table 17
Firebase Spark Subscription
Simultaneous Connections 100
Realtime
GB Stored 1 GB
Database
GB Downloaded 10 GB/month
GB Stored 5 GB
GB Downloaded 1 GB/day
Storage
Upload Operations 20,000/day
Download Operations 50,000/day
GB Stored 1 GB
Hosting GB Transferred 10 GB/month
Custom Domain Hosting & SSL ✔

2. The application was expected to run on Android mobile devices with


operating systems under version 4.0 (IceCreamSandwich) or later.
Lower versions were not supported by the application.
3. Internet connection was a major constraint for the application since all
functions such as healthy recipe search, user account creation and
saving of recipe data relied heavily on its presence.
4. For an optimized view and proper usability of all functions of the
application, a screen resolution of 720x1280 was required.

52
5.4 Application Testing and Evaluation

5.4.1 Black Box Testing


Black Box Testing was used to verify if the application did what it
was supposed to do. There were 8 testers involved – the 4 developers and
4 other testers with technical background. The testers were asked to
execute the test cases provided and give a verdict if the test case being
executed was acceptable, where the actual result was the same as the
expected result, and not acceptable, where the actual result was not the
same as the expected result. A total of 71 test cases were generated for the
entire application.

Figure 28. Black Box Testing Result

Figure 28 shows a comparison of the results of the Black Box test


in percentage from the 2 sets of testers. Results showed that 100% of the
test cases were acceptable. This indicated that the application’s
functionalities were successfully integrated and the application, in general,
behaved the way it should. Refer to Appendix F for an accomplished Black
Box test document.
53
5.4.2 User Acceptance Testing

5.4.2.1 System Usability Scale


A number of surveys are available for different
researchers to test and assess the overall usability of their
systems. Some of these are used to evaluate certain types of
interfaces, while others can be used to evaluate an even wider
range of interfaces. The System Usability Scale (Brooke, 1996) is
one survey that can be used for this purpose. It is an inexpensive,
yet effective tool for assessing the usability of a certain system or
product, including websites, applications, interactive voice
response systems, and more (Bangor, Kortum, & Miller, 2009).
The primary objectives of the SUS is to provide a measure of
people’s subjective perceptions of the usability of a system in a
short amount of time available during an evaluation session
(Brooke, 2013). The questionnaire’s ease of administration and
scoring, which yields a usability score in the range of 0-100, makes
it a popular choice among usability professionals (Finstad, 2006).
Bangor, Kortum, and Miller (2008), in their study done
over a ten-year period, described the results of 2,234 SUS surveys
from 206 usability tests. It was found out in the study that SUS was
highly reliable and useful over a wide range of interface types.
Moreover, their study highlighted that SUS was predictive of
impacts of changes to the user interface on usability when several
changes to a single system were done over a large number of
iterations. There were also other researchers who found the SUS
an effective and efficient instrument for assessing usability. Tullis
and Stetson (2004) evaluated the usability of two websites using
five different surveys, namely, the Questionnaire for User
Interaction Satisfaction (QUIS), the Computer System Usability
Questionnaire (CSUQ), the System Usability Scale (SUS), and
54
two other vendor-specific surveys, and reached a conclusion that
the SUS provided the most reliable results across a wide range of
sample sizes.
After having found out of the advantages in using the
System Usability Scale, the researchers came to a verdict of
utilizing the said questionnaire in performing the user acceptance
tests. There were 10 questions found in the standard
questionnaire for rating done by each respondent based on their
level of agreement – Strongly Disagree (1), Disagree (2), Neutral
(3), Agree (4) and Strongly Agree (5). Refer to Appendix C for a
clearer look of the questionnaire utilized.
System Usability Scores were calculated through applying
the following:
 Odd Numbers: Subtract 1 from the score
 Even Numbers: Subtract score from 5
 Overall System Usability Score: Generate sum for all
scores and multiply by 2.5 (converts range of values from
0 – 100)
The weighted mean was then derived from each question
item through summing up all the scores and dividing them by the
total number of respondents. These values were then interpreted
accordingly through using the Five-Point Likert Scale ranges as
shown in Table 18.

55
Table 18
Five-Point Likert Scale
Range Opinion Trend
4.21 – 5.00 Strongly Agree
3.41 – 4.20 Agree
2.61 – 3.40 Neutral
1.81 – 2.60 Disagree
1.00 – 1.80 Strongly Disagree

5.4.2.2 Results
A summary of the corresponding weighted mean per
question item is listed in Table 19. Refer to Appendix E for an in
depth view of the scores generated along with their computed
values.

Table 19
Weighted Mean of System Usability Scores
Attribute Weighted Mean Opinion Trend
Frequency of Use 3.13 Neutral
Complexity 3.10 Neutral
Ease of Use 3.57 Agree
User Dependence 3.37 Neutral
System Integration 3.33 Neutral
Inconsistency 3.30 Neutral
Learning Pace 3.47 Agree
Inefficiency 3.13 Neutral
User Confidence 3.17 Neutral
Learning Ability 3.30 Neutral

56
From the interpreted weighted mean for the System
Usability Scores per item, “Ease of Use” ranked the highest,
signifying that majority of the respondents agree that the
application relevantly easy to use. This was justified further with
“Learning Pace” ranking as second highest, implying that the
respondents consider that most people would learn to use the
system very quickly. “Complexity” ranked the lowest among all
items. This signifies that the respondents found certain
functionalities or other elements in the application unnecessarily
complex.
After having interpreted the results, a total weighted mean
of 32.87 was generated. This was then transformed accordingly,
resulting to an overall System Usability Score of 82.18. Based on
the recommended ranges (McLellan, Muddimer, & Peres, 2012) –
Not Acceptable (0 – 64), Acceptable (65 – 84) and Excellent (85 –
100), the application was found out to be acceptable.

5.5 Application Deployment


The application was successfully deployed to Google Play and users were
able to download it for free. Shown below are the screenshots acquired during the
deployment.

Figure 29. Acquiring a Developer Account

57
Figure 29 shows the screen after the one-time payment of $25 had been
made in order to acquire a developer account. Additional details were then
provided to complete the registration process, shown in Figure 30.

Figure 30. Completing the Registration Process

After which, the “Publish an Android App on Google Play” was clicked to
start the deployment process. Figure 32 shows the details necessary for
deployment. Product Details were inputted to serve as a reference for different
users in downloading the application in the Google Play Store.

Figure 31. Publishing an App on Google Play

58
Figure 32. Filling in the Details

After all the necessary details had been provided, the application was then
published and was under review for a couple of hours to make sure that it followed
the rules and guidelines set by Google.

Figure 33. Publishing the App

Figure 34 shows the successful deployment of the application on Google


Play. Searching for the keywords “Vineyard” or “Team Lamdag”, the application
name and team name respectively, would display the application on the search
results.

59
Figure 34. The Application on Google Play

60
CHAPTER 6
CONCLUSION AND RECOMMENDATION

The researchers proposed Vineyard, an Android-based mobile application


that recommends healthy recipes based on ingredients inputted by different users
who wish to make healthy recipes for their own consumption or for sharing with
family and friends. The application made use of a string search algorithm for recipe
recommendation patterned after Boyer-Moore Algorithm in presenting the search
results, displayed in the application via the time it was saved in the database.
For application verification and validation, the researchers utilized both
Black Box and User Acceptance testing. Test cases were generated according to
how the application worked and functioned, and a standardized System Usability
Scale was utilized to evaluate system usability. During the Black Box testing,
results showed that 100% of the test cases created were acceptable, implying that
that the application worked as expected and behaved the way it should have. The
User Acceptance test resulted to an overall score of 82.18, rendering the
application acceptable.
Some improvements may be done to further enhance and develop the
application. Looking forward, the researchers recommend the use of another
database to possibly explore and compare performance, especially on handling
large amounts of data. Another practical recommendation would be the use of
another algorithm in acquiring and displaying the search results effectively, as the
application’s execution time depends on the algorithm used. An in depth
comparison of algorithms in providing search results would also prove to be a step
towards finding the most optimized algorithm among the pool of algorithms
present. Moreover, the researchers also recommend further automating the
process of filtering the data after scraping.

61
REFERENCES

Books

Jannach, D., Zanker, M., & Felferni, A. (2011). Recommender Systems - An


Introduction. 32 Avenue of the Americas, New York, NY: Cambridge
University Press.

Journal Article

Ali, A. (2014, March 29). A Review of Different Comparative Studies on Mobile


Operating System. Research Journal of Applied Sciences, Engineering and
Technology, 2578-2582.
Bangor, A., Kortum, P., & Miller, J. (2008). The System Usability Scale (SUS): An
Empirical Evaluation. International Journal of Human-Computer Interaction.
Bangor, A., Kortum, P., & Miller, J. (2009). Determining What Individual SUS
Scores Mean: Adding an Adjective Rating Scale. Journal of Usability
Studies, 114-123.
Basari, A., Yusop, N., Hussin, B., & Shibghatullah, A. (2014, March). Hybrid of
Boyer Moore and Rule based System for Mobile Library Book Information.
International Journal of Computer Applications, 90(5).
Brooke, J. (2013). SUS: A Retrospective. Journal of Usability Studies, 29-40.
Brooke, J. (1996). SUS - A quick and dirty usability scale. Usability Evaluation in
Industry, 4-7.
Finstad, K. (2006). The System Usability Scale and Non-Native English Speakers.
Journal of Usability Studies, 185-188.
Gomez-Uribe, C. A., & Hunt, N. (2016, January 4). The Netflix Recommender
System: Algorithms, Business Value, and Innovation. ACM Transactions on
Management Information Systems (TMIS), 6(4). doi:10.1145/2843948
Isinkaye, F., Folajimi, Y., & Ojokoh, B. (2015). Recommendation systems:
Principles, methods and. Egyptian Informatics Journal, 261-273.

62
Isinkaye, F., Folajimi, Y., & Ojokoh, B. (2015). Recommendation systems:
Principles, Methods and Evaluation. Egyptian Informatics Journal, 261–
273.
McLellan, S., Muddimer, A., & Peres, S. (2012). The Effect of Experience on
System Usability Scale Ratings. Journal of Usability Studies, 56-67.
Myers, D., & McGuffee, J. (2015 , October). Choosing Scrapy. Journal of
Computing Sciences in Colleges, 31(1), Pages 83-89 .
Shuib, N. L., Abdullah, N., & Ismail, M. H. (2011). The Use of Information Retrieval
Tools: a Study of Computer Science Postgraduate Students. International
Conference on Science and Social Research, 379-383.
Yalvaç, F., Lim, V., Hu, J., Funk, M., & Rauterberg, M. (2014). Social recipe
recommendation to reduce food waste. CHI EA '14 CHI '14 Extended
Abstracts on Human Factors in Computing Systems (pp. 2431-2436). ACM
New York, NY, USA ©2014. doi:10.1145/2559206.2581226

Conference Proceedings Article

Abel, F. (2015). We Know Where You Should Work Next Summer: Job
Recommendations. RecSys '15 Proceedings of the 9th ACM Conference
on Recommender Systems (pp. 230-230). New York, NY, USA: ACM.
doi:10.1145/2792838.2799496
Chandramouli, B., Levandoski, J. J., Eldawy, A., & Mokbel, M. F. (2011).
StreamRec: a real-time recommender system. SIGMOD '11 Proceedings of
the 2011 ACM SIGMOD International Conference on Management of data
(pp. 1243-1246 ). ACM New York, NY, USA ©2011 .
doi:10.1145/1989323.1989465
Chun, Y., Yu, R., & Adamic, L. A. (2012). Recipe recommendation using ingredient
networks. WebSci '12 Proceedings of the 4th Annual ACM Web Science
Conference (pp. 298-307 ). ACM New York, NY, USA ©2012.
doi:10.1145/2380718.2380757

63
Fang, F., Cheng, T., Man , K., & Suh, Y. (2012). Intelligent menu planning:
recommending set of recipes by ingredients. CEA '12 Proceedings of the
ACM multimedia 2012 workshop on Multimedia for cooking and eating
activities (pp. 1-6). ACM New York, NY, USA ©2012.
doi:10.1145/2390776.2390778
Forbes, P., & Zhu, M. (2011). Content-boosted matrix factorization for
recommender systems: experiments with recipe recommendation. RecSys
'11 Proceedings of the fifth ACM conference on Recommender systems
(pp. 261-264 ). ACM New York, NY, USA ©2011.
doi:10.1145/2043932.2043979
Freyne, J., & Berkovsky, S. (2010). Intelligent food planning: personalized recipe
recommendation. IUI '10 Proceedings of the 15th international conference
on Intelligent user interfaces (pp. 321-324). ACM New York, NY, USA
©2010 . doi:10.1145/1719970.1720021
Freyne, J., Berkovsky, S., & Smith, G. (2011). Recipe recommendation: accuracy
and reasoning. UMAP'11 Proceedings of the 19th international conference
on User modeling, adaption, and personalization (pp. 99-110). Berlin,
Heidelberg: Springer-Verlag.
Ge, M., Elahi, M., Fernaández-Tobías, I., Ricci, F., & Massimo, D. (2015). Using
Tags and Latent Factors in a Food Recommender System. DH '15
Proceedings of the 5th International Conference on Digital Health 2015 (pp.
105-112 ). ACM New York, NY, USA ©2015 .
doi:10.1145/2750511.2750528
Ge, M., Ricci, F., & Massimo, D. (2015). Health-aware Food Recommender
System. RecSys '15 Proceedings of the 9th ACM Conference on
Recommender Systems (pp. 333-334). ACM New York, NY, USA ©2015.
doi:10.1145/2792838.2796554
Geel, M., Church, T., & Norrie, M. C. (2012). Sift: an end-user tool for gathering
web content on the go. DocEng '12 Proceedings of the 2012 ACM
symposium on Document engineering (pp. 181-190 ). ACM New York, NY,
USA ©2012. doi:10.1145/2361354.2361395

64
Geleijnse, G., Nachtigall, P., van Kaam, P., & Wijgergangs, L. (2011). A
personalized recipe advice system to promote healthful choices. IUI '11
Proceedings of the 16th international conference on Intelligent user
interfaces (pp. 437-438 ). ACM New York, NY, USA ©2011.
doi:10.1145/1943403.1943487
Grasso, G., Furche, T., & Schallhart, C. (2013). Effective web scraping with
OXPath. WWW '13 Companion Proceedings of the 22nd International
Conference on World Wide Web (pp. 23-26 ). ACM New York, NY, USA
©2013. doi:10.1145/2487788.2487796
Grigalis, T. (2013). Towards web-scale structured web data extraction. WSDM '13
Proceedings of the sixth ACM international conference on Web search and
data mining (pp. 753-758 ). ACM New York, NY, USA ©2013.
doi:10.1145/2433396.2433491
Hanai, S., Nanba, H., & Nadamoto, A. (2015). Clustering for Closely Similar
Recipes to Extract Spam Recipes in User-generated Recipe Sites . iiWAS
'15 Proceedings of the 17th International Conference on Information
Integration and Web-based Applications & Services. ACM New York, NY,
USA ©2015. doi:10.1145/2837185.2837269
Harvey, M., & Elsweiler, D. (2015). Automated Recommendation of Healthy,
Personalised Meal Plans. RecSys '15 Proceedings of the 9th ACM
Conference on Recommender Systems (pp. 327-328). ACM New York, NY,
USA ©2015 . doi:10.1145/2792838.2796551
Ronen, R., Koenigstein, N., Ziklik, E., Sitruk, M., Yaari, R., & Haiby-Weiss, N.
(2013). Sage: recommender engine as a cloud service. RecSys '13
Proceedings of the 7th ACM conference on Recommender systems (pp.
475-476). New York, NY, USA: ACM. doi:10.1145/2507157.2508221
Salem, Y., & Hong, J. (2013). History-aware critiquing-based conversational
recommendation. WWW '13 Companion Proceedings of the 22nd
International Conference on World Wide Web (pp. 63-64). ACM New York,
NY, USA ©2013 . doi:10.1145/2487788.2487813

65
Schraefel, M., & Zhu, Y. (2001). Interaction design for Web-based, within-page
collection making and management. HYPERTEXT '01 Proceedings of the
12th ACM conference on Hypertext and Hypermedia (pp. 125-125). ACM
New York, NY, USA ©2001. doi:10.1145/504216.504247
Tullis, T., & Stetson, J. (2004). A Comparison of Questionnaires for Assessing
Website Usability. Usability Professionals Association (UPA) 2004
Conference. Minneapolis, USA.
Ueda, M., Asanuma, S., Miyawaki, Y., & Nakajima, S. (2014). Recipe
Recommendation Method by Considering the User’s Preference and
Ingredient Quantity of Target Recipe. Proceedings of the International
MultiConference of Engineers and Computer Scientists . Hong Kong:
IMECS.
Ueda, M., Takahata, M., & Nakajima, S. (2011). User’s food preference extraction
for personalized cooking recipe recommendation. Proceedings of the IADIS
International Conference on e-Society, (pp. 591-594).
Wagner, J., Geleijnse, G., & van Halteren, A. (2011). Guidance and Support for
Healthy Food Preparation in an Augmented Kitchen. CaRR '11 Proceedings
of the 2011 Workshop on Context-awareness in Retrieval and
Recommendation (pp. 47-50). ACM New York, NY, USA ©2011.
doi:10.1145/1961634.1961644
Yao, Y., & Yarosh, S. (2016). Group Finder: Finding the "Right": Online Support
Groups for People in Recovery. CSCW '16 Companion Proceedings of the
19th ACM Conference on Computer Supported Cooperative Work and
Social Computing Companion (pp. 445-448). New York, NY, USA: ACM.
doi:10.1145/2818052.2869091
Yohei, S., & Kouta, O. (2014). Discriminating practical recipes based on content
characteristics in popular social recipes. UbiComp '14 Adjunct Proceedings
of the 2014 ACM International Joint Conference on Pervasive and
Ubiquitous Computing: Adjunct Publication (pp. 487-496). ACM New York,
NY, USA ©2014 . doi:10.1145/2638728.2641326

66
Zheng, X., Gu, Y., & Li, Y. (2012). Data extraction from web pages based on
structural-semantic entropy. WWW '12 Companion Proceedings of the 21st
International Conference on World Wide Web (pp. 93-102). ACM New York,
NY, USA ©2012. doi:10.1145/2187980.2187991
Zhu, Y., & Schraefel, M. C. (2001). Interaction design for Web-based, within-page
collection making and management. HYPERTEXT '01 Proceedings of the
12th ACM conference on Hypertext and Hypermedia (pp. 125-125). New
York, NY, USA: ACM. doi:10.1145/504216.504247
Zoeter, O. (2015). Recommendations in Travel. RecSys '15 Proceedings of the 9th
ACM Conference on Recommender Systems (pp. 234-234). ACM New
York, NY, USA ©2015 . doi:10.1145/2792838.2799500

Web Article

Allmer, J. (2016, February 19). Preprints. Retrieved from PeerJ:


https://peerj.com/preprints/1758.pdf
Asam, V. D. (2013, December 13). Retrieved from Indiana State University
Computer Science: http://cs.indstate.edu/vasam/algo.pdf
Balanced Diet. (2016). Retrieved August 21, 2016, from Nutritionist Resource:
http://www.nutritionist-resource.org.uk/articles/balanced-diet.html
Brown, S. (2010, December). Likert Scale Examples for Surveys. Iowa, United
States of America. Retrieved January 2017, from
http://www.extension.iastate.edu/Documents/ANR/LikertScaleExamplesfor
Surveys.pdf
Cardiff, E. (2013, August 29). One Green Planet. Retrieved August 27, 2016, from
Convenience Foods: Not So Convenient for Your Health:
http://www.onegreenplanet.org/natural-health/convenience-foods-not-so-
convenient-for-your-health/
Companies that are using Scrapy. (n.d.). Retrieved January 14, 2017, from Scrapy:
https://scrapy.org/companies/

67
Encyclopædia Britannica, Inc. (2015, November 23). Client-server architecture. (I.
Encyclopædia Britannica, Editor) Retrieved September 4, 2016, from
Encyclopædia Britannica: https://www.britannica.com/technology/client-
server-architecture
Gou, M. (2014, July 30). Algorithms for String matching. Retrieved from
http://www.student.montefiore.ulg.ac.be/:
http://www.student.montefiore.ulg.ac.be/~s091678/files/OHJ2906_Project.
pdf
Haertel, M. (2010, August 21). why GNU grep is fast. Retrieved from
lists.freebsd.org: https://lists.freebsd.org/pipermail/freebsd-current/2010-
August/019310.html
Hill, J. R. (n.d.). Finding Information on the Web: Strategies and Techniques.
Retrieved from Georgia State University:
http://www2.gsu.edu/~mstmbs/Eval/InfoRetr.html
Jones, M. T. (2013, December 12). Introduction to approaches and algorithms.
Retrieved from IBM: https://www.ibm.com/developerworks/library/os-
recommender1/
Mobile/Tablet Operating System Market Share. (2016, June). Retrieved July 14,
2016, from NetMarketShare: https://www.netmarketshare.com/operating-
system-market-share.aspx?qprid=8&qpcustomd=1
Moore, J. S. (n.d.). Best Ideas - String Searching. Retrieved from
www.cs.utexas.edu: http://www.cs.utexas.edu/users/moore/best-
ideas/string-searching/
Nordqvist, C. (2015, June 4). What is Healthy Eating? What is a Healthy Diet?
Retrieved August 27, 2016, from Medical News Today:
http://www.medicalnewstoday.com/articles/153998.php
Pandiselvam, P., Marimuthu, T., & Lawrance, R. (2014, January). A Comparative
Study on String Matching Algorithms of Biological Sequences. Retrieved
from arxiv.org: https://arxiv.org/ftp/arxiv/papers/1401/1401.7416.pdf

68
Perez, A. (2016, April 1). UNICEF: Obesity in PH jumps 400%. Retrieved August
27, 2016, from CNN Philippines:
http://cnnphilippines.com/news/2016/03/31/unicef-obesity-in-ph.html
Pseudocode etc for the Boyer-Moore Algorithm. (n.d.). Retrieved from Umea
University Department of Computing Science:
http://www8.cs.umu.se/kurser/TDBA59/VT01/mom3/slides/BM-alg.html
Sparrow, P. (n.d.). Client Server Network Architecture. Retrieved September 4,
2016, from I Answer 4 U: http://www.ianswer4u.com/2011/05/client-server-
architectures.html#axzz4JFILt6ud
Sterling, G. (2016, April 3). All digital growth now coming from mobile usage —
comScore. Retrieved July 17, 2016, from Marketing Land:
http://marketingland.com/digital-growth-now-coming-mobile-usage-
comscore-171505
String searching algorithm. (2016, November 10). Retrieved from Wikipedia:
https://en.wikipedia.org/wiki/String_searching_algorithm
Techopedia Inc. (2016). Client/Server Architecture. Retrieved September 4, 2016,
from Techopedia: https://www.techopedia.com/definition/438/clientserver-
architecture
Top 15 Most Popular Recipe Websites. (n.d.). Retrieved August 21, 2016, from
eBizMBA: http://www.ebizmba.com/articles/recipe-websites
Ulman, J. D. (n.d.). Retrieved August 22, 2016, from
http://infolab.stanford.edu/~ullman/mmds/ch9.pdf

69
APPENDICES

70
APPENDIX A PRELIMINARY QUESTIONNAIRE

The researchers conducted a preliminary survey done with Google Forms


which involved 40 respondents. The questionnaire was composed of general
inquiries aligned to cooking, health and recipes. The results of the survey were
utilized to justify the researchers’ claim that a mobile-based application able to
recommend healthy recipes through user inputted ingredients will be beneficial in
uplifting the views of different individuals in the creation of healthy meals.

71
1. Do you cook?
Yes No
If Yes,
 On average, how much time do you have to prepare meals?
_____________
 Do you follow recipes when cooking?
Yes
 Where do you usually get your recipe from?
(Cookbook, Internet, Mobile/Table Apps, TV Cooking
Shows)
__________________________________________
 When searching for a recipe online, what keyword/s do
you often use or recommend? (Ingredient Names,
Recipe Names, Chef Name)
________________________
No
 Would you, if they were made easily available?
Yes No
If No,
 Would you be interested to learn how to cook with the aid of a
recipe?
Yes No
2. Do you feel that you are eating healthy?
Yes No
3. Would you be interested in healthy recipes?
Yes No
4. Would you likely make use of an app which provides a recipe based on the
ingredients you have?
Yes No
5. Would you be interested in using the app as a way to eat more healthily?
Yes No

72
APPENDIX B PRELIMINARY TEST RESULTS

A summary of the preliminary test results is shown in detail below.

Question 1. Do you cook?

Question 1 – If YES,
Question 1.1. On average, how much time do you have to prepare meals?
More or less 40 minutes 20 minutes to 40
1 hour
to 1 hour minutes
45 minutes 1 hour 40 minutes 2 hours
30 minutes 20 minutes 30 minutes to 1 hour
10 minutes 5 minutes

Question 1.2. Do you follow recipes when cooking?

73
Question 1.2 – If YES,
Question 1.2.1. Where do you usually get your recipes from?

Question 1.2.1. When searching for a recipe online, what keyword/s do you often
use or recommend?

74
Question 1.2 – If NO,
Question 1.2.1. Would you, if they were made easily available?

Question 1 – If NO,
Question 1.1. Would you be interested to learn how to cook with the aid of a recipe?

Question 2. Do you feel that you are eating healthy?

75
Question 3. Would you be interested in healthy recipes?

Question 4. Would you likely make use of an app which provides a recipe based
on the ingredients you have?

Question 5. Would you be interested in using the app as a way to eat more
healthily?

76
APPENDIX C SYSTEM USABILITY TEST QUESTIONNAIRE

77
APPENDIX D SYSTEM USABILITY TEST RESULTS

SYSTEM USABILITY RATING


Respondent
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10
1 3 2 4 1 4 2 4 1 3 2
2 5 2 5 1 5 2 5 5 5 1
3 4 3 4 1 2 1 3 2 4 1
4 5 1 5 1 5 1 5 1 5 1
5 5 2 5 1 5 2 5 2 5 1
6 5 2 5 2 5 2 5 1 4 2
7 4 1 5 1 4 1 5 1 5 1
8 3 2 5 1 3 1 4 1 5 1
9 4 3 5 1 4 3 5 3 4 1
10 4 1 5 1 4 1 5 1 4 1
11 4 1 5 1 4 1 4 1 4 1
12 4 2 5 1 4 2 5 2 5 2
13 5 1 5 2 4 1 5 1 5 1
14 4 1 5 2 4 2 3 2 4 2
15 4 2 4 1 5 3 4 2 5 1
16 5 2 4 2 4 2 4 3 5 1
17 4 4 4 1 5 1 4 3 4 1
18 2 3 4 4 5 1 3 3 2 4
19 5 3 4 3 5 2 4 3 3 4
20 5 2 5 1 5 1 4 2 4 2
21 5 2 5 1 4 1 5 1 4 2
22 4 1 5 1 5 1 5 1 5 2
23 5 1 5 1 5 1 5 1 4 2
24 5 2 5 1 4 1 5 1 4 1
25 5 1 5 1 5 1 5 1 5 1
26 4 1 4 1 4 2 5 1 5 1
27 4 1 5 2 5 3 5 1 4 1
28 2 3 3 5 4 3 5 4 2 5
29 2 3 3 4 4 3 4 3 2 4
30 4 2 4 3 4 3 4 2 5 1

78
APPENDIX E SYSTEM USABILITY TEST RESULTS – SCORING

SYSTEM USABILITY SCORING SUS INTERPRE-


Respondent SUM
Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 SCORE TATION
1 2 3 3 4 3 3 3 4 2 3 30 75 Acceptable
2 4 3 4 4 4 3 4 0 4 4 34 85 Excellent
3 3 2 3 4 1 4 2 3 3 4 29 72.5 Acceptable
4 4 4 4 4 4 4 4 4 4 4 40 100 Excellent
5 4 3 4 4 4 3 4 3 4 4 37 92.5 Excellent
6 4 3 4 3 4 3 4 4 3 3 35 87.5 Excellent
7 3 4 4 4 3 4 4 4 4 4 38 95 Excellent
8 2 3 4 4 2 4 3 4 4 4 34 85 Excellent
9 3 2 4 4 3 2 4 2 3 4 31 77.5 Acceptable
10 3 4 4 4 3 4 4 4 3 4 37 92.5 Excellent
11 3 4 4 4 3 4 3 4 3 4 36 90 Excellent
12 3 3 4 4 3 3 4 3 4 3 34 85 Excellent
13 4 4 4 3 3 4 4 4 4 4 38 95 Excellent
14 3 4 4 3 3 3 2 3 3 3 31 77.5 Acceptable
15 3 3 3 4 4 2 3 3 4 4 33 82.5 Acceptable
16 4 3 3 3 3 3 3 2 4 4 32 80 Acceptable
17 3 1 3 4 4 4 3 2 3 4 31 77.5 Acceptable
18 1 2 3 1 4 4 2 2 1 1 21 52.5 Not Acceptable

19 4 2 3 2 4 3 3 2 2 1 26 65 Acceptable
20 4 3 4 4 4 4 3 3 3 3 35 87.5 Acceptable
21 4 3 4 4 3 4 4 4 3 3 36 90 Excellent
22 3 4 4 4 4 4 4 4 4 3 38 95 Excellent
23 4 4 4 4 4 4 4 4 3 3 38 95 Excellent
24 4 3 4 4 3 4 4 4 3 4 37 92.5 Excellent
25 4 4 4 4 4 4 4 4 4 4 40 100 Excellent
26 3 4 3 4 3 3 4 4 4 4 36 90 Excellent
27 3 4 4 3 4 2 4 4 3 4 35 87.5 Excellent
28 1 2 2 0 3 2 4 1 1 0 16 40 Not Acceptable

29 1 2 2 1 3 2 3 2 1 1 18 45 Not Acceptable

30 3 3 3 2 3 2 3 3 4 4 30 75 Acceptable
SUM 94 93 107 101 100 99 104 94 95 99
WEIGHTED 32.87 82.18 Acceptable
3.13 3.1 3.57 3.37 3.33 3.3 3.47 3.13 3.17 3.3
MEAN

79
APPENDIX F BLACK BOX TESTING – TEST CASES

The following test cases were utilized during the Black Box testing phase of
the research.

80
USE_CASE_01_Splash
Screen
USE CASE NO.
The screen shown in the
Description
app's first launch
Test Case No. Description Test Procedure Expected Results Actual Results Status
1. Click the "Create an Should redirect to "Sign Up" Redirects to "Sign Up"
TST_No_01_01 ACCEPTABLE
Creating an account Account" button screen Screen
Should redirect to "Sign In" Redirects to "Sign In"
ACCEPTABLE
TST_No_01_02 Signing In 1. Click the "Sign In" button screen Screen

USE CASE NO USE_CASE_02_Signup


This is where user/s can
Description create an account
Test Case No. Description Test Procedure Expected Results Actual Results Status
1. In the "Sign Up" screen,
enter Name, Email, and
Password twice for Successfully signed up and
TST_No_02_01 Signing Up confirmation. user will be asked to verify Verification email sent; ACCEPTABLE
2. Click the "Sign Up" button email.
below the fields, on the right
of "Cancel";
1. In the "Sign Up" screen,
enter Name, Email, and Error Message "A network Error message "A network
Password twice for error (such as timeout, error (such as timeout,
Signing Up without
TST_No_02_02 confirmation. interrupted connection or interrupted connection or ACCEPTABLE
internet connection
2. Click the "Sign Up" button unreachable host) has unreachable host) has
below the fields, on the right occurred." occurred." appeared;
of "Cancel";
1. In the Sign Up Screen,
click on the "Sign In" button
If Sign-In is successful, user
Signing In using google from Google, located at the
TST_No_02_03 will be redirected to the redirects to Home Tab; ACCEPTABLE
account top of the fields;
Home Tab;
2. Choose/add a Google
account;

81
3. Follow the instructions;
1. In the Sign Up Screen,
click on the "Sign In" button
from Google, located at the
Signing In using google
top of the fields; Error Message "Error "Error Signing In with
TST_No_02_04 account without internet ACCEPTABLE
2. Choose/add a Google Signing In with Google"; Google" appeared;
connection
account;

3. Follow the instructions;


1. In the Sign Up Screen,
Goes back to the Splash goes back to Splash
TST_No_02_05 Cancel Signing Up click on the "Cancel" button ACCEPTABLE
Screen; Screen;
below the fields;
1. In the Sign Up Screen,
click the "Continue as Guest" User will be redirected to the
TST_No_02_06 Continue as guest redirects to Search Tab; ACCEPTABLE
link below the "Cancel" and Search Tab;
'Sign Up" buttons;
1. In the Sign Up Screen,
Signing Up with empty click the "Sign Up" button Error Message "Enter Name"
TST_No_02_07 "Enter Name" appeared; ACCEPTABLE
fields below the fields, on the right will be shown;
of 'Cancel";
1. In the Sign Up Screen,
enter a valid email address
and password twice for
Signing Up with an empty An error message "Enter
TST_No_02_08 confirmation. "Enter Name" appeared; ACCEPTABLE
Name field Name." will be shown;
2. Click the "Sign Up" button
below the fields, on the right
of "Cancel";
1. In the Sign Up Screen,
enter Name and Password
An error message "Enter
Signing Up with an empty twice for confirmation. "Enter email address."
TST_No_02_09 email address." will be ACCEPTABLE
email address field 2. Click the "Sign Up" button appeared;
shown;
below the fields, on the right
of "Cancel";
1. In the Sign Up Screen,
Signing Up with an empty
enter Name and a valid
password field
email address; An error message "Enter Enter password."
TST_No_02_10 ACCEPTABLE
2. Click the "Sign Up" button password." will be shown; appeared;
below the fields, on the right
of "Cancel";

82
1. In the "Sign Up" screen,
enter Name, Email, and
Error Message "The email
Password twice for "The email address is
Signing Up with an email address is already in use by
TST_No_02_11 confirmation. already in use by another ACCEPTABLE
address already registered another account" will be
2. Click the "Sign Up" button account" appeared;
shown;
below the fields, on the right
of "Cancel";
1. In the "Sign Up" screen,
enter Name, Email, and
Error Message "The
Signing Up with unmatched passwords. Went through though
TST_No_02_12 passwords do not match" will ACCEPTABLE
unmatched passwords 2. Click the "Sign Up" button password do not match
be shown;
below the fields, on the right
of "Cancel";

USE CASE NO. USE_CASE_03_Sign In


The screen shown when
Description "Sign In" button is clicked

Test Case No. Description Test Procedure Expected Results Actual Results Status
1. In the Sign In Screen,
enter credentials;
TST_No_03_01 Signing In 2. Click the "Sign In" button Successfully signed in and redirects to Search Tab; ACCEPTABLE
below the fields, on the right user will be redirected to the
of "Cancel"; Search Tab;
1. In the Sign In Screen, click
on the "Cancel" button below Goes back to the Splash back to Splash Screen ACCEPTABLE
TST_No_03_02 Cancel the fields; Screen;
1. In the Sign In Screen, click
on the "Sign In" button from
Google, located at the top of If Sign-In is successful, user
Signing In using a the fields;
TST_No_03_03 will be redirected to the redirects to Search Tab; ACCEPTABLE
Google Account 2. Choose/add a Google Search Tab;
account;
3. Follow the instructions;
1. In the Sign Up Screen,
Signing In using google
click on the "Sign In" button Error Message "Error "Error Signing In with
TST_No_03_04 account without internet ACCEPTABLE
from Google, located at the Signing In with Google"; Google" error
connection
top of the fields;

83
2. Choose/add a Google
account;

3. Follow the instructions;


1. In the Sign In Screen, click
on the "Forgot Password
“link; email for changing the
TST_No_03_05 Forgot Password ACCEPTABLE
2. Enter your email address An email will be sent to password received
and click the "Reset" button user's email address in order
to reset your account; to reset the password;
1. In the Sign In Screen, click
the "Continue as Guest" link
redirects to Search Tab; ACCEPTABLE
below the "Cancel" and 'Sign User will be redirected to the
TST_No_03_06 Continue as Guest In" buttons; Search Tab;
1. In the Sign In Screen,
enter a wrong email and
"Authentication failed.
Signing In with a wrong password; An error message
TST_No_03_07 Check your email and ACCEPTABLE
email 2. Click the "Sign In" button "Authentication failed. Check
password or sign up."
below the fields, on the right your email and password or
of "Cancel"; sign up." will be shown;
1. In the Sign In Screen, click
on the "Forgot Password
Wrong email entered in “link;
"Failed to send reset
TST_No_03_08 "Forgot Password" 2. Enter a wrong/badly ACCEPTABLE
email." error
Screen formatted email address and An error message "Failed to
click the "Reset" button to send reset email." will be
reset your account; shown;
1. In the Sign In Screen, click
the "Sign In" button below An error message "Enter "Enter email address."
ACCEPTABLE
Signing In with empty the fields, on the right of email address." will be error
TST_No_03_09 fields 'Cancel"; shown;
1. In the Sign In Screen,
enter password;
Signing In with an empty "Enter email address."
TST_No_03_10 2. Click the "Sign In" button An error message "Enter ACCEPTABLE
email address field error
below the fields, on the right email address." will be
of "Cancel"; shown;
1. In the Sign In Screen,
enter a valid email address;
Signing In with an empty
TST_No_03_11 2. Click the "Sign In" button "Enter password." error ACCEPTABLE
password field
below the fields, on the right An error message "Enter
of "Cancel"; password." will be shown;
84
1. In the Sign In Screen, A message "A network error
"A network error (such as
enter password; (such as timeout, interrupted
Signing In without timeout, interrupted
TST_No_03_12 2. Click the "Sign In" button connection or unreachable ACCEPTABLE
Internet Connection connection or unreachable
below the fields, on the right host) has occurred." will be
host) has occurred." error
of "Cancel"; shown;

USE_CASE_04_Reset
USE CASE NO Password

The scree n shown when


the "Forgot Password" is
Description clicked;
Test Case No. Description Test Procedure Expected Results Actual Results Status
1. Click "Sign in" button from
splash screen A reset password link will be
2. Click "Forget password" sent to the inputted email
TST_No_04_01 Reset Password email received ACCEPTABLE
from Sign In page address where user can
change his/her password
3. Input email address
1. Click the reset password
link Successfully logs into the
successfully logs into the
TST_No_04_02 Changing of password 2. Input new password account with the new ACCEPTABLE
account
password
3. Click "Reset" button

USE_CASE_05_Guest
USE CASE NO Home Tab

for Guest Users (Users


Description without an account)
Test Case No. Description Test Procedure Expected Results Actual Results Status
1. In the Home Tab (Guest), User will be redirected to the
TST_No_05_01 Signing Up
click on "Sign Up here"; Sign Up Screen; redirects to Home Screen; ACCEPTABLE
1. From the Home Tab,
Navigating to Search or swipe left once to go to Search Tab or Profile Tab
TST_No_05_02
Profile Tab Search Tab or twice to go to will be shown; easy to navigate between
Profile Tab. these tags ACCEPTABLE

85
USE_CASE_06_Guest
USE CASE NO Search Tab

for Guest Users (Users


Description without an account)
Test Case No. Description Test Procedure Expected Results Actual Results Status
1. In the Search Tab, type in
the ingredient/s and choose
from the pre-defined list of
ingredients shown. Recipes that contain the
Searching for a recipe generates recipe in
TST_No_06_01 ingredient/s will be shown in ACCEPTABLE
online ascending order
ascending order;
2. Click on the "Search"
button below the search
field;
1. In the Search Tab, type in
the ingredient/s and choose
from the pre-defined list of All keywords in the search
TST_No_06_02 Clearing the search field search field cleared ACCEPTABLE
ingredients shown. field will be deleted;
2. Click on the "x" icon on
the right of the search field;
1. In the Search Tab, search
for the recipe in the list by
scrolling up or type in the
ingredient/s and choose from User will be redirected to the redirects to actual recipe
TST_No_06_03 Viewing a recipe the pre-defined list of ACCEPTABLE
actual recipe page; page
ingredients shown and click
the "search" button;
2. Click on the recipe;
1. In the Search Tab, type in
the ingredient/s and choose
from the pre-defined list of
Searching for a recipe ingredients shown. A page that says "Webpage
TST_No_06_04 without internet 2. Click on the "Search" not available" will be "Webpage not available" ACCEPTABLE
connection button below the search displayed;
field;
3. Click on the recipe;

86
1. From the Search Tab,
Navigating to Home or swipe left once to go to Home Tab or Profile Tab will
TST_No_06_05 easy swiping ACCEPTABLE
Profile Tab Profile Tab or swipe right to be shown;
go to Home Tab.

USE_CASE_07_Guest
USE CASE NO Profile Tab

for Guest Users (Users


Description without an account)
Test Case No. Description Test Procedure Expected Results Actual Results Status
1. In the Profile Tab (Guest), User will be redirected to the redirects to Sign Up
TST_No_07_01 Signing Up
click on "Sign Up here"; Sign Up Screen; screen; ACCEPTABLE
1. From the Home Tab,
Navigating to Search or swipe right once to go to Search Tab or Home Tab will
TST_No_07_02
Profile Tab Search Tab or twice to go to be shown; Search Tab or Home Tab
Home Tab. substitution ACCEPTABLE

USE_CASE_08_User
USE CASE NO. Home Tab
for Registered Users;
Description
Description Expected Results Actual Results Status
Test Case No. Test Procedure
1. In the Home Tab, enter a Recipe/s that contains the
keyword or the full recipe keyword or the full title will
title; be shown in list; If no match Recipe/s that contains the
Searching for a Recipe
TST_No_08_01 has been found, the app will keyword or the full title is ACCEPTABLE
that has been saved
display a pop-up message shown in list;
2. Click the "Search" button that reads "No result/s
below the search field Found".
1. In the Home Tab, type in
the recipe title and/or choose
A pop-up message saying A pop-up message saying
Searching for a recipe from the recipe filters;
TST_No_08_02 that "No result/s Found" will that "No result/s Found" ACCEPTABLE
online without results 2. Click on the "Search"
be displayed; will be displayed;
button below the search
field;

87
1. In the Home Tab, check Number of recipes saved
Knowing how many Number of recipes saved
TST_No_08_03 the Recipes Saved below the offline shown below the ACCEPTABLE
recipes saved offline offline will be displayed;
Search button; Search Button;
1. In the Home Tab, search
for the recipe in the list by
scrolling up or enter a
keyword or the full recipe title A new window containing the A new window containing
TST_No_08_04 Viewing a recipe offline ACCEPTABLE
in the search field and click recipe will be opened; the recipe will be opened;
the "search" button;

2. Click on the recipe;


1. In the Home Tab, search
for the recipe in the list by
scrolling up or enter a
keyword or the full recipe title
in the search field and click
the "search" button;
recipe was successfully
2. Click on the "Delete A message "(Recipe Name)
TST_No_08_05 Deleting a saved recipe removed with a ACCEPTABLE
Recipe" button; removed" will be shown;
confirmation message.
3. A pop-up that says "Are
you sure you want to delete
this recipe?" will be shown,
with a "Yes" and "No" option;

4. Click on "Yes";
1. In the Home Tab, search
for the recipe in the list by
scrolling up or enter a
keyword or the full recipe title
in the search field and click
the "search" button;
The pop-up will be closed The pop-up closed and
2. Click on the "Delete
TST_No_08_06 Cancelling a deletion and will go back to the goes back to the Saved ACCEPTABLE
Recipe" button;
Saved Recipe List; Recipe List;
3. A pop-up that says "Are
you sure you want to delete
this recipe?" will be shown,
with a "Yes" and "No" option;

4. Click on "No";

88
1. Input recipe name at the
search bar and/or Generate recipes with the
Search recipes with recipe result/s best for
TST_No_08_07 2. Choose the breakfast filter inputted ingredients that are ACCEPTABLE
Breakfast filter breakfast is/are displayed;
from the filter button on the best for breakfast
lower right of the screen
1. Input recipe name at the
search bar and/or Generate recipes with the
Search recipes with recipe result/s best for
TST_No_08_08 2. Choose the Lunch filter inputted ingredients that are ACCEPTABLE
Lunch filter lunch is/are displayed;
from the filter button on the best for lunch
lower right of the screen
1. Input recipe name at the
search bar and/or Generate recipes with the recipe result/s best for
Search recipes with
TST_No_08_09 2. Choose the Snacks filter inputted ingredients that are snack time is/are ACCEPTABLE
Snacks filter
from the filter button on the best for snack time displayed;
lower right of the screen
1. Input recipe name at the
search bar and/or Generate recipes with the
Search recipes with recipe result/s best for
TST_No_08_10 2. Choose the Dinner filter inputted ingredients that are ACCEPTABLE
Dinner filter dinner is/are displayed;
from the filter button on the best for dinner
lower right of the screen
1. Input recipe name at the
Search recipes with search bar and/or Generate recipe result/s that are
TST_No_08_11 Others or Uncategorized 2. Choose the Others filter other/uncategorized recipes uncategorized is/are ACCEPTABLE
filter from the filter button on the with the inputted ingredients displayed;
lower right of the screen
1. In the Home Tab, type in
the ingredient/s and/or
choose from the recipe
All keywords in the search All keywords in the search
filters;
TST_No_08_12 Clearing the search field field will be deleted; any filter field has been deleted; any ACCEPTABLE
2. Click on the "x" icon on
used will also be cancelled. filter use is cancelled.
the right of the search field;
Also clears out any filter/s if
used.
1. From the Home Tab,
Navigating to Search or swipe left once to go to Search Tab or Profile Tab Search Tab or Profile Tab
ACCEPTABLE
Profile Tab Search Tab or twice to go to will be shown; is shown;
TST_No_08_13 Profile Tab.

89
USE_CASE_09_User
USE CASE NO. Search Tab

Description for Registered Users;

Actual Results Status


Test Case No. Description Test Procedure Expected Results
1. In the Search Tab, type in
the ingredient/s and choose
from the pre-defined list of Recipes that contain the Recipes containing the
Searching for a recipe
TST_No_09_01 ingredients shown. ingredient/s will be shown in ingredient/s shown in ACCEPTABLE
online
2. Click on the "Search" ascending order; ascending order;
button below the search
field;
1. In the Search Tab, type in
the ingredient/s; A pop-up message saying
Searching for a recipe "No Result/s Found"
TST_No_09_02 2. Click on the "Search" that "No result/s Found" will ACCEPTABLE
online without results displayed;
button below the search be displayed;
field;
1. In the Search Tab, search
for the recipe in the list by
scrolling up or type in the
ingredient/s and choose from User will be redirected to the Redirected to actual recipe
TST_No_09_03 Viewing a recipe the pre-defined list of ACCEPTABLE
actual recipe page; page;
ingredients shown and click
the "search" button;
2. Click on the recipe;
1. In the Search Tab, search
for the recipe in the list by
scrolling up or type in the
A message "(Recipe Name)
ingredient/s and choose from
has been added" will be
TST_No_09_04 Saving a recipe offline the pre-defined list of Successfully added recipe; ACCEPTABLE
shown; Saved recipe can be
ingredients shown and click
viewed in the Home Tab.
the "search" button;
2. Click on the "Saved
Offline" button;
1. From the Search Tab,
Navigating to Home or swipe left once to go to Home Tab or Profile Tab will Home Tab or Profile Tab
ACCEPTABLE
Profile Tab Profile Tab or swipe right to be shown; shown;
TST_No_09_05 go to Home Tab.

90
1. Input an ingredient at the
search bar and/or Generate recipes with the
Search recipes with recipe result/s best for
TST_No_09_06 2. Choose the breakfast filter inputted ingredients that are ACCEPTABLE
Breakfast filter breakfast is/are displayed;
from the filter button on the best for breakfast
lower right of the screen
1. Input an ingredient at the
search bar and/or Generate recipes with the
Search recipes with recipe result/s best for
TST_No_09_07 2. Choose the Lunch filter inputted ingredients that are ACCEPTABLE
Lunch filter lunch is/are displayed;
from the filter button on the best for lunch
lower right of the screen
1. Input an ingredient at the
search bar and/or Generate recipes with the recipe result/s best for
Search recipes with
TST_No_09_08 2. Choose the Snacks filter inputted ingredients that are snack time is/are ACCEPTABLE
Snacks filter
from the filter button on the best for snack time displayed;
lower right of the screen
1. Input an ingredient at the
search bar and/or Generate recipes with the
Search recipes with recipe result/s best for
TST_No_09_09 2. Choose the Dinner filter inputted ingredients that are ACCEPTABLE
Dinner filter dinner is/are displayed;
from the filter button on the best for dinner
lower right of the screen
1. Input an ingredient at the
Search recipes with search bar and/or Generate recipe result/s that are
TST_No_09_10 Others or Uncategorized 2. Choose the Others filter other/uncategorized recipes uncategorized is/are ACCEPTABLE
filter from the filter button on the with the inputted ingredients displayed;
lower right of the screen
1. In the Search Tab, type in
the ingredient/s and/or
choose from the recipe
All keywords in the search All keywords in the search
filters;
TST_No_09_11 Clearing the search field field will be deleted; any filter field has been deleted; any ACCEPTABLE
2. Click on the "x" icon on
used will also be cancelled. filter use is cancelled.
the right of the search field;
Also clears out any filter/s if
used.

91
USE_CASE_10_User
USE CASE NO. Profile Tab

Description for Registered Users;

Actual Results Status


Test Case No. Description Test Procedure Expected Results
1. In the Profile Tab, click on
the "Account Settings"
button;
2. Enter new valid details;
Editing Profile Details email not editable "Successfully edited user
(not applicable for users 3. Click on the "Edit Details" details" message will be "Successfully edited user
TST_No_10_01 button; ACCEPTABLE
signed in using Google shown; User will be details" shown;
Account) 4. A pop-up that says "Are redirected to the Search Tab.
you sure you want to edit
your profile?" will be shown,
with a "Yes" and "No" option;
5. Click "Yes";
1. In the Profile Tab, click on
the "Account Settings"
button;

2. Enter new valid details;


3. Click on the "Edit Details" Pop-up closed and will go
button; goes back to Edit Profile
TST_No_10_02 Cancelling Edit back to the Edit Profile ACCEPTABLE
4. A pop-up that says "Are Screen;
Screen;
you sure you want to edit
your profile?" will be shown,
with a "Yes" and "No" option;

5. Click "No";
1. In the Profile Tab, click on
the "Account Settings"
button;
Editing Profile Details "Enter name" message will
TST_No_10_03 "Enter name" shown; ACCEPTABLE
with empty "Name" field be shown;
2. Delete email address;
3. Click on the "Edit Details"
button;

92
1. In the Profile Tab, click on
the "Account Settings"
Editing Profile Details button; "Enter email address" "Enter email address"
TST_No_10_04 with empty "Email ACCEPTABLE
2. Delete name; message will be shown; message shown;
Address" field
3. Click on the "Edit Details"
button;
1. In the Profile Tab, click on
the "Account Settings"
Editing Profile Details button; "Enter password" message "Enter password" message
TST_No_10_05 with empty "Password" ACCEPTABLE
2. Delete password; will be shown; shown;
field
3. Click on the "Edit Details"
button;
1. In the Profile Tab, click on
the "Account Settings"
button;
2. Click on the "Delete
Account" button below the
"Edit Details" button; For
users signed in using google
account, no fields and "Edit Account successfully Account successfully
TST_No_10_06 Deleting an Account Details" button will be shown; deleted and would go back to deleted and goes back to ACCEPTABLE
3. A pop-up that says "Are Splash Screen; Splash Screen;
you sure you want to delete
this account? All saved
recipes will also be deleted."
will be shown, with a "Yes"
and "No" option;
4. Click "Yes";
1. In the Profile Tab, click on
the "Account Settings"
button;
2. Click on the "Delete
Pop-up closed and will go Pop-up closed and goes
Cancelling Deletion of Account" button below the
TST_No_10_07 back to the Edit Profile back to the Edit Profile ACCEPTABLE
Account "Edit Details" button;
Screen; Screen;
3. A pop-up that says "Are
you sure you want to delete
this account? All saved
recipes will also be deleted."

93
will be shown, with a "Yes"
and "No" option;

4. Click "No";
1. In the Profile Tab, click on
the "Sign Out" button;
2. A pop-up that says "Are
you sure you want to sign Successfully signed out and Successfully signed out
TST_No_10_08 Signing Out out from your account?" will will go back to the Splash and goes back to the ACCEPTABLE
be shown, with a "Yes" and Screen; Splash Screen;
"No" option;
3. Click "Yes";
1. In the Profile Tab, click on
the "Sign Out" button;
2. A pop-up that says "Are
Cancelling a Sign Out you sure you want to sign Pop-up closed and will go Pop-up closed and goes
TST_No_10_09 out from your account?" will ACCEPTABLE
Option back to the Profile Screen; back to the Profile Screen;
be shown, with a "Yes" and
"No" option;
3. Click "No";
1. From the Profile Tab,
Navigating to Home or swipe right once to go to Search Tab or Home Tab will Search Tab or Home Tab
ACCEPTABLE
Search Tab Search Tab or twice to go to be shown; shown;
TST_No_10_10 Home Tab.

94
APPENDIX G SOFTWARE MANUAL

The Software Manual serves as a guide for system or database


administrators in scraping and filtering data from chosen websites in the web, and
storing them for actual use in the system database.

1. Web Scraper and Filter


Healthy recipe data from chosen websites were first scraped and filtered
before loading them into the system database.

Requirements:
 Scrapy Installation
For a clearer glimpse of the installation process, please refer to Scrapy’s
documentation guide at https://doc.scrapy.org/en/1.3/intro/install.html.
 Python 2.7 or Python 3.3
 Sublime Text, or other text editors that support Python

Usage Guidelines:
1. Clone or download recipe scraper made with Scrapy in GitHub at
https://github.com/emilany/recipe-scraper.git. This can be done through
performing manual clone using command prompt or terminal, or through the
GitHub website and desktop application.

95
2. Open the folder in Sublime Text or other available text editors.

3. The scraping process applies to one website at a time.


a. First change the output filename, rendered in json format, in
pipelines.py to desired filename.

96
b. To scrape the first website, go to the project’s top level directory and
run scrapy crawl spidername.
c. The output file will then be stored in the project’s top level directory
along with other folders.
4. After scraping all needed data, format them manually through Sublime Text
or other text editors by enclosing all recipe data in brackets “[]”. This step is
important for uploading the data in Firebase.

2. Vineyard Admin
Vineyard Admin is a website for the administrator of the Vineyard mobile
application. This is where the administrator manages the recipes and ingredients
used for searching. Uploading and deletion of recipes and ingredients is done here.

Requirements:
 Web browser, specifically Google Chrome 55.0.2883 or later
 Windows 7, Windows 8 or Windows 10 – 32 bit or 64 bit
 Intel Pentium 4 or later
 350 MB of free disk space
 1 GB of RAM

Usage Guidelines:
1. Open https://vineyard-f7e80.firebaseapp.com on a web browser.

2. Input admin credentials and click Login.


97
3. After logging in, you will be redirected to the Recipes page. The left sidebar
contains a link for the Recipes and Ingredients page and the top menu
contains a dropdown menu for user logout.

4. The Recipes page contains the following buttons – Choose File, Load and
Delete Recipes.
5. To upload recipes, click the Choose File button and choose JSON file
containing the recipes. After, click the Load button and wait for a prompt
saying “Successfully added recipes to database”.
6. To delete all recipes from the database, click the Delete Recipes button
and wait for a prompt saying “Successfully deleted recipes from database”.
7. Click on the Ingredients link on the sidebar to be redirected to the
Ingredients page.

98
8. The Ingredients page contains the following buttons – Choose File, Load
and Delete Ingredients.
9. To upload ingredients, click the Choose File button and choose JSON file
containing the ingredients. After, click the Load button and wait for a
prompt saying “Successfully added ingredients to database”.
10. To delete all ingredients from the database, click the Delete Ingredients
button and wait for a prompt saying “Successfully deleted ingredients from
database”.
11. Click the Logout button on the dropdown menu found at the top to log out
of the website.

3. Database Administrator
The Vineyard application data such as recipes, ingredients and users are
all stored in a JSON document format in Firebase. The Spark Plan free
subscription was used for data storage.

Requirements:
 Web browser, specifically Google Chrome 55.0.2883 or later
 Windows 7, Windows 8 or Windows 10 – 32 bit or 64 bit
 Intel Pentium 4 or later
 350 MB of free disk space
 1 GB of RAM

A. Signing in:
1. Open https://firebase.google.com/ and input the sign in credentials.

99
2. Click “Go to console” to be redirected to project console.

B. Managing Authentication
1. Click on the Vineyard project card in the console.
2. After clicking the Vineyard project card, you will then be redirected to the
project’s dashboard containing a left sidebar for menus.

3. Click the Authentication link in the sidebar to view the users in the
application.

100
4. On the Authentication page, a tab for Users, Sign-In Method and Email
Templates can be seen.

5. Clicking on the Users tab will display a list of users containing information
like email, provider, date created, date of latest sign in, and user id.
6. Resetting password, account disabling and user deletion can be done
manually by clicking on the vertical ellipsis and choosing on the
appropriate action desired.
7. Above the list, a search email field, Add User button and a reload button
can be seen.
8. To add a user manually, click on Add User and provide an email and
password. User id will be provided by Firebase.
9. Clicking on the Sign-in Method tab will display the possible methods of
signing in the application. Among the different methods of signing in, only
Email/Password and Google providers are enabled.

101
10. The Email Templates tab is used for creating templates for email
verification, password reset and changing of email address.

C. Managing Database
1. Clicking the Database link in the sidebar will redirect you to the Realtime
Database page.

2. In the Realtime Database page a tab for Data, Rules, Usage and
Backups are displayed. The Backups tab can only be activated through
the subscription of paid plans.
3. The Data tab will display the contents of the application database in
JSON format. Creating, updating and deleting of nodes and/or children
can be done manually.

102
4. The Rules tab will display the database rules for the application. These
rules are also editable.

5. The Usage tab will display a graph of the application’s bandwidth, storage
and connection.

103
USER MANUAL

Installing the Application via Google Play


1. Open Google Play and Search for the “Vineyard” application under Team
Lamdag (developer name).

2. Click the Install button to start the installation process.

3. Once the application has been successfully installed, you may now start
using the app.

104
Sign Up
A. Sign Up Form
1. From the splash screen, click “Create an account” button.

2. Fill up the sign up form with the needed information: Name, Email
Password and Verify Password.

3. Click “Sign up” button to proceed.


4. Once completed, the application will redirect to the Home Tab.

B. Cancel Sign Up Procedure


1. From the Sign Up Form page, click the “Cancel” button.
2. The application will then go back to the splash screen.

105
Sign In
A. Sign in Form
1. From the splash screen, click “Sign in” button.

2. Enter your credentials – Email and Password.

3. Click “Sign in” button to proceed.


4. Once completed, the application will redirect to the User Home Tab.

B. Cancel Sign Up Procedure


1. From the Sign in Screen, click the “Cancel” button.
2. The application will then go back to the splash screen.

106
Reset Password
1. From the splash screen, click “Sign in” button.
2. Click the “Forget password?” hyperlink below the Email and Password
fields. The application will then ask for the email address of your
account.
3. Enter your email address then click the “Reset” button.

4. A Reset Password link will be sent to the inputted email address.


Clicking the said link will ask you to enter your new password.
5. After inputting your new password, click “Reset” button.
6. You can now go back to the application and successfully login to your
account with the new password.

Continue as a Guest
1. From the splash screen, click either the “Create an account” or “Sign
in” button.
2. At the bottom of the page, click the “Continue as guest” hyperlink.
3. The application will then be redirected to the Search Tab with the
search icon underlined above.

107
Searching for Recipes
A. Guest User
1. Input at least one ingredient on the search bar.

2. Click on the Search button.

B. Registered User
1. Input at least one ingredient on the search bar.
2. You may choose among Breakfast, Lunch, Snacks, Dinner and Other
Recipes by clicking on the icon at the lower right if you want a more
filtered result.

3. Once done, click “Search” button, then wait for recommended recipes.

108
Viewing More Recipes
1. In the Search Tab, scroll down until you reach the end of page. The
app initially displays 20 recipes.
2. To view more, click on the “More Recipes” button at the bottom.
Additional 20 recipes will be shown.

“More Recipes” button at the end of the page.


3. Repeat steps 1 and 2 if you wish to view more.

Viewing a Specific Recipe


1. After clicking on Search, a list of recommended recipes is shown.

2. Choose and simply click on your favored recipe.

109
3. The application will redirect you to the actual page of that recipe.

Saving a Recipe Offline (Registered Users)


1. After clicking on Search, a list of recommended recipes is shown.
2. Click on the “Save Offline” button at the bottom of the favored recipe.

3. Your recipe has now been saved offline and can be viewed on the Home
Tab.

110
Searching for a Saved Recipe (Offline)
1. In the Home Tab, enter a keyword or the full recipe title.
2. You may choose among Breakfast, Lunch, Snacks and Dinner by
clicking on the icon at the lower right if you want a more filtered result.

Search Tab with filter opened


3. Once done, click the "Search" button below the search field.

Viewing a Saved Recipe (Offline)


1. In the Home Tab, search for the recipe in the list by scrolling up or enter
a keyword or the full recipe title in the search field and click the "search"
button.
2. Click on the desired recipe.
3. A new window will appear with the recipe details.

Navigating the Tabs


1. Swipe left or right, once or twice to get to the desired tab.

111
Editing Profile
A. Edit Profile Form
1. From the Profile Tab, click on the “Account Settings” button.

2. Enter new valid details.

3. Click on the “Edit Details” button.

112
4. A pop-up that says "Are you sure you want to edit your details?" will be
shown, with a "Yes" and "No" option.

5. Click on “Yes”. Your profile has now been updated.

B. Cancel Edit Profile Procedure


1. From the Profile Tab, click on the “Account Settings” button.
2. Enter new valid details.
3. Click on the “Edit Details” button.
4. A pop-up that says "Are you sure you want to edit your profile?" will be
shown, with a "Yes" and "No" option.
5. Click on “No”. You will be taken back to the Account Settings Screen.

113
Deleting an Account
1. From the Profile Tab, click on the “Account Settings” button.
2. Click on the "Delete Account" button below the "Edit Details" button;
For users signed in using google account, no fields and "Edit Details"
button will be shown.

Regular email sign in (first) and signed in through google (second).


3. A pop-up that says "Are you sure you want to delete this account? All
saved recipes will also be deleted." will be shown, with a "Yes" and
"No" option; Clicking on “No” will take you back to the Account
Settings Screen.

Deleting an Account Confirmation


4. Click “Yes”. Your profile has now been deleted.

114
CURRICULUM VITAE

CONTACT INFORMATION
Name: Chris Ray B. Belarmino
Address: 166 A M.H. Aznar Rd. Urgello,
Sambag II, Cebu City
Cell Phone: 09327401593
Email: raychrisbelarmino@gmail.com

PERSONAL INFORMATION
Birthday: March 30, 1994
Religion: Roman Catholic
Civil Status: Single

EDUCATION
University of San Carlos
Bachelor of Science in Information Technology
Tertiary Level (2013 – present)

University of San Carlos – North Campus


Secondary Level (2007 – 2011)

Colegio de la Immaculada Concepcion - Cebu


Primary Level (2001 – 2007)

TECHNICAL SKILLS
 Web (HTML, CSS, Javascript, JQuery, Python, PHP, JSP, ReactJS,
Firebase)
 Java, C, Unity, Microsoft Office, Adobe

WORK EXPERIENCE
Web Developer (OJT) - Symph
115
CURRICULUM VITAE

CONTACT INFORMATION
Name: Charlene Marie C. Buena
Address: Villa Leyson VLTC Block 7, Lot 2,
Bacayan, Talamban, Cebu City, Cebu, PH
Telephone: 4175659
Cell Phone: 09223794801
Email: charmariebuena@gmail.com

PERSONAL INFORMATION
Birthday: February 10, 1996
Religion: Roman Catholic
Civil Status: Single

EDUCATION
University of San Carlos
Bachelor of Science in Information Technology
Tertiary Level (2013 – present)

Colegio de la Immaculada Concepcion, Cebu


Secondary Level (2009 – 2013)

Colegio de la Immaculada Concepcion, Cebu


Primary Level (2003 – 2009)

TECHNICAL SKILLS
 Microsoft Office (Word, Excel, Power Point, Access)
 C, Java, JSP
 Web Development (HTML, PHP, Ajax, JavaScript, jQuery)
 Adobe Systems

116
 CodeIgniter 2 & 3
 MySQL Apache, MySQL Workbench

WORK EXPERIENCE
City Savings Bank
Osmena Boulevard Corner P. Burgos St., Cebu City
Cebu, 6000, Philippines
Intern

TRAININGS
August 2016
City Savings Bank
Osmena Boulevard Corner P. Burgos St., Cebu City
Cebu, 6000, Philippines
Hackathon Event – Dummy Participants

117
CURRICULUM VITAE

CONTACT INFORMATION
Name: Robee Marie B. Cal
Address: Mawi, Duero, Bohol
Telephone: N/A
Cell Phone: 09433625153
Email: robeecal@gmail.com

PERSONAL INFORMATION
Birthday: October 31, 1990
Religion: Roman Catholic
Civil Status: Single

EDUCATION
University of San Carlos
Bachelor of Science in Information Technology
Tertiary Level (2013 – present)

Immaculate Academy
Secondary Level (2003 – 2007)

Tubod Central Elementary School


Primary Level (2001 – 2003)

Mercy Junior College


Primary Level (1999 – 2001)

Cebu Academy
Primary Level (1997 – 1999)

118
TECHNICAL SKILLS
Programming (C, Java, MySql, HTML, CSS, JavaScript, PHP, JQuery)
Basic Technical Support
Basic Networking
Multimedia (Adobe Photoshop, Adobe Premiere Pro)
Microsoft Applications

WORK EXPERIENCE
ePerformax Contact Centers and BPO
Salinas Drive, Lahug, Cebu City, Cebu
Customer Service Representative
(2011-2012)

Smart Telecommunications Inc.


PLDT South Building, N. Bacalso Avenue
San Nicholas, Cebu City
On-The-Job Trainee
(May – August, 2016)

119
CURRICULUM VITAE

CONTACT INFORMATION
Name: Emilany B. Legaspi
Address: Pajac, Lapu-Lapu City, Cebu
Cell Phone: +63 915 513 1820
Email: emilany.legaspi@gmail.com

PERSONAL INFORMATION
Birthday: October 4, 1996
Religion: Roman Catholic
Civil Status: Single

EDUCATION
University of San Carlos
Bachelor of Science in Information Technology
Tertiary Level (2013 – present)

St. Alphonsus Catholic School


Secondary Level (2009 – 2013)

St. Alphonsus Catholic School


Primary Level (2003 – 2009)

TECHNICAL SKILLS
Languages: JavaScript, HTML, CSS, C, C#, Java, Python, Android Development
Applications: Microsoft (Word, PowerPoint, Excel), Adobe (Photoshop, Illustrator),
Others (Unity3D, Apple Software Programs)

WORK EXPERIENCE
Intern – Accenture (May 2016 – September 2016)

120

You might also like