Management API Reference

Ecosystem wallet

Quickstart

The Fort SDK is the easiest way to create you ecosystem wallet. It comes with a code-splitting environment, all the necessary tools to make your wallet SDK a reality. It is the easier way to create your own ecosystem wallet.

The Fort SDK has two main parts:

  1. @openfort/ecosystem-js/client: The Client SDK that you will use to create your wallet SDK.
  2. @openfort/ecosystem-js/core: The Core SDK that you will use to create your wallet UI. Fort also includes a React specific package @openfort/ecosystem-js/react that you can use to get started faster.

0. Requirements#

Your project will need some specific configuration to enable code splitting:

  • Typescript version 5.0.2 or higher.
  • TS Config needs to have compilerOptions.moduleResolution set to bundler.
  • Your code editor and project should have the same version of Typescript.

1. Install the Fort SDK#

Install the latest version of Fort SDK using your package manager of choice:

You will need to install @openfort/ecosystem-js at both your wallet SDK and wallet UI projects.

Terminal

_10
npm install @openfort/ecosystem-js

2. Set your auth providers#

Navigate to the auth providers page on the Openfort dashboard by selecting your project and then clicking Auth providers Methods in the side bar in the players page. 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.

3. Get your Openfort keys#

From the Openfort Dashboard for select your desired app, navigate to the developers page in the top bar. On the de tab, find the API keys section. Get your Openfort API keys, you will need it in the next step.

You will find two keys:

  • Publishable Key: This value can be safely exposed in a client-side environment.
  • Secret Key: This value should never be exposed in a client-side environment. It should be kept secure and used only in a server-side environment. Learn more on how to use it in the server-side guide. You can further secure it for production applications.

To generate non custodial wallets, you will need to create a Shield instance. At the API keys page, scroll down to the Shield section and click on the Create Shield keys button. A one time pop-up will appear with a variable called encryption share. Its very important that you store it safely. You will not be able to see it again.

Then, in your page, you will see two Shield keys:

  • Publishable Key: This value can be safely exposed in a client-side environment.
  • Secret Key: This value should never be exposed in a client-side environment.

4. Creating your wallet SDK#

fort-architecture-1

The easiest way to get started is to create a Proxy object in order to map the already provided functionality of the Client SDK. You can nevertheless change or add new methods to fit your needs.

main.ts
package.json
tsconfig.json

_41
import { Client } from "@openfort/ecosystem-js/client";
_41
import {
_41
AUTHENTICATION_DOMAIN,
_41
SCOPE,
_41
AUDIENCE,
_41
LOGOUT_MODE,
_41
} from './config';
_41
_41
const oidcConfig = {
_41
scope: SCOPE,
_41
authProviderDomain: AUTHENTICATION_DOMAIN,
_41
audience: AUDIENCE,
_41
logoutMode: LOGOUT_MODE,
_41
};
_41
_41
class EcosystemWallet extends Client {
_41
constructor({ clientId, redirectUri, logoutRedirectUri }: { clientId: string, redirectUri: string, logoutRedirectUri: string }) {
_41
super({
_41
publishableKey: clientId,
_41
redirectUri: redirectUri,
_41
logoutRedirectUri: logoutRedirectUri,
_41
...oidcConfig,
_41
baseConfig: {
_41
// URL where the UI wallet is hosted
_41
ecosystemWalletDomain: 'https://wallet.ecosystem.com',
_41
}
_41
});
_41
_41
return new Proxy(this, {
_41
get: (target, prop) => {
_41
if (prop in target) {
_41
const value = target[prop as keyof EcosystemWallet];
_41
return typeof value === 'function' ? value.bind(target) : value;
_41
}
_41
return undefined;
_41
}
_41
});
_41
}
_41
}
_41
_41
export default EcosystemWallet;

You're all set! By running the build script you'll get a dist folder with the compiled code. You can now publish your package to npm and share it with the world.

You can check all the available client methods in the Client SDK reference.

5. Creating your wallet UI#

The wallet UI is where your users will interact with your wallet.

fort-architecture-2

Openfort @openfort/ecosystem-js comes with a set of pre-built components that you can use to create your wallet UI. To learn how to customize it further, head to the UI screens guide.

In your project, import the FortProvider component and wrap your app with it. Set the publishable key field to you got from the Dashboard in step 3.

Concretely, the FortProvider must wrap any component or page that will use the Fort SDK in your react app. It is generally recommended to render it as close to the root of your application as possible.

For example, in a NextJS or Create React App project, you may wrap your components like so:


_33
'use client';
_33
_33
import { EthRegisterSession, EthSendTransaction, EthSignTypedDataV4, FortProvider, FortThemeOverride, PersonalSign } from '@openfort/react';
_33
_33
export default function Providers({children}: {children: React.ReactNode}) {
_33
const coreConfiguration: CoreConfiguration = {
_33
oidcConfig: {
_33
redirectUri: "http://localhost:3000",
_33
},
_33
baseConfiguration: {
_33
publishableKey: "pk_12345",
_33
},
_33
shieldConfiguration: {
_33
shieldPublishableKey: "pk_12345",
_33
}
_33
}
_33
const themeOverride: FortThemeOverride = {
_33
colors: {
_33
"bg000": "#a0a",
_33
"bg100": "#232",
_33
"text": "#f0f",
_33
"title": "#f0f"
_33
}
_33
}
_33
return (
_33
<FortProvider
_33
onRedirectCallback={(path) => nav(path)}
_33
themeOverride={themeOverride}
_33
coreConfiguration={coreConfiguration}>
_33
{children}
_33
</FortProvider>
_33
);
_33
}

Check all the available core methods in the Core SDK reference.