Calatrava Logo Lockup

Mobile cross-platform logic. Freedom to build great UIs.

$ gem install calatrava

Calatrava is a cross-platform mobile framework that lets you share the core logic of your application across iOS, Android and Mobile Web, but unlike other XP toolkits it allows you to always write the highest quality native UI you need. Read the announcement for more detail.

Calatrava is maintained by @gga, based on an idea from @moredip. Developed with the support of ThoughtWorks, the custom software experts, and my employer.

Getting Started

  1. Write your feature in javascript or coffeescript.
    your.feature.controller = ({views, changePage, ajax}) ->
      views.form.bind 'save', ->
      # All logic in 1-place.
      # In a single language.
      # Allows you to pivot on your logic.
      # Without going broke.
  2. Author your inital UI with html, css and js.
    <h1>Your App</h1>
    <p>Get your idea up and running quickly in html.</p>
    <p>Upgrade this feature with native ui.</p>
    <strong>NO handcuffing ui-framework.</strong>
  3. Upgrade inidividual views to native UI.
    #import <UIKit/UIKit.h>
    @interface MyAppSaveButton : UIView {
    - (void) setCollected:(BOOL)collected;
    - (void) didTapCollected:(BasicCallback)callback;
    - (void) showCollectingFeedbackUI:(BOOL)showFeebackUI;

Key Points

  • Calatrava is about shared logic.
  • Calatrava is not about sharing UI.
  • Write your app as a single-page mobile web app.
  • Use CoffeeScript for all the logic.
  • Separate your UI from your logic.
  • App features remain in sync across all platforms.
  • Upgrade web UI to native immediately or as constraints allow.
  • No handcuffing UI frameworks.

Should I use Calatrava?

Calatrava has it's sweet spot. Use the flow below to find out if Calatrava fits your needs.

Does your app have complex logic?


Is the complexity mainly in the UI?


Is your app's logic mainly server-side?


Does it need to work on more than one platform?


Calatrava Logo Lockup