Professional Documents
Culture Documents
Sample Capstone Project Vineyard An Android Based Healthy Recipe Recommendation Application
Sample Capstone Project Vineyard An Android Based Healthy Recipe Recommendation Application
Sample Capstone Project 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
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.
EMILANY B. LEGASPI
March 2, 2017
APPROVAL SHEET
CAPSTONE COMMITTEE
ANGIE M. CENIZA
Committee Chair
PANEL OF EXAMINERS
ANGIE M. CENIZA
Committee Chair
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
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
REFERENCES ................................................................................................... 62
APPENDICES .................................................................................................... 70
vii
APPENDIX E SYSTEM USABILITY TEST RESULTS – SCORING ............... 79
APPENDIX F BLACK BOX TESTING – TEST CASES ................................... 80
APPENDIX G SOFTWARE MANUAL ............................................................. 95
viii
LIST OF FIGURES
ix
Figure 23. AllRecipes – Healthy Recipes ........................................................... 44
Figure 26. Algorithms for String Matching – Time Measurements (Gou, 2014) .. 49
x
LIST OF TABLES
xi
CHAPTER 1
INTRODUCTION
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.
4
CHAPTER 2
RELATED SYSTEMS
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 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.
12
CHAPTER 3
TECHNICAL BACKGROUND
13
Figure 1. Recommendation Techniques
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.
15
Figure 2. Boyer-Moore Algorithm Pseudocode
(Pseudocode etc for the Boyer-Moore Algorithm, n.d.)
16
Figure 3. Mobile/Tablet Operating System Market Share, June 2016
(Mobile/Tablet Operating System Market Share, 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.
18
Figure 4. System Framework
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
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
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
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.
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.
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.
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.
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.
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.
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.
32
Figure 18 shows the
Account Settings page for users
who signed up through their
Google accounts. Users were able
to delete their account.
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.
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.
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.
37
4.6.2 Responsibilities
Table 12 presents the different tasks that were assigned to each
researcher in the study.
Table 12
Task Assignments
38
User Profile ✔
Account Settings ✔
Recipe Module
Algorithm ✔
Search Recipe ✔
Save Offline ✔
Delete Saved Recipe ✔
Extra Filters ✔
Linking of all Modules ✔ ✔ ✔ ✔
Table 13
Budget for Expenses
Item Cost
Transportation 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.
Table 14
Top 15 Most Popular Recipe Websites – September 2016
Other Ranking
Website Link Rank
Information
338 – eBizMBA Rank
25,000,000 –
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
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.
44
Extraction of Recipe Details
Recipe Title
Recipe Description
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
SimplyRecipes 50 recipes
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)
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)
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.
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 ✔
52
5.4 Application Testing and Evaluation
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.
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.
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.
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.
59
Figure 34. The Application on Google Play
60
CHAPTER 6
CONCLUSION AND RECOMMENDATION
61
REFERENCES
Books
Journal Article
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
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
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
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
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
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?
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
78
APPENDIX E SYSTEM USABILITY TEST RESULTS – SCORING
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
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;
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";
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;
USE_CASE_04_Reset
USE CASE NO Password
USE_CASE_05_Guest
USE CASE NO Home Tab
85
USE_CASE_06_Guest
USE CASE NO Search Tab
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
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;
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
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
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
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.
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.
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
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.
105
Sign In
A. Sign in Form
1. From the splash screen, click “Sign in” button.
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.
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.
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.
109
3. The application will redirect you to the actual page of that 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.
111
Editing Profile
A. Edit Profile Form
1. From the Profile Tab, click on the “Account Settings” 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.
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.
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)
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)
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)
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)
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)
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