SSX
  • SSX
  • ⚡SSX Quickstart
    • SSX Server Quickstart
  • 🛠️Configuring SSX
    • Configuring SSX Server
    • Configuring SSX with React
    • Configuring SSX for Serverless
  • 📊Accessing the SSX Dashboard
  • 📈Scaling SSX Server
  • Tutorials
    • Moving From SIWE to SSX
    • Using SSX with Auth.js
    • Using SSX with NextAuth
    • Build a Token-Gated Dapp
    • From Email Login to SIWE
  • appendix
    • DAO Login Workflow
    • SSX: How It Works
  • Reference
    • SSX API Reference
      • configoverrides
      • extrafields
      • isssxalchemyprovider
      • isssxankrprovider
      • isssxcloudflareprovider
      • isssxcustomprovider
      • isssxetherscanprovider
      • isssxinfuraprovider
      • isssxpocketprovider
      • issxconnected
        • afterconnecthookspromise
        • aftersignin
        • api
        • applyextensions
        • builder
        • config
        • extensions
        • isextensionenabled
        • provider
        • signin
        • signout
        • ssxserverlogin
        • ssxservernonce
      • siweconfig
      • ssx
        • constructor
        • address
        • chainid
        • connection
        • resolveens
        • rpcproviders
        • session
        • signin
        • signout
      • ssxalchemyprovider
      • ssxalchemyprovidernetworks
      • ssxankrprovider
      • ssxankrprovidernetworks
      • ssxclientconfig
        • enabledaologin
        • providers
        • resolveens
        • siweconfig
      • ssxclientproviders
        • rpc
        • server
        • web3
      • ssxclientsession
      • ssxcloudflareprovider
      • ssxconfig
        • enabledaologin
        • providers
        • resolveens
        • siweconfig
      • ssxconnected
        • constructor
        • afterconnecthookspromise
        • aftersignin
        • api
        • applyextensions
        • builder
        • config
        • extensions
        • isextensionenabled
        • provider
        • signin
        • signout
        • ssxserverlogin
        • ssxservernonce
      • ssxcustomprovider
      • ssxensconfig
        • resolve
        • resolveonserver
      • ssxensdata
        • avatarurl
        • domain
      • ssxensresolveoptions
        • avatar
        • domain
      • ssxetherscanprovider
      • ssxetherscanprovidernetworks
      • ssxextension
        • afterconnect
        • aftersignin
        • defaultactions
        • extrafields
        • namespace
        • targetedactions
      • ssxgenericprovider
      • ssxinfuraprovider
      • ssxinfuraprovidernetworks
      • ssxinfuraproviderprojectsettings
      • ssxinit
        • constructor
        • connect
        • extend
      • ssxpocketprovider
      • ssxpocketprovidernetworks
      • ssxproviders
        • rpc
        • server
        • web3
      • ssxproviderserver
      • ssxproviderweb3
        • driver
      • ssxrpcprovider
      • ssxrpcproviders
      • ssxserverhost
      • ssxserverroutes
        • login
        • logout
        • nonce
      • ssxsession
    • SSX Core API Reference
      • configoverrides
      • extrafields
      • getprovider
      • isssxalchemyprovider
      • isssxankrprovider
      • isssxcloudflareprovider
      • isssxcustomprovider
      • isssxetherscanprovider
      • isssxinfuraprovider
      • isssxpocketprovider
      • issxconnected
        • afterconnecthookspromise
        • aftersignin
        • api
        • applyextensions
        • builder
        • config
        • extensions
        • isextensionenabled
        • provider
        • signin
        • signout
        • ssxserverlogin
        • ssxservernonce
      • siweconfig
      • ssxalchemyprovider
      • ssxalchemyprovidernetworks
      • ssxankrprovider
      • ssxankrprovidernetworks
      • ssxclientconfig
        • enabledaologin
        • providers
        • resolveens
        • siweconfig
      • ssxclientproviders
        • rpc
        • server
        • web3
      • ssxclientsession
      • ssxcloudflareprovider
      • ssxcookieoptions
        • httponly
        • samesite
        • secure
        • signed
      • ssxcustomprovider
      • ssxensconfig
        • resolve
        • resolveonserver
      • ssxensdata
        • avatarurl
        • domain
      • ssxensresolveoptions
        • avatar
        • domain
      • ssxetherscanprovider
      • ssxetherscanprovidernetworks
      • ssxeventlogtypes
      • ssxexpresssessionstoreprovider
      • ssxextension
        • afterconnect
        • aftersignin
        • defaultactions
        • extrafields
        • namespace
        • targetedactions
      • ssxgenericprovider
      • ssxinfuraprovider
      • ssxinfuraprovidernetworks
      • ssxinfuraproviderprojectsettings
      • ssxlog
      • ssxlogfields
        • content
        • timestamp
        • type
        • userid
      • ssxmetricsprovider
      • ssxpocketprovider
      • ssxpocketprovidernetworks
      • ssxpost
      • ssxproviderserver
      • ssxproviderweb3
        • driver
      • ssxredissessionstoreprovider
      • ssxresolveens
      • ssxrpcprovider
      • ssxrpcproviders
      • ssxserverconfig
        • providers
        • signingkey
        • usesecurecookies
      • ssxserverhost
      • ssxserverproviders
        • metrics
        • rpc
        • sessionconfig
      • ssxserverroutes
        • login
        • logout
        • nonce
      • ssxsessionstoreconfig
        • sessionoptions
        • store
    • SSX Server API Reference
      • isssxalchemyprovider
      • isssxankrprovider
      • isssxcloudflareprovider
      • isssxcustomprovider
      • isssxetherscanprovider
      • isssxinfuraprovider
      • isssxpocketprovider
      • ssxalchemyprovider
      • ssxalchemyprovidernetworks
      • ssxankrprovider
      • ssxankrprovidernetworks
      • ssxauthenticated
      • ssxcloudflareprovider
      • ssxcookieoptions
        • httponly
        • samesite
        • secure
        • signed
      • ssxcustomprovider
      • ssxensdata
        • avatarurl
        • domain
      • ssxensresolveoptions
        • avatar
        • domain
      • ssxetherscanprovider
      • ssxetherscanprovidernetworks
      • ssxeventlogtypes
      • ssxexpressmiddleware
      • ssxexpresssessionstoreprovider
      • ssxgenericprovider
      • ssxhttpmiddleware
      • ssxinfuraprovider
      • ssxinfuraprovidernetworks
      • ssxinfuraproviderprojectsettings
      • ssxlogfields
        • content
        • timestamp
        • type
        • userid
      • ssxmetricsprovider
      • ssxpocketprovider
      • ssxpocketprovidernetworks
      • ssxredissessionstoreprovider
      • ssxrpcprovider
      • ssxrpcproviders
      • ssxserver
        • constructor
        • generatenonce
        • getexpresssessionconfig
        • log
        • login
        • logout
        • provider
        • resolveens
        • session
      • ssxserverconfig
        • providers
        • signingkey
        • usesecurecookies
      • ssxserverproviders
        • metrics
        • rpc
        • sessionconfig
      • ssxserverroutes
        • login
        • logout
        • nonce
      • ssxsessionstoreconfig
        • sessionoptions
        • store
    • SSX Serverless API Reference
      • isssxalchemyprovider
      • isssxankrprovider
      • isssxcloudflareprovider
      • isssxcustomprovider
      • isssxetherscanprovider
      • isssxinfuraprovider
      • isssxpocketprovider
      • ssxalchemyprovider
      • ssxalchemyprovidernetworks
      • ssxankrprovider
      • ssxankrprovidernetworks
      • ssxcloudflareprovider
      • ssxcustomprovider
      • ssxensdata
        • ensavatarurl
        • ensname
      • ssxensresolveoptions
        • avatar
        • domain
      • ssxetherscanprovider
      • ssxetherscanprovidernetworks
      • ssxeventlogtypes
      • ssxgenericprovider
      • ssxinfuraprovider
      • ssxinfuraprovidernetworks
      • ssxinfuraproviderprojectsettings
      • ssxlogfields
        • content
        • timestamp
        • type
        • userid
      • ssxpocketprovider
      • ssxpocketprovidernetworks
      • ssxrpcprovider
      • ssxrpcproviders
      • ssxserver
        • constructor
        • generatenonce
        • getnonce
        • log
        • me
        • provider
        • resolveens
        • session
        • signin
        • signout
      • ssxserverconfig
        • daologin
        • providers
      • ssxserverproviders
        • metrics
        • rpc
      • ssxserverroutes
        • login
        • logout
        • nonce
      • ssxsessioncrudconfig
        • create
        • delete
        • retrieve
        • update
      • ssxsessiondata
        • daologin
        • ens
        • signature
        • siwemessage
