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:
@openfort/ecosystem-js/client
: The Client SDK that you will use to create your wallet SDK.@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 tobundler
. - 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.
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#
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.
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.
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_33import { EthRegisterSession, EthSendTransaction, EthSignTypedDataV4, FortProvider, FortThemeOverride, PersonalSign } from '@openfort/react';_33_33export 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}_33const themeOverride: FortThemeOverride = {_33 colors: {_33 "bg000": "#a0a",_33 "bg100": "#232",_33 "text": "#f0f",_33 "title": "#f0f"_33 }_33}_33return (_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.