# Quickstart

<SkillCard title="AI Skill" subtitle="@openfort/openfort-js" source="npm" subtitleHref="https://www.npmjs.com/package/@openfort/openfort-js" description="Pre-built prompt with the full setup reference." content={skillContent} fileName="SKILL.md" />

::::steps

## Install the Openfort SDK

Install the latest version of the [Openfort JS SDK](https://www.npmjs.com/package/@openfort/openfort-js) using your package manager of choice:

:::note
**Prerequisites**

To integrate Openfort, your project must have:

* **Node v20** (Active LTS version) or higher
* [TypeScript version 5](https://github.com/microsoft/TypeScript/releases/tag/v5.0.2) or higher
  :::

:::code-group

```sh [npm]
npm install @openfort/openfort-js@latest
```

```sh [yarn]
yarn add @openfort/openfort-js@latest
```

```sh [pnpm]
pnpm add @openfort/openfort-js@latest
```

:::

## Set your auth providers

Navigate to the **auth providers** page on the [Openfort dashboard](https://dashboard.openfort.io) by selecting your project and then clicking Auth providers Methods in the side bar in the [users page](https://dashboard.openfort.io/users). Select the account types you'd like users to be able to login with. For more information on how to enable social logins, check out the [dashboard docs](/docs/configuration/social-login).

## Get your [API keys](/docs/configuration/api-keys)

In the [API keys](https://dashboard.openfort.io/api-keys) section, you'll find:

* **Publishable Key**: Safe to expose in client-side environment
* **Secret Key**: Must be kept secure and used only server-side

To generate non-custodial wallets:

1. Scroll to the Shield section and click **Create Shield keys**
2. **Store the encryption share** safely when it appears (you'll only see it once)
3. You'll receive:
   * **Shield Publishable Key**: Safe for client-side use
   * **Shield Secret Key**: Keep secure, server-side only

## Import Openfort into your app

Import and configure Openfort using the publishable keys from the Dashboard.

The Openfort SDK should be instantiated only once.

```ts openfortConfig.ts
import { Openfort } from "@openfort/openfort-js";

const openfort = new Openfort({
  baseConfiguration: {
    publishableKey: "YOUR_OPENFORT_PUBLISHABLE_KEY",
  },
  shieldConfiguration: {
    shieldPublishableKey: "YOUR_SHIELD_PUBLISHABLE_KEY",
  },
  debug: false, // Optional: enable verbose logging for development
});

export default openfort;
```

## You're good to go!

Once you've configured your app, you can now use `openfort` throughout to access the Openfort SDK.

Check out our [starter repo](https://github.com/openfort-xyz/openfort-js/tree/main/examples/apps/auth-sample) to see what a simple end-to-end integration looks like, or read on to learn how you can use Openfort to:

* [Log your users in](/docs/products/embedded-wallet/javascript/auth).
* [Request signatures](/docs/products/embedded-wallet/javascript/smart-wallet).

::::
