> ## Documentation Index
> Fetch the complete documentation index at: https://docs.readmin.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Embedding the Application Center

> Load the In-Game Application Center inside the Activity Tracking module as an optional, on-demand window — opened from the ReAdmin topbar, your own UI, or server code.

## Overview

The [In-Game Application Center](/features/application-center) normally runs as a
**standalone** experience — it fills the screen and the application *is* the game.

You can also load it **inside the Activity Tracking module**, where it behaves as
an optional window players open on demand. In this **embedded** mode it:

* **doesn't take over the game** — movement, camera, and the topbar stay fully
  usable (no lockdown);
* opens as a **window** by default (or full-screen if you prefer), with a close
  button;
* is **opt-in** — you point the loader at the Application Center module and it
  handles everything else;
* can be opened from the **ReAdmin topbar**, your **own UI** (client API), or
  **server code** (server API).

<Note>
  Embedding reuses your existing Activity Tracking `loaderId` and the Activity
  Tracking module you've already installed — there's nothing extra to download or
  configure in your game. Forms still flow into [Forms](/features/forms) exactly as
  they do standalone — only the *presentation* changes.
</Note>

## Enabling it

The Application Center is toggled from **workspace settings**, not your game code
— exactly like [Calls](/settings/remote-admin). Nothing changes in your loader.

1. Go to **Settings → [Downloads](/settings/downloads)**.
2. Under **In-Game Application Center**, turn on **Enable in your game**.
3. Choose how it appears (see [Display options](#display-options) below).

Once enabled, the next time your servers start, the activity tracker loads the
Application Center and an **Applications** entry appears in the existing ReAdmin
topbar menu, next to *Request Support* and *Report a Player*.

<Note>
  The setting is delivered to your servers when they start (in the same way the
  Calls toggle is), so newly-started servers pick it up automatically — existing
  servers apply it on their next start.
</Note>

### Display options

Both options live next to the enable toggle in **Settings → Downloads**:

| Setting                    | Options               | Default  | Description                                                               |
| -------------------------- | --------------------- | -------- | ------------------------------------------------------------------------- |
| **Display mode**           | Windowed / Fullscreen | Windowed | Whether the panel floats over your game as a window, or fills the screen. |
| **Dim the game behind it** | On / Off              | Off      | Darkens and blocks the game behind the window while it's open.            |

<Tip>
  When embedded, the Application Center **never** disables movement, the camera, or
  the topbar — that lockdown only applies to the standalone product. A window that
  floats over live gameplay is the whole point of embedding.
</Tip>

<Note>
  **Developers / testing:** the loader config accepts an optional
  `applicationCenter` field to point the tracker at a specific Application Center
  build (a `ModuleScript` or asset id) while testing — e.g.
  `applicationCenter = script.Parent.ApplicationCenter`. It only overrides *which*
  module loads; whether the Application Center loads at all is still controlled by
  the workspace setting above.
</Note>

## Client API

When the Application Center loads embedded, you can open it from your own
LocalScripts through the existing **`ReAdminClientAPI`** `BindableFunction` (the
same handle used to [start calls](/api-reference/starting-calls)):

```lua theme={null}
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ReAdminClient = ReplicatedStorage:WaitForChild("ReAdminClientAPI")

-- Open the Application Center (browse open positions)
ReAdminClient:Invoke("openApplications")

-- Open straight to a specific posting
ReAdminClient:Invoke("openApplication", { applicationId = "APPLICATION_ID" })

-- Close it
ReAdminClient:Invoke("closeApplications")
```

| Action              | Options             | Description                                            |
| ------------------- | ------------------- | ------------------------------------------------------ |
| `openApplications`  | –                   | Opens the Application Center on the openings list.     |
| `openApplication`   | `{ applicationId }` | Opens the Application Center straight to that posting. |
| `closeApplications` | –                   | Closes the Application Center window.                  |

<Note>
  These actions no-op when the Application Center isn't enabled, so it's safe to
  call them unconditionally. The `applicationId` is the form's id from
  [Forms](/features/forms).
</Note>

## Server API

The loader returns the ReAdmin table — keep a handle to it and you can open the
Application Center for a player from trusted server code (a proximity prompt, an
NPC, or an automated "you've been invited to apply" flow):

```lua theme={null}
-- Enable the Application Center under Settings → Downloads first; no loader
-- config is needed for it to load.
local ReAdmin = require(YOUR_LOADER_ASSET_ID)({
    loaderId = "your-loader-id-here",
})

-- Open the Application Center for a player
ReAdmin.OpenApplications(player)

-- Open straight to a specific posting
ReAdmin.OpenApplication(player, "APPLICATION_ID")

-- Close it for a player
ReAdmin.CloseApplications(player)
```

| Method              | Parameters                | Returns                          |
| ------------------- | ------------------------- | -------------------------------- |
| `OpenApplications`  | `player`                  | `true`, or `false, errorMessage` |
| `OpenApplication`   | `player`, `applicationId` | `true`, or `false, errorMessage` |
| `CloseApplications` | `player`                  | `true`, or `false, errorMessage` |

`ReAdmin.ApplicationCenter` also exposes the underlying module handle for advanced
callers. All three methods return `false` with a message when the Application
Center isn't enabled.

<Note>
  Like the rest of the server API, these are **server-only** — they're not exposed
  as a client-invokable remote, so exploiters can't trigger them. Call them from
  code you trust.
</Note>

## Good to know

* **Opt-in only.** Without the `applicationCenter` config, nothing changes — the
  Activity Tracker behaves exactly as before, and the standalone Application
  Center is untouched.
* **Resilient.** If the Application Center module can't load, it's logged and
  skipped — activity tracking keeps running normally.
* **Same data everywhere.** Embedded or standalone, submissions land in
  [Forms](/features/forms) with the same auto-grading and rank-based eligibility.

## Related pages

* [In-Game Application Center](/features/application-center)
* [Starting Calls from Your Game](/api-reference/starting-calls)
* [Forms](/features/forms)
* [Job Postings](/features/job-postings)