Powered by GitBook
On this page
  • Create SSX Dapp
  • Add SSX to Your Existing Dapp
  • Installation on Server
  • Express.js Middleware

Was this helpful?

Edit on GitHub

SSX Quickstart

This guide will help you bootstrap an SSX application, or help add SSX to your existing setup

PreviousSSXNextSSX Server Quickstart

Last updated 2 years ago

Was this helpful?

Requirements

  • Optional: ,

Create SSX Dapp

Starting from scratch? We have an easy way to get started with an application bootstrapped with Sign-In with Ethereum and SSX.

Try using create-ssx-dapp to quickly bootstrap a dapp using SSX:

yarn create @spruceid/ssx-dapp
# OR
npx @spruceid/create-ssx-dapp

The repository for the create-ssx-dapp application can be found here:

Add SSX to Your Existing Dapp

SSX can be added as a dependency to your project using your preferred Node.js package manager by running any of the following commands.

npm install @spruceid/ssx
# or
yarn add @spruceid/ssx
# or 
pnpm install @spruceid/ssx

Once installed SSX can be instantiated at any point in your frontend dapp. Below is an example of a function that could be called on a sign-in button. This creates an SSX instance, prompts the user to connect and Sign-In with Ethereum, and stores information about the user's session in the ssx object.

