Low-code mobile development tools

Review: Appery.io pairs mobile app builder with back-end services

The Appery.io online mobile development platform crosses categories, but support for native apps and offline operation are lacking

At a Glance
  • Exadel Appery.io

Low-code mobile development tools

Show More

Appery.io is a rather capable cloud-based mobile Web and hybrid mobile development platform with online visual design and programming tools, as well as integrated back-end services. You can think of it as a cross between an app builder and an MBaaS (mobile back end as a service).

As we can see in Figure 1 below, the Appery.io app builder generates HTML5, jQuery Mobile, and Apache Cordova code, and the Appery.io build server generates iOS, Android, Windows Phone, and HTML5 apps. The Appery.io MBaaS provides hosting, a MongoDB NoSQL database, push notifications, JavaScript server code, and a secure proxy. 

Appery.io can talk to essentially any REST APIs, whether or not the company has prebuilt the interface. Tying a prebuilt REST interface to a service is a matter of a few minutes. Building the REST interface yourself takes a little longer and requires knowing a little more, but it’s not a big job.

Online app builder

The Appery.io app builder has tabs for the app settings, your model and storage (Figure 2), your pages as you create them, dialogs, templates, themes, CSS, whatever services you define, your JavaScript, and any custom components you define. The builder (Figure 3) uses a WYSIWYG design metaphor with a palette of more than 25 controls, including for external services such as Google Maps and Vimeo, and it displays a property sheet for each item. You can switch from design view to source code view to see your generated HTML, CSS, JavaScript, and any device-specific code: Java for Android, Objective-C for iOS, and XAML backed by C# for Windows Phone.

Appery.io platform overview

Figure 1. The Appery.io platform centers on a hosted, browser-based app builder that generates HTML5 code, using jQuery Mobile and Apache Cordova wrappers. The system also provides back-end services, hosted build services, and REST interfaces to external databases and applications.

You can test your HTML5 app as you go, in your desktop browser (Figure 4) and in your phone and tablet browsers; everything that doesn’t depend on Cordova will work. To test your Cordova code (for example, to use native device capabilities or get push messages), you build your app, download it to your device, and run it there. For convenience, Appery.io will display QR codes for your HTML5 app and your binaries so that you can download them directly to your device. For even more convenience, you can install the Appery.io Native Test App shell on your device and point that at your code.

In general, I found the app builder easy to learn and use. Appery.io has done a good job of designing its IDE so that mobile developers will not usually be surprised by what they get.

You can look at Appery.io-generated source code online, or you can view it offline after downloading the project. I didn’t have any trouble reading the HTML5/CSS/JavaScript code, but I was already familiar with Underscore, jQuery, and jQuery Mobile. Appery.io pulls in about 17 JavaScript libraries, not counting widgets. Is that fat? Well, yes. But on modern devices, it’s not an issue.

The device-specific native code for Android, iOS, and Windows Phone is uninteresting. Appery.io depends on Cordova for its native shell, and it does all of the custom application work in the embedded browser control.

Appery.io model storage

Figure 2. Appery.io allows you to define your model and storage online, and it exposes that storage to the pages and services of the app. The actual data store is a MongoDB NoSQL database hosted within the Appery.io platform.

It’s nice that Appery.io has its own cloud-based builder and build service. Coupled with the browser-based IDE, this means that mobile developers don’t need to have multiple computers or multiple VMs to create native apps, and they don’t have to maintain multiple native SDKs and IDEs. Of course, if you decide to export your Appery.io-generated app and maintain it yourself (for example, because you don’t want to continue your subscription), you will need the native SDKs and IDEs, or the PhoneGap Build service from Adobe.

Back-end services

As we mentioned earlier, Appery.io has an MBaaS feature that includes hosting, a NoSQL database (MongoDB), push notifications, JavaScript server code, and secure REST APIs.

Appery.io allows HTML hosting to its own cloud, to Heroku, and (manually) to third-party hosting providers. On Appery.io’s own cloud, you can use either the provided app.appery.io domain name or your own domain or subdomain name, assuming you have access to your DNS settings and know how to change them.

To host on Heroku, assuming you have a heroku.com account, you need to sign in, authorize apperyio on Heroku, then create a Heroku app from the Appery.io side. Only mobile Web apps can be published to Heroku, not Cordova apps.

You can publish hybrid apps to Google Play, the iOS App Store, and Windows Store. Appery.io can build the binaries for you in its cloud.

Appery.io design

Figure 3. Appery.io features a drag-and-drop page designer. The platform automatically generates source code that you can view online. When you are happy with the app, you can export it to mobile Web and mobile hybrid targets, including app binaries.

The Appery.io database uses MongoDB, a Web interface (Figure 2), and a REST API. Once you have defined tables (aka collections) and columns, you can refer to them from other parts of the Appery.io app builder, making connections and mappings graphically to automatically generate CRUD code. Each database has three predefined collections -- Users, Files, and Devices -- which all have roughly the columns you’d expect, and you can add collections at will.

Appery.io uses the Devices collection of a selected database to control the devices that will receive push notifications; it supports push notifications for Android and iOS, and any given push notification can be to only one or the other. You can filter the devices for a given push with a query builder or query string. Among the possible filters is a geolocation (for example, all the devices within two miles of a certain location). Other filters include channels, which you can keep in the database and assign as you wish, and device IDs. Appery.io does push notifications through the native Google and Apple services, so you need to have registered for those APIs.

Appery.io runs JavaScript server code using the V8 engine, although not using the Node.js framework. As you’d expect given the REST API, the back-end JavaScript code communicates with the app with request and response packets, and it formats the responses as JSON. For example, the following code defines a “Hello” response with the current server time:

// get name from service, name is entered in the app
var name = request.get("name");
// get and format the time
var now = moment().format("dddd, MMMM D YYYY, h:mm:ss a");
// put together the greeting string
var greetingString = "Hello " + name + ". It is " + now;
// format as JSON and return the response
response.success(JSON.stringify({
   greeting: greetingString
}), "application/json");

Appery.io implements Secure REST using its database and special proxy channels to keep secret keys, credentials, and other sensitive data safe from being opened by app users. Basically, you store your secret data in a database under key names, you create a proxy channel for replacing the key names with secret data, and in the app, you work with key names and define the proxy channel to be used. Then the app calls key names, and in the proxy, they are replaced with data, and the service receives real data. Users of the app can find the key names and the proxy channel ID, but they have no access to the secret data.

Appery.io test

Figure 4. Appery.io lets you test your app online in a browser and on your phone. Dropping down “View on Phone” displays a QR code that you can scan from your phone.

External interfaces

As of this writing, Appery.io has plug-ins for Stripe payments; SendGrid mail; Twilio messaging; USA Today news; Facebook, Foursquare, and LinkedIn social networks; Box storage; OAuth and Auth0 identity management; GitHub; Sirv dynamic imaging; and modern and flat UI themes. It also has built-in support for Salesforce.com.

If the external service you need doesn’t already have a plug-in, all is not lost. If it’s a REST service, Appery.io lets you connect to it, grab a sample response packet, and use Visual Data Binding to map the service’s output to your app.

Exadel, the company behind Appery.io, sells a companion service called RESTXpress. RESTXpress makes it easy to wrap SQL/JDBC databases and SOAP-based Web services with REST interfaces. RESTXpress can install in Java application servers such as Tomcat, and it's separately licensed.

Offline support

When using the Appery.io Model and Storage, persisting the Web app state to local storage is the default behavior. Data will be kept in local storage and made available after the next restart. Optionally, you can add your own code (JavaScript) to customize this capability as much as needed. If you need more local storage than can be kept in HTML5 WebView key/value pair storage, you can use the org.apache.cordova.file API to access the device file system or WebSQL to access the local SQLite database.

The Appery.io Model and Storage helps with letting an app run offline as it allows the developer to define an app model on the client (local storage). Custom code (JavaScript) can be used for further customization. Exadel plans to add much more support to make it easier. According to the company, Model and Storage was only the first step.

Mobile database synchronization with a server can be accomplished with Appery.io, as you can program both the client and the server, but it’s definitely not automatic. Typically you’d either store changes in key/value pair, or you'd maintain a local SQLite database, access it through a Cordova plug-in, and push dirty records back to the server database when connected.

Conclusions and comparisons

As Appery.io spans the MBaaS and mobile app development spaces, you’d want to compare it with products in both categories. In broad brushstrokes, I found Appery.io (overall score 8.2) less compelling than AnyPresence (overall score 9.1), which goes the extra mile and generates native apps and mobile APIs. AnyPresence also has the important enterprise database interfaces baked in.

I also found Appery.io less capable than FeedHenry (8.6), which has better enterprise support through its use of the Node.js framework, and Alpha Anywhere (8.8), which has excellent database integration and full support of offline operation, mobile data synchronization, and data conflict resolution.

I liked Appery.io better than the bare MBaaS Parse (7.6) and the app builder/MBaaS Appcelerator (7.8), and I found it roughly comparable to Kinvey (8.3), although Kinvey offers more in the way of analytics and enterprise database support.

InfoWorld Scorecard
Capability (25%)
Integrations (25%)
Client support (20%)
IDE (20%)
Value (10%)
Overall Score
Appery.io 8 8 8 9 8 8.2
At a Glance
  • Appery.io is a capable cloud-based mobile Web and hybrid mobile development platform with an online visual app builder and mobile back-end services.

    Pros

    • Online browser-based IDE for app and back-end data design, which generates mobile Web and hybrid mobile (Apache Cordova) apps
    • Mobile back-end services: hosting, database (MongoDB), push notifications, JavaScript server code, and secure proxies
    • REST interfaces to external APIs, databases, and applications
    • Inexpensive to start

    Cons

    • No monitoring at this point other than basic statistics about API calls
    • No support for native apps
    • Only basic support for offline operation
    • Enterprise licenses are not cheap

Copyright © 2015 IDG Communications, Inc.