> For the complete documentation index, see [llms.txt](https://dnotifier.gitbook.io/product-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dnotifier.gitbook.io/product-docs/getting-started/create-app.md).

# Create an app

Every DNotifier integration starts with an **app** in the dashboard. An app owns credentials, plan limits, and usage counters. This guide shows how to create one and copy the values you need for the SDK.

## Prerequisites

* A registered DNotifier account — see [**Register your account**](/product-docs/getting-started/register-account.md)
* Access to [app.dnotifier.com](https://app.dnotifier.com)

## Step 1 — Open the Apps section

1. Sign in at [app.dnotifier.com](https://app.dnotifier.com).
2. Navigate to **Apps** in the sidebar or main navigation.

If this is your first app, the list may be empty.

## Step 2 — Create a new app

1. Click **Create app** (or **New app**, depending on UI version).
2. Enter a **name** that identifies the app in your organization, for example:
   * `My Product — Production`
   * `My Product — Development`
3. Add an optional **description** if the form provides one (helpful when you have many apps).
4. Confirm creation.

The dashboard generates a new app record immediately.

## Step 3 — Copy your appId

Each app receives a unique **appId**. This identifier is:

* Required in every SDK `DNotifier` constructor
* Safe to embed in client-side code (it is not secret on its own)
* Used by DNotifier to route traffic and apply plan limits

Copy the **appId** from the app detail page and store it in your project's environment configuration — see [**Credentials & environment**](/product-docs/getting-started/credentials.md).

## Step 4 — Copy your app secret

Each app also receives an **app secret** (sometimes labeled **secret** or **app secret** in the UI).

The secret is:

* Required for SDK authentication at `connect()`
* **Private** — treat it like a password
* Rotatable from the dashboard if compromised

Copy the secret once when shown. Some dashboards hide it after the first view — if you lose it, generate a new secret from the app settings rather than sharing an old one insecurely.

## Step 5 — Store credentials securely

Never paste secrets into source code that is committed to version control.

Recommended approach:

```bash
# .env (add .env to .gitignore)
DNOTIFIER_APP_ID=your-app-id-here
DNOTIFIER_SECRET=your-app-secret-here
```

Load these values in your application at runtime. Full patterns are in [**Credentials & environment**](/product-docs/getting-started/credentials.md).

## Step 6 — Choose an environment strategy

| Environment       | App strategy                               |
| ----------------- | ------------------------------------------ |
| Local development | Dedicated dev app with lower traffic       |
| Staging           | Separate app mirroring production config   |
| Production        | Production app with production plan limits |

Using separate apps per environment keeps usage metrics clean and limits blast radius if a dev secret leaks.

## Verify your setup

Before writing code, confirm:

* [ ] App appears in the **Apps** list
* [ ] `appId` is copied to your environment config
* [ ] `secret` is copied to your environment config (not in git)
* [ ] `.env` or secret manager entry exists locally

## Next steps

* [**Credentials & environment**](/product-docs/getting-started/credentials.md) — Understand `appId`, `secret`, and `userId`
* [**Choose your transport**](/product-docs/getting-started/choose-transport.md) — Pick WebSocket or HTTP
* [**Install an SDK**](/product-docs/getting-started/installation.md) — Add the package to your project
* [**Your first connection**](/product-docs/getting-started/first-connection.md) — Connect with the SDK