import { SSX } from "@spruceid/ssx";

const signIn = async () => {
    const ssx = new SSX({
      enableDaoLogin: true,
      resolveEns: true,
      providers: {
        web3: { driver: window.ethereum },
        server: { host: process.env.SERVER_URL },
      },
    });
    const { success, error, session } = await ssx.signIn();
    const { address, siwe, signature, ens: { domain } } = session;
};

Installation on Server

To get started with ssx-server, install ssx-server with your preferred package manager by running any of the following commands:

npm install @spruceid/ssx-server
# or
yarn add @spruceid/ssx-server
# or 
pnpm install @spruceid/ssx-server

Express.js Middleware

On your server, you'll need to create an instance of ssx-server and pass it to an Express middleware layer, as seen below. ssx-server doesn't require configuration parameters to use, however, it's recommended to have the following variables set:

import { SSXServer, SSXExpressMiddleware } from "@spruceid/ssx-server";

const ssx = new SSXServer({
  providers: {
    metrics: { service: "ssx", apiKey: process.env.SSX_API_KEY },
  },
});

// const app = express();
app.use(SSXExpressMiddleware(ssx));
/* It's possible to override the routes by passing a second parameter:
app.use(SSXExpressMiddleware(ssx, {
  nonce: '/ssx-custom-nonce',
  login: {
    path: '/ssx-custom-login',
    callback: (req: Request) => {
      console.log(`User ${req.body.address} successfully signed in`);
    }
  },
  logout: '/ssx-custom-logout',
})); */

We have a number of server examples available for those getting started with SSX. Check out for more info!

Looking for SSX support for serverless or other servers besides Express? Check out

⚡
SSX Server Quickstart
Configuring SSX on other Servers
⚡
Node.js
Yarn
Pnpm
https://github.com/spruceid/ssx/tree/main/packages/create-ssx-dappgithub.com