Chowsome


Chowsome helps you pick the best dishes based on other users ratings from restaurant's menu.


4 months


Development

This is an iOS app developed using Rubymotion. We used JASidePanels to create the main navigation. For the login we integrated with Facebook API to allow users to log in with their Facebook account. We integrated with a service called Single Platform to gather all restaurant and food menu data.

class DishRatedViewController < UIViewController
  include Navigator
  include Conection
  include FlurryEvents
  stylesheet :main

  layout do
    $back_item = 'rateddishes'
    fe_log_go_to("Rated Dishes")
    NSNotificationCenter.defaultCenter.addObserver(self, selector:'goDishInfo', name:"goDishInfo", object:nil)    
    @user = User.instance(nil)
    @dish_list = []
    subview(UIView, :top_margin) do
      @tableView = subview(UIView, :restaurants_table_container)
    end  
    self.view.stylename = :full_screen_main
    menu_recently_rated
    Flurry.logPageView
  end

  def viewDidAppear(animated)
    rated_dishes_views
  end

  def goDishInfo
    change_center("dish_info_main")
  end  

  def clean_container
    @tableView.subviews.each{|sv| sv.removeFromSuperview }
  end  

  def rated_dishes_views
    clean_container
    list = DishRatedTableViewController.alloc.initWithNibName("DishRatedTableViewController", bundle:nil)
    @tableView.addSubview(list.view)       
  end 

end
class MenuFullViewController < UIViewController
  include Navigator
  include Conection
  include FlurryEvents
  stylesheet :main

  layout do
    NSNotificationCenter.defaultCenter.addObserver(self, selector:'goDishRate', name:"goDishRate", object:nil)    
    @user = User.instance(nil)
    @dish_list = []
    subview(UIView, :top_margin) do
      @tableView = subview(UIView, :restaurants_table_container)
    end  
    self.view.stylename = :full_screen_main
    menu_full_view
    rates_queue_views
    Flurry.logPageView
  end

  def goDishRate
    change_center("dish_info_main")
  end  

  def clean_container
    @tableView.subviews.each{|sv| sv.removeFromSuperview }
  end  

  def rates_queue_views
    clean_container
    list = DishListFullViewController.alloc.initWithNibName("DishListFullViewController", bundle:nil)
    @tableView.addSubview(list.view)       
  end

  def change_center(id_segue)
    storyboard = UIStoryboard.storyboardWithName "iphone_storyboard", bundle: nil    
    vc = storyboard.instantiateViewControllerWithIdentifier(id_segue)
    self.revealSideViewController.popViewControllerWithNewCenterController(vc,animated:false)
  end  

end

Our Process

Meetings

We have weekly calls where we discuss progress. We use Skype, Google Hangouts or GotoMeeting.

We agreed on a day and time that worked for everyone.

Planning

In the beginning we send a timeline specifying the planning and tasks for that week.

These tasks are the same cards we have planned in Trello.

Trello

We translate all requirements into stories in Trello Cards.

Trello is the place to add any specification, ask questions or comments to the team.

Deliveries

Once the tasks are done they go through a testing process and we pass them for your approval.

Every week we will pass cards onto the client list for you to give us feedback.

Quality Assurance

Once the functionality is completed one of our functional testers will try to break the feature.

We either move it to Needs Improvement or pass it to you for feedback.

Feedback

We need the support from you to review the cards and Approve them or tell us how to improve it.

This is key to meet goals and being on time in the development of the application.