Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Boilerplate to develop both iOS/Android app and Rails-based backend integrated with each other
Objective-C Ruby JavaScript Java CoffeeScript
Branch: android
Pull request Compare This branch is 5 commits behind master.

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


Bestmix is a simple pair of iOS app and Rails-based backend. You can use it as a basic structure to build your own iOS app and backend web API integrated with each other. They are connected with JSON REST API supporting CRUD, pagination, caching, OAuth2 and Facebook integration.



  • Generating JSON from DB records
  • HTTP caching
  • Basic authentication with Email and passwrod
  • Facebook login
  • Call Facebook API using authorized token
  • OAuth2 authorization for web API
  • Admin UI

iOS App

  • Parsing JSON response and importing it into Core Data
  • Pagination
  • HTTP caching
  • Checking reachability and display object cache if it is offline
  • Getting OAuth2 authorization from web API

These features are implemented using libraries listed below.



See Gemfile for more details

iOS App

See Podfile for more details.



  • Ruby >= 1.9
  • MySQL (you can use another DB server by editing Gemfile)

iOS App

  • iOS >= 5.0
    • requries ARC and Storyboard



  1. Install Ruby on Rails and RVM if you don't have them.
  2. Copy server/config/database.yml.example to server/config/database.yml and modify it.
  3. Copy server/config/initializers/devise.rb.example to server/config/initializers/devise.rb and modify it (See Devise for details).
    • Set config.mailer_sender.
    • If you use Facebook login, enable the setting at the bottom and modify APP_ID and APP_SECRET.
  4. cd server; bundle; rake db:setup; rake db:migrate
  5. rails s # (or setup your web server such as Apache, nginx, etc.)
  6. Open URL http://localhost:3000/ to see the web app.
  7. Open URL http://localhost:3000/admin to see the admin page.
    • Email:
    • password: password
    • See Active Admin for more information.

Register iOS App to Web API

Open admin page: http://localhost:3000/admin and click "Applications".


Click "New Application" at the bottom of the applications page, and input app information in the form:

  • Name: <your iOS app name>
  • Redirect url bestmix://auth

If you develop your own app instead of just running the sample app, change the URL schema (bestmix) of the above redirect URL.


When you submit the form, app ID and secret will be published as below. They are used in the iOS app's config file.


iOS App

  1. Install mogenerator and make it executable from Xcode (e.g. ln -s /opt/brew/bin/mogenerator /usr/bin/mogenerator)
  2. Install CocoaPods
  3. Copy ios/Bestmix/Config.h.example to ios/Bestmix/Config.h and modify it.
    • Set WebApiUrl (e.g. http://localhost:3000/api/v1/)
    • Set AuthBaseURL (e.g. http://localhost:3000/)
    • Set ClientID, ClientSecret and RedirectURL same as you saw in the app registration page.
  4. cd ios; pod install
  5. Open Bestmix.xcworkspace and build the app

Develop Your Own App


When you register an app to the web API, use your own custom URL schema for the callback URL in the application registration form (e.g. myapp://auth).

iOS App

Create a new Xcode project with copying Bestmix.xcodeproj.

% cd ios
% cp -r Bestmix.xcodeproj MyApp.xcodeproj
% find MyApp.xcodeproj -type f | xargs perl -pi -e "s|Bestmix|MyApp|g"
% cp -r Bestmix MyApp
% mv MyApp/Bestmix-Info.plist MyApp/MyApp-Info.plist
% mv MyApp/Bestmix-Prefix.pch MyApp/MyApp-Prefix.pch

Modify the top line of Podfile to use the new Xcode project.

xcodeproj 'MyApp.xcodeproj'

Run pod install and open MyApp.xcworkspace.

Open target summary tab and set bundle identifier.


Open target info tab and set URL type identifier and URL schema.


Then build and run your app.


Bestmix itself is provided under MIT License and it uses many other libraries. See Gemfile and Podfile.

Future Plan

  • Image Uploading
  • Push Notification
  • Twitter/Facebook Integration
  • Testing …currently there is no testing code :(

Contributing to Bestmix

Send me pull requests.

Using Pull Requests · github:help

Something went wrong with that request. Please try again.