- Enginio 1.0.6 Reference Documentation

Enginio Installation and Prerequisites

# Enginio Manual

Enginio is a Backend-as-a-Service solution to ease backend development for any connected and data-driven application.

## Tutorials

To get started quickly, follow the mini-tutorial using Qt Quick or C++.

- Enginio Installation and Prerequisites
- Getting Started with Enginio using Qt Quick
- Getting Started with Enginio using C++

## Reference documentation and examples:

- Enginio C++ Classes and Examples
- Enginio QML Types and Examples

## Overview

When using Enginio (with Qt Quick or C++), the API is following a general pattern that will be helpful to understand. This section gives a short, high-level overview of the concepts used throughout the library.

The Qt library is a client-side library to communicate with the server at http://engin.io. Several backends can exist for each account on the server. For all communication with the server, the backend is determined by its id. When shipping an application built with Enginio, the `backend id` will be the same for all users of that application.

### Objects

Enginio provides several types of objects: `custom objects`, `users`, `user groups`, files, and more. All communication with the backend uses JSON. When writing QML, JSON can simply be written inline. On the C++ side, QJsonObject and QJsonValue are used.

Each object in the database has an `id`, `objectType`, `createdAt` and `updatedAt` property that are reserved and always exist. For example, a custom object with no additional properties (in JSON) might look like this:

    {
        "id": "51cdbc08989e975ec300772a",
        "objectType": "objects.todos",
        "createdAt": "2013-06-28T16:38:32.369Z",
        "updatedAt": "2013-06-28T16:38:32.725Z"
    }

With this basis, the objects can be augmented with user defined properties that contain the actual application data and can even contain other objects. For a more detailed description see the Enginio Object documentation.

### Operations

To operate on objects of any type, the basic operations are:

- create: create a new object
- query: list objects
- update: change an object
- remove: delete an object

For a detailed description of the operations see the functions in the EnginioClient Class in C++ or EnginioClient type in QML.

Note: User management and access control lists are conveniently done by the same functions.

### File Management

For file management, the operations are slightly different. Files are always attached to objects and can only be referenced through them. The Qt library provides convenient functions to upload and download files.

The entire Enginio documentation, including backend and client, is available here: Enginio Documentation