This guide shows how to install the MonoCloud JavaScript SDK and connect a vanilla JavaScript single-page application with MonoCloud authentication.
By the end of this guide, you will have:
If you already have a MonoCloud account and Single Page App, skip ahead to Install the MonoCloud JavaScript SDK.
If you don’t have an account yet, sign up at: https://www.monocloud.com
In the MonoCloud Dashboard:
Each Single Page App represents a single browser-based app secured by MonoCloud.
Open your application and configure the following URLs.
These URLs tell MonoCloud where to redirect users after authentication events.
For local development with the Vite default port, configure:
http://localhost:5173http://localhost:5173A single-page app calls MonoCloud's endpoints directly from the browser, so the origin your app is served from must be allowed:
http://localhost:5173Replace these with your production URLs before deployment.
If you already have a project, skip this step.
npm create vite@latest <your-app-name> -- --template vanilla-ts
cd <your-app-name>
Node.js 18 or later is recommended.
Install the SDK using your package manager:
npm install @monocloud/auth-web-js
Create a single shared MonoCloudWebJSClient instance and export it. The same instance is reused everywhere you need to read the session, sign users in, or get tokens.
import {
MonoCloudWebJSClient,
type MonoCloudWebJSClientOptions,
} from "@monocloud/auth-web-js";
const options: MonoCloudWebJSClientOptions = {
tenantDomain: "https://<your-domain>",
clientId: "<your-client-id>"
};
export const client = new MonoCloudWebJSClient(options);
| Option | Required | Description |
|---|---|---|
tenantDomain | Yes | MonoCloud tenant domain from Application Information in the Dashboard |
clientId | Yes | Client ID from Application Information in the Dashboard |
The SDK needs to complete sign-in and sign-out flows before your UI renders. Call processCallback() once on startup - it inspects the current URL and completes whichever flow is pending:
import { client } from "./auth";
await client.processCallback();
For full details on routing, return URLs, and integrating with a client-side router, see Handle sign-in and sign-out callbacks.
Wire up the rest of the integration: