Connect your app to your mobile backend, simply.

Anode

Anode is a communication framework for iOS, Android and Rails that simplifies client/server integration. For projects large and small, Anode lets you keep the flexibility of a custom backend while streamlining the communication layer.

Custom vs. BaaS

Selecting a mobile backend architecture for your next mobile app project is an important decision. Should you write a totally custom backend on Heroku? Or subscribe to a popular Backend as a Service (BaaS), such as Parse? The simplicity of setup and cleanliness of the client AP often make BaaS a tempting option. However, most serious app projects quickly outgrow such architectures, requiring a costly rewrite.

Anode: Confidently Create Your App Ecosystem

Anode combines the best of both worlds. You get the flexibility, security and power of a custom backend with a clean, easy to integrate client SDK.

  • Expressive Client Code

    Use the native client SDKs for iOS and Android to interact with server objects in clear, concise, expressive code.

  • New or Existing API

    Integrate an existing API or use the included Ruby components to quickly spin up a Rails-based API in minutes.

  • Save Time

    Anode takes care of the network chatter so you can focus on your app. Traverse objects, upload files and handle errors without getting bogged down in networking minutia.

Anode powers the Fluke Virtual Sales Assistant Platform

See how

Fast & Expressive

Quickly write easy-to-read asynchronous interactions. Anode gives you all the basics and lets you add what you need, easily.

  • CRUD Operations

    Instantly add the ability to Create, Read, Update and Delete objects in a few lines of code.

  • Structured Queries

    Fetch lists of objects using powerful, human-readable query language without writing custom queries on the backend.

  • Users & Push Notifications

    Handle sign-up, login and push notifications using defaults or custom code.

Anode turns this...

NSString *string = [NSString stringWithFormat:@"%@products.php?format=json&id=7", BaseURLString];
NSURL *url = [NSURL URLWithString:string];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
operation.responseSerializer = [AFJSONResponseSerializer serializer];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
    self.product = [[Product alloc] initWithJson: responseObject];
    [self reloadSomething];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    // TODO: determine nature of error?
    // TODO: see if message or known error code is provided?
    // TODO: de-dup repetitive error?
    // TODO: centralize presentation of errors?
    UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error Retrieving Product Info"
                                                        message:[error localizedDescription]
                                                       delegate:nil
                                              cancelButtonTitle:@"Ok"
                                              otherButtonTitles:nil];
    [alertView show];
}];
[operation start];

Into...

ANQuery *productQuery = [ANQuery queryWithType:@"product"];
[productQuery findObjectWithId:@(7) block:^(ANObject *object, NSError *error) {
  self.product = object;
  [self reloadSomething];
}];

Add Anode to Your Project

Import Anode and customize it to meet your needs on one or both platforms.

Anode - iOS

pod anode
or
Grab it on GitHub

Anode - Android

Need help?

We offer support, custom implementation, and other services related to app development.

Get in Touch