Skip to content

App Dev Plan

Kushal Ashok edited this page Aug 1, 2017 · 2 revisions

Note: The application is under development and the following document is only for reference. Many features are yet to be added.


Summary

This document will provide a quick walk-through of the Lunchtime iOS app development plan. The application will allow members of company group to login using their enterprise credentials and get a list of popular restaurants nearby.

The app will have the following features:

  • Display the nearest 50 restaurants to company's office using the Foursquare API.
  • Ability to read/write reviews (reviews should be stored locally) for a visited restaurant. Upon adding a review, the review should always appear if the same restaurant is selected for dining in future.
  • Ability to thumbs-down a restaurant such that it is never considered as an option for dining.

HighLevel Functional Specification

The application will be developed using Xcode IDE and swift programming language. Since the complexity level is medium, Model View Controller Design pattern will be used for implementation.

Open source Frameworks

  • Alamofire - API integration and session management
  • Realm - For persistence storage (object oriented and quicker to implement than Core Data)

All user provided data such as reviews and thumbs down votes need to be stored locally by using a model object which follows Realm protocols.

Application Flow

Following is a set of activities as per the application flow:

  • Login
  • Get list of 50 restaurants near the company office
  • Select one of the restaurants
  • Write or edit restaurant review
  • Dislike a restaurant

Views

Please refer to document Mockups which contains a list of screens to be developed along with the basic user interface elements.

Models

Following is a list of models that need to be stored using Realm: RestaurantModel Name Address Coordinates IsLiked IsDisliked UserReview

Business Logic

When user dislikes a restaurant, the realm object should get marked with value true for IsDisliked. When user goes back to search restaurant screen, the service response needs to be filtered before displaying to user and thus disliked restaurant needs to be removed.

Web service integration

Login service as per company SSO implementation. https://api.foursquare.com/v2/venues/explore Returns a list of recommended venues near the current location. 

This endpoint is part of the venues API. HTTP Method GET

Parameters ll 44.3,37.2 Latitude and longitude of company office.

limit 50 Number of results to return.

section food Choosing a section results to venues with the specified category or property.

Reference: https://developer.foursquare.com/docs/venues/explore

AddOns

Can also call https://api.foursquare.com/v2/venues/VENUE_ID/dislike to dislike a restaurant if foursquare login is to be implemented.