---
title: Connect rpm-web-dashboard to a sandbox
sidebar_label: Connect a sandbox
description: Configure a local dashboard build for one Ovok sandbox project and practitioner account.
---

# Connect rpm-web-dashboard to a sandbox

The demo works without a project. Use sandbox mode only after an administrator has prepared a project and practitioner account.

## Configure the browser app

From the repository root, copy the example environment file:

```sh
cp .env.example .env.local
```

Set the sandbox API origin and the tenant code for the same project:

```dotenv
VITE_OVOK_API_BASE_URL=https://api.sandbox.ovok.com
VITE_OVOK_TENANT_CODE=your-sandbox-tenant-code
```

`VITE_` values are included in browser-delivered code. They are public configuration, not a place for client secrets, service credentials, passwords, tokens, or patient data. Restart Vite after changing the file.

## Prepare practitioner access

Ask a project administrator to configure practitioner sign-in and a least-privilege AccessPolicy for the dashboard's patient reads. If the Signals page is used, the policy also needs the documented Signals read capabilities. Follow [project setup](/authentication/project-setup), [practitioner login](/authentication/practitioner-login), [Access Policies](/access-policies), and the [Signals access-policy guide](/access-policies/signals).

In the app, choose **Connect sandbox** and sign in with the practitioner account. The dashboard reads only records returned for that authenticated user; it does not silently replace failed sandbox requests with demo data.

**Explore the source:** [`src/lib/ovokClient.ts`](https://github.com/Ovok-Dev/rpm-web-dashboard/blob/main/src/lib/ovokClient.ts) constructs the client from the public environment values; [`src/components/SignInDialog.tsx`](https://github.com/Ovok-Dev/rpm-web-dashboard/blob/main/src/components/SignInDialog.tsx) submits the practitioner login through the SDK.
