Professional Documents
Culture Documents
Groceryhub - A Cloud Based App - Shared Grocery Lists For Ios
Groceryhub - A Cloud Based App - Shared Grocery Lists For Ios
Web Site: www.ijettcs.org Email: editor@ijettcs.org, editorijettcs@gmail.com Volume 3, Issue 1, January February 2014 ISSN 2278-6856
Abstract Repetitive visits to grocery stores and overpurchasing of grocery items is a common problem that people are faced with in USA. The idea of GroceryHub App is to allow individuals maintain and synchronize a shared list of items with people they share grocery with. GroceryHub is a free cloud-based solution that makes use of cutting technologies like Amazon S3 and Heroku. GroceryHub fully and flawlessly supports the offline mode in case a user doesnt have network connectivity. It has the ability to attach images to items.
Keywords Grocery; Cloud App; Mobile App; Shared Lists; iOS; Ruby on Rails; Heroku; Amazon Web Services.
1. Introduction
With the wonderful advancements in the field of information technology, sometimes smaller, more common daily life problems faced by the people are neglected. GroceryHub is aimed at resolving one such problem for common people: maintenance and synchronization of grocery lists. It is also capable of doing so without having people to pay anything for it, unlike some other solutions aimed at resolving the same problem. Currently a few applications exist in App Store and Google Play that aim at helping people maintain grocery lists. One such app is Checklet [1], which doesnt event allow users to organize their lists in categories, and the ability to share lists is only via email, which is pretty inconvenient. On top of all that it costs $4.99, where as GroceryHub is free! Another similar app is Simple Grocery List [2]. It too suffers from some of the same problems as Checklet. It doesnt have any sharing capability or authentication system whatsoever. Free Grocery List [3] is another app that tries to solve the same problem. However, unlike its name, its not free. It doesnt even let you create custom categories unless you have paid $4.99 for the premium version. Plus, it suffers from serious bugs like duplication of items and synchronizing issues. ShoppingList [4] too doesnt let people do much unless they get the paid version. Like synchronizing the list with other users and creating unlimited categories are premium features, unlike GroceryHub. Crashing and incompatibility with newer iOS versions are other problems with this app. Volume 3, Issue 1 January February 2014
The GroceryHub App differentiators are as follows: a- Cloud-Based Services - Since GroceryHub has a cloud-based server side, it allows a lot of scalability, flexibility and efficiency. If the traffic increases, the server side resources can be easily scaled up, which will take care of a lot of performance issues that some of the other related apps suffer from. b- Offline Mode - A lot of related apps cannot support offline mode since they havent implemented a synchronization system between unique identifiers on the iOS device and the unique identifiers on the server side. On the other hand GroceryHub fully and flawlessly supports the offline mode in case a user doesnt have network connectivity. c- Image Attachments - The ability to attach images to items is a huge plus for GroceryHub. Related apps dont allow users to do that, but it is a very powerful and useful feature, since attaching an image can save all the time to type in tedious notes and descriptions for an item. d- As Cheap as Free - GroceryHub costs nothing as compared to the other related apps in the market costing a significant amount of money for a simple task of maintaining grocery lists! A feature like creating an unlimited number of categories, which is offered for free by GroceryHub, is a premium feature in most of the other related apps. e- Highly Focused and Clean UI - GroceryHub is highly focused on one task: helping users maintain their grocery list and synchronize it with other users of their hub. The more focused the goal of the app, the cleaner the user interface of the app. On the other hand, most of the related apps try to do too much from maintaining coupons, to locating stores, to maintaining full calendars for families. This pollutes the user interface too much and affects the user experience significantly. This paper is organized such that it begins with the feature list of GroceryHub in section 2. Then it discusses the technologies used in the application, as well as hardware and OS specifications in sections 3 and 4, Page 66
2. Feature List
The major features of GroceryHub are as follows: a. Sign up / sign in b. Create / join a hub c. Create / edit / delete categories d. Create / edit / delete items e. Attach images to items f. Synchronize lists A brief description of each of these features is as follows: a. Sign Up / Sign In - GroceryHub allows people to sign up for using the application. Once a user has signed up, then the user can use the mobile interface of the application to create and maintain grocery lists. All necessary validations like email uniqueness and password encryption are implemented and in place. Figure 1 shows the sign up / sign in screen.
Figure 1. Sign in / sign up screenshots. Volume 3, Issue 1 January February 2014 Page 67
5. System Architecture
GroceryHub has a client side and server side implementation. iOS GUI is at the client side of the application. It is built using Objective C and C++. Ruby on Rails API endpoints with PostgreSQL as the database are used to implement the server side for GroceryHub. The server side is hosted in the cloud using Heroku, which is a service built on top of the Amazon Cloud. Heroku Postgres, another cloud service is used to build and host the PostgreSQL database. GroceryHub let users makes changes to the list shared by all members of the hub using the iOS GUI. This change is sent to the web server, which sends a push notification to the iOS devices owned by other members of the hub. Apple Push Notification Service (APNS) is used for this purpose. This notification informs the members that there has been in a change in the shared grocery list that they need to pull. Hence, these devices then send a request to the web server to synchronize their local lists with the latest version on the server. Figure 5 illustrates the overall system architecture.
Figure 4. Items related screenshots. e. Attach Images to Items - Users can attach images to items as shown in figure 4. Any image that is present on their phone, or was taken by the phones camera can be attached. Users can update these images as well if needed. Amazon S3 buckets are used for the storage of these images. f. Synchronize Lists - GroceryHub allows users to synchronize their grocery lists with all members of their hub. This way all hub members are up-to-date on what is already bought and what is needed.
3. Technological Solution
The iOS GUI is at the front-end of this application. Objective-C [5] and Ruby on Rails [6] have been used as programming languages to program GroceryHub for iOS. Volume 3, Issue 1 January February 2014
Figure 8. DB Model Relationships. DB Schema - Figure 9 shows the db schema. It shows all the database fields with primary and foreign key definitions.
Figure 6. Implementation process for the client and server side. Figure 7 shows the order in which certain pieces were implemented. It also sheds some light on which pieces in the iOS and Ruby on Rails applications were implemented in parallel. For example, JSON parsing had to be implemented in parallel to ensure the server and client sides spoke the same language.
Figure 9. schema.rb. API Endpoints - Figure 10 shows all endpoint definitions. These are the web service paths that need to be hit by the client side. Page 69
Figure 10. routes.rb. JSON Builder - Figure 11 shows the JSON builder. This builds the JSON sent to the client side.
Figure 11. sync.json.builder. Controllers - Figures 12, 13 and 14 shows all controllers. These include users, hubs and lists controllers.
Figure 14. lists_controller.rb. 6.2.2 Client Side Storyboard - Figure 15 shows the entire storyboard. This is where most of the UI of the app is implemented. View Controllers - This is where the rest of the UI is implemented. All of these controllers implement all necessary logic for the views to work. JSON Parser/Builder - Figures 16 and 17 shows the list (JSON) parser and builder. This translated hydrates the client side models using JSON from the server side, and converts these models to JSON as well.
Page 71
Sync Manager - Figures 18 and 19 shows the sync manager. This module handles all sync related process between the client and server sides.
Page 72
7. Future Enhancements
The following are some future enhancements for the GroceryHub cloud App: Access Levels - Implementing various access levels, like admin, read, write, etc will give users a lot of granular control on who makes changes to the list. Simple Messaging System - Simple messaging between members of the same hub and a reminder system will be a valuable addition to the app. Cross Platform Support - Making this app cross-platform compatible will increase the number of people that will be able to benefit from this app. Volume 3, Issue 1 January February 2014
8. Conclusion
GroceryHub is a one of its kind application. It lets people build grocery lists, organize them categories and conveniently share it with people they want. It is free, and it is highly focused on solving a specific problem. Other apps that are aimed at resolving the same problem offer the real features as premium features, and the free versions are so limiting that they tend to be almost useless. Hence, GroceryHub is a clear winner when compared to the other related apps in the market today.
References
[1] Checklet App by Stephen Elliot, 2013 Page 73
AUTHOR Dr. Adnan Shaout is a full professor in the Electrical and Computer Engineering Department at the University of Michigan Dearborn. At present, he teaches courses in fuzzy logic and engineering applications and computer engineering (hardware and software). His current research is in applications of fuzzy set theory, embedded systems, software engineering, artificial intelligence and cloud computing. Dr. Shaout has more than 30 years of experience in teaching and conducting research in the electrical and computer engineering fields at Syracuse University and the University of Michigan Dearborn. Dr. Shaout has published over 140 papers in topics related to electrical and computer engineering fields. Dr. Shaout has obtained his B.S.c, M.S. and Ph.D. in Computer Engineering from Syracuse University, Syracuse, NY, USA, in 1982, 1983, 1987, respectively. Shahzeb Khan is a graduate student at the University of Michigan Dearborn in the Electrical and Computer Engineering Department. His interest is in mobile applications and cloud computing. Volume 3, Issue 1 January February 2014 Page 74