---
title: Quickstart
slug: back4app/6yAV-iBiZMNF97n5QFkyM
description: Release your App faster, reducing drastically your development effort by providing a flexible, scalable and easy-to-use backend platform.
image: https://www.back4app.com/_public/img/back4app-og.png
createdAt: 2024-01-16T19:22:06.326Z
---



Once upon a time in a quaint little town, there lived a spirited golden retriever named Max. He was known for his boundless energy and insatiable curiosity. One afternoon, as dark clouds gathered and the wind began to howl, rain started to pour down from the sky.

Max, undeterred by the weather, stood by the door, his tail wagging furiously as he watched the raindrops dance on the ground. His owner, Sarah, had been about to leave for a walk, but the weather seemed to have other plans. Seeing Max's eagerness, she decided it was a perfect opportunity for a little adventure together, even if it meant getting a bit wet.

Armed with a bright yellow raincoat for Max and her own waterproof jacket, they stepped outside. The world looked different under the veil of rain; the colors were more vibrant, and the air smelled fresh and invigorating. Max bounded ahead, splashing through puddles with jubilant fervor. Each splash sent droplets flying into the air, creating a sparkling display that mirrored the joy in his heart.

As they ventured deeper into the park, the rain became heavier, but Max didn't mind. He chased raindrops as if they were his playful companions, barking with delight every time he leapt into a particularly large puddle. The playful antics of her beloved dog brought a smile to Sarah’s face amidst the raindrops falling around them.

They continued their exploration when suddenly, Max paused. He sniffed the air, his ears perked, and then darted towards an old oak tree where a small bird had sought refuge from the rain. Max watched intently, his curiosity piqued, as the bird fluffed its feathers. Sarah called him back, and he returned with an excited wag of his tail, ready to press on.

After a joyful excursion, they returned home, soaked but happy. Sarah toweled Max dry and rewarded him with his favorite treat for being such a good sport at the rain-soaked outing. As Max snuggled up next to her on the couch, exhausted from his adventures, Sarah realized that sometimes, the best moments come when you embrace the unexpected, even if it means getting a little wet.

In that cozy warmth, with the rain pattering gently against the windows, they both drifted into a contented slumber, dreaming of the next adventure that awaited them, rain or shine.

You can define the specific InfluxDB measurement that you want to publish data to. If you don't define a measurement, then **deviceName** and **deviceID** topic values (`deviceName.deviceID`) define the measurement name.

For more information on InfluxDB measurements, see

To specify an InfluxDB measurement:

1. Edit the subscription to the topic to open the *Data Integration* dialog.
2. In  **s**pecify the measurement name in your InfluxDB data structure.

   ::Image[]{src="https://api.main.archbee.co/api/optimize/SSUUxKZUk9bFTEPNn_6Zo/r8gyW81lv2LPlNStaDEKC_remote-data-topic.png" size="80" width="803" height="615" position="flex-start" showCaption="false"}

:::ApiMethodV2
```json
{
  "name": "Get Cakes",
  "method": "GET",
  "url": "https://api.cakes.com",
  "description": "Get a cake by its ID",
  "tab": "examples",
  "examples": {
    "languages": [
      {
        "id": "yAUio3w6CH38HOrSOsVeu",
        "language": "javascript",
        "code": "var myHeaders = new Headers();\nmyHeaders.append(\"Accept\", \"application/json\");\nmyHeaders.append(\"Content-Type\", \"application/json\");\n\nvar raw = JSON.stringify({\n   \"id\": \"string\"\n});\n\nvar requestOptions = {\n   method: 'GET',\n   headers: myHeaders,\n   body: raw,\n   redirect: 'follow'\n};\n\nfetch(\"https://api.cakes.com\", requestOptions)\n   .then(response => response.text())\n   .then(result => console.log(result))\n   .catch(error => console.log('error', error));",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "yAUio3w6CH38HOrSOsVeu"
  },
  "results": {
    "languages": [
      {
        "id": "oW4ElRzc1wBaMGub_43ji",
        "language": "200",
        "code": "{\n  \"name\": \"Cake's name\",\n}",
        "customLabel": ""
      },
      {
        "id": "uRz9vwuFK-_ckzWhilMqO",
        "language": "404",
        "code": "{\n  \"message\": \"Ain't no cake like that.\"\n}",
        "customLabel": ""
      }
    ],
    "selectedLanguageId": "oW4ElRzc1wBaMGub_43ji"
  },
  "request": {
    "pathParameters": [],
    "queryParameters": [],
    "headerParameters": [],
    "bodyDataParameters": [
      {
        "name": "id",
        "kind": "required",
        "type": "object",
        "description": "ID of the cake to get",
        "": "object",
        "children": [
          {
            "name": "New Parameter",
            "kind": "optional",
            "type": "object",
            "description": "",
            "children": [
              {
                "name": "Sub-parameter",
                "kind": "optional",
                "type": "string",
                "description": "asdasdasdas"
              }
            ]
          }
        ],
        "schema": [
          {
            "name": "New Parameter",
            "kind": "optional",
            "type": "object",
            "description": "",
            "children": [
              {
                "name": "Sub-parameter",
                "kind": "optional",
                "type": "string",
                "description": "asdasdasdas"
              }
            ]
          }
        ]
      }
    ],
    "formDataParameters": []
  },
  "currentNewParameter": {
    "label": "Body Parameter",
    "value": "bodyDataParameters"
  },
  "hasTryItOut": true,
  "autoGeneratedAnchorSlug": "get-cakes",
  "legacyHash": "b4rFxAg--PNOfhP18eHHN"
}
```
:::

### back4app main features:

- database&#x20;
- cloud code functions
- apis (graphql and rest)
- file storage
- authentication
- push notifications

## 5-minutes quick start

after creating your back4app account and first app, go to your app dashboard and get your app keys under <font color="#2166ae">`app settings -> security & keys`</font>(check the image below). note that you will always need two keys to connect with back4app, the <font color="#2166ae">`application id`</font>, and another key according to the <font color="#2166ae">`sdk`</font> you will use.

![](https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/pGTX6D2rGm8Ohe9w99cin_app-settings.png)

### 1. install and configure the parse sdk

to integrate the parse sdk, follow these general steps:

**install the parse sdk:**

- **javascript / node.js**: `npm install parse --save`
- **react native**: `npm install parse @react-native-async-storage/async-storage --save`, then run `cd ios && pod install`
- **flutter**: add `parse_server_sdk_flutter` to `pubspec.yaml`
- **android (java):** add your app's `build.gradle` inside `dependencies{}`:&#x20;

:::CodeblockTabs
build.gradle

```java
implementation "com.github.parse-community.parse-sdk-android:parse:latest_version"
```
:::

- **ios (swift)**: install cocoapods `(sudo gem install cocoapods)` and add parse to your `podfile`

**initialize the parse sdk** with your application id and the appropriate key:

```javascript
parse.initialize('your_application_id', 'your_javascript_key');
parse.serverurl = 'https://parseapi.back4app.com/';
```

*the example above is for javascript/node.js. adjust accordingly for your platform.*

### 2. save data on back4app

create and save a sample object to confirm that the sdk is properly set up. use the example below and adapt it to your programming language:

```javascript
async function savenewplayer() {
    const player = new parse.object('player');
    player.set('name', 'alex');
    player.set('yearofbirth', 1997);
    player.set('emailcontact', 'alex@email.com');
    player.set('attributes', ['fast', 'good endurance']);
    
    try {
        const result = await player.save();
        console.log('new object created with id:', result.id);
    } catch (error) {
        console.error('failed to save object:', error.message);
    }
}
```

after saving, you can verify the data in the **app dashboard** on back4app.

### 3. platform-specific setup

**javascript - react / angular**

- **install** the sdk: `npm install parse --save`
- **initialize** with your app keys and back4app server url.

**flutter**

1. add `parse_server_sdk_flutter` in your `pubspec.yaml:`

:::CodeblockTabs
pubspec.yaml

```yaml
dependencies:
  parse_server_sdk_flutter: ^latest_version
```
:::

&#x20;   2\.  **initialize** parse in `main.dart:`

```dart
await parse().initialize('your_application_id', 'https://parseapi.back4app.com', clientkey: 'your_client_key');
```

**android (kotlin/java)**

- **include** the sdk in `build.gradle` and configure network permissions in `androidmanifest.xml`
- **initialize** in `app.kt:`

```kotlin
parse.initialize(new parse.configuration.builder(this)
    .applicationid(getstring(r.string.back4app_app_id))
    .clientkey(getstring(r.string.back4app_client_key))
    .server(getstring(r.string.back4app_server_url))
    .build()
);
```

**ios (swift)**

1. add `parseswift` to your project using cocoapods.
2. initialize parse in `appdelegate.swift:`

:::CodeblockTabs
AppDelegate.swift

```swift
let configuration = parseclientconfiguration {
    $0.applicationid = "your_application_id"
    $0.clientkey = "your_client_key"
    $0.server = "https://parseapi.back4app.com"
}
parse.initialize(with: configuration)
```
:::

**php**

1. **install the sdk** with composer by creating a composer.json with:

:::CodeblockTabs
composer.json

```json
{
    "require": {
        "parse/php-sdk" : "1.6.*"
    }
}
```
:::

then, run `composer.install`.

&#x20;   2\. **initialize** parse in your php script:

```php
require 'vendor/autoload.php';
parseclient::initialize('your_app_id', 'your_rest_key', 'your_master_key');
parseclient::setserverurl('https://parseapi.back4app.com', '/');
```

&#x20;   3\. **save data** in php:

:::CodeblockTabs
composer.json

```php
$player = new parseobject("player");
$player->set("name", "alex");
$player->set("yearofbirth", 1997);
$player->set("emailcontact", "alex@email.com");
$player->setarray("attributes", ["fast", "good endurance"]);
$player->save();
```
:::

**.net (c#)**

1. **install** parse sdk through nuget package manager in visual studio.
2. **initialize** parse in your application:

```csharp
parseclient.initialize(new parseclient.configuration {
    applicationid = "your_app_id",
    server = "https://parseapi.back4app.com",
    clientkey = "your_client_key"
});
```

&#x20;   3\. **save data** in c#:

```csharp
var player = new parseobject("player")
{
    ["name"] = "alex",
    ["yearofbirth"] = 1997,
    ["emailcontact"] = "alex@email.com",
    ["attributes"] = new list<object> { "fast", "good endurance" }
};
await player.saveasync();
```

**rest api**

1. **save data** via rest by sending a post request:

```bash
curl -x post \
-h "x-parse-application-id: your_app_id" \
-h "x-parse-rest-api-key: your_rest_key" \
-h "content-type: application/json" \
-d '{"name":"alex", "yearofbirth":1997, "emailcontact":"alex@email.com", "attributes":["fast", "good endurance"]}' \
https://parseapi.back4app.com/classes/player
```

### 4. additional resources and examples

there are many example apps and starter projects to get going

- [reactjs slack clone](https://github.com/templates-back4app/react-js-slack-clone) - a react template using real-time, relational queries and authentication.
- [flutter user login/signup](https://github.com/templates-back4app/flutter-user-signup) - a user sign-up/login flutter template using <font color="#2166ae">`parse.user`</font> class.
- [react native associations](https://github.com/templates-back4app/react-native-js-associations)  - a template on react native digging deeper into associations and relational queries using <font color="#2166ae">`pointers`</font> and<font color="#2166ae">`relations`</font>.
- [flutter file storage](https://www.back4app.com/docs/flutter/parse-sdk/flutter-save-file)  - saving files from a flutter app.
- [geopointers on kotlin-android](https://github.com/templates-back4app/AndroidGeoLocationKotlin)  - exploring geopointers in android.
- [todo list example is swift-ios](https://github.com/templates-back4app/ios-template-todo-list)  - a todo list example in swift.

find more examples in [back4app templates.](https://github.com/templates-back4app)

## &#x20;what to do next?

after completing the quick start, we encourage you to explore back4app's key features through the guides below. you'll learn how to store and query relational data, implement cloud functions for backend logic, use real-time subscriptions to keep users updated, manage file storage, send push notifications, and set up authentication. select the technology that best fits your project and enjoy the journey!

::::LinkArray
:::LinkArrayItem{headerType="IMAGE" headerImage="https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/pEkmfq5PdkxC3lmfRzYsE_1.png"}
&#x20;       **[react native](https://www.back4app.com/docs/react-native/parse-sdk/react-native-sdk)**
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/tPONkoW1aPPhiAdTvbvrx_sem-nome-rectangle-sticker-landscape.png"}
**[flutter](https://www.back4app.com/docs/flutter/parse-sdk/parse-flutter-sdk)**
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/vqJJw7ljIhPJ1Yfz7mD9n_3.png"}
[android ](https://www.back4app.com/docs/android/android-project-with-source-code-download)
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/rzkB1YU-Feimt_SWfZUuC_4.png"}
[ios](https://www.back4app.com/docs/ios/ios-app-template)
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/GsQE6ru-jj2rRbUt7P3Tr_5.png"}
**[javascript](https://www.back4app.com/docs/javascript/parse-javascript-sdk)**
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/35IqTes9QhdmijlReYBYZ_6.png"}
[graphql](https://www.back4app.com/docs/parse-graphql/graphql-getting-started)
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/D4RecbrtvjfbKUfb4yRbP_7.png"}
[ionic](https://www.back4app.com/docs/js-framework/ionic/ionic-template)
:::

:::LinkArrayItem{headerType="IMAGE" headerImage="https://api.main.archbee.co/api/optimize/yD3zCY-NNBBIfd0uqcfR5/yOia2J8LzE-r1WSHQ7ZSQ_8.png"}
[xamarin](https://www.back4app.com/docs/xamarin/xamarin-templates)
:::
::::

