A real-time database for your apps.

Using our SDKs it just takes a few lines of code to store and retrieve data. Real-time DB also works seamlessly with the other Appstax components, making it easy to write real-time apps with server logic.

Store objects and files

Powerful high-availability data storage with back up

Powerful and easy-to-use APIs for storing and retrieving objects and files. Define collections, and add objects to them. Query the collections using powerful filtering mechanisms. Grant and revoke access to objects on a per-user basis, or define access permissions at the collection level. Define relations between objects for super-easy retrieval of deeply nested object hierarchies.

Powerful query and filtering.

Query collections and retrieve any Appstax object and its attributes. You can also leverage a powerful filter syntax that works very similar to SQL. And of course, every app user only gets data he or she has access to.

Read more

Relations for flexible data models.

Define relations between collections and use SDKs with full object relational mapping functionality. Leverage the built-in query support to retrieve deeply nested object hierarchies in one API call.

Read more

Webhooks to trigger server code.

Define webhooks to trigger NodeJS-based server code that should be executed before and/or after an object is created, updated or deleted.

Read more

Respond to real-time events.

Appstax emits real-time events over websockets whenever objects are created, updated or deleted, making it easy for you to write reactive apps.

Read more

Code examples

For more comprehensive guides and documentation please refer to our documentation.

Storing objects

                  
//First initialize Appstax
appstax.init("YourAppKey");

var message = appstax.object("messages");
    message.text = "Hello World!";
    message.save();
                  
                
                  
//First initialize Appstax
[Appstax setAppKey:@"YourAppKey"];

AXObject *contact = [AXObject create:@"Contacts"];
          contact[@"name"]  = @"John Appleseed";
          contact[@"email"] = @"john@appleseed.com";
          [contact save];
                  
                
                  
//First initialize Appstax
appstax.init("YourAppKey");

AxObject object = ax.object("Contacts");
         object.put("name", "Foo McBar");
         object.put("email", "foo@example.com");
         ax.save(object, null);
                  
                
                      
curl -X POST https://www.appstax.com/api/latest/objects/Notes \
     -H "x-appstax-appkey:$APPSTAX_APPKEY" \
     -H 'Content-Type:application/json' \
     -d '{"title":"This is my first note", "contents":"The note is short."}' 
                    
                  

Asynchronous communication & promises

                  
message.save()
   .then(function() {
       // ... object has been saved
   })
   .fail(function(error) {
       // Request failed. error.message contains explanation of what went wrong
   });
                  
                
                  
[contact save:^(NSError *error) {
    if(!error) {
        // ... object has been saved
    }
 }];
                  
                
                  
ax.save(object, new Callback() {
    public void onSuccess(AxObject object) {
        // Do something with the successful response.
    }
    public void onError(Exception e) {
        // Handle any errors.
    });
});
                  
                

Querying objects

                  
appstax.find("friends", {gender:"male", hometown:"Oslo"})
   .then(function(objects){
       // objects contain all male friends from Oslo
   })
   .fail(function(error) {
       // Request failed. error.message contains explanation of what went wrong
   });
                  
                
                  
[AXObject find:@"Friends"
          with:@{@"Gender":@"Male",
                 @"Hometown":@"Oslo"}
    completion:^(NSArray *objects, NSError *error) {
          if(!error) {
              // ... objects contains all male friends from Oslo
          }
}];
                  
                
                  
HashMap properties = new HashMap();
properties.put("Gender", "Male");
properties.put("Hometown", "Oslo");

ax.filter("Friends", properties, new Callback>() {
    public void onSuccess(List objects) {
        // Do something with the matched objects.
    }
    public void onError(Exception e) {
        // Handle any errors.
    }
});
                  
                
                      
curl -X GET https://www.appstax.com/api/latest/objects/Notes \
   --data-urlencode "filter=title='TODO'" \
   -H "x-appstax-appkey:$APPSTAX_APPKEY"
   -H "x-appstax-sessionid: YzA0Yzc4N2YtMDc3NS00ZjIwLTU1YjAtZjdlOWFiYWIyNTg2"