Session Websites is a collection of websites and libraries for the Session Web ecosystem.
This repository is a monorepo that contains multiple apps and packages. Each app and package is located in its own directory.
apps
directory contains all the apps.packages
directory contains all the packages.
An app is a standalone application that can be run independently. A package is a library that can be used by other apps or packages.
This repository contains the following apps and packages:
@session/auth
: Auth package for handling third-party authentication using NextAuth.js. Read more.@session/contracts
: Session smart contract js library for interacting with the Session smart contracts. Read more.@session/eslint-config
:eslint
configurations. Read more. Read more.@session/feture-flags
: Feature flags library for Next.js apps. Supporting client, server, and remote flags. Read more.@session/logger
: An opinionated logging wrapper. Read more.@session/sanity-cms
: A Sanity CMS integration library. Read more.@session/sent-staking-js
: Session Token Staking js library for interacting with the Session Token staking backend. Read more.@session/testing
: A testing utility library. Read more.@session/typescript-config
:tsconfig.json
configurations. Read more.@session/ui
: Session UI component library is a collection of UI components for Next.js apps and uses Tailwind CSS, Radix UI, and shadcn-ui. Read more.@session/util-crypto
: A crypto utility library for common crypto functions. Read more.@session/util-js
: A JS utility library for common functions. Read more.@session/util-logger
: A logger utility library for initializing the pino logger with @session/logger as a wrapper. Read more.@session/wallet
: A wallet library for interacting with the Session Token. Read more.
- TypeScript for static type checking.
- ESLint for code linting.
- Prettier for code formatting.
- Tailwind CSS for styling.
- Next.js for server-side rendering.
- shadcn-ui for UI components.
- Radix UI for UI components.
- Jest for unit testing.
To build all apps and packages, run the following command:
pnpm build
- Node.js (v22 or higher)
- pnpm (v9 or higher)
- jq (see jq for mac)
We recommend using a node version manager like asdf to manage your node versions. The
.tool-versions
file in the root of the project specifies the node version to use. We also have an .nvmrc
file that
specifies the same node version to use. You can enable support
for Using Existing Tool Version Files
in asdf to use these files.
To get started, install the dependencies:
pnpm install
This will install all the dependencies for all the apps and packages.
We welcome contributions to the Session Web Ecosystem. Please read our contributing guidelines for more information on how to contribute.
You can find a README.md
file in each app and package directory that explains how to develop and test that specific
app or package.
Some tools used in this repo have anonymous developer telemetry enabled by default. This is developer telemetry that
tools creators use to report usage from developers and does not apply to any apps created using these
tools. We
have disabled all telemetry, you can ensure developer telemetry is disabled in all packages by running
pnpm check-telemetry
. We have disabled telemetry by aliasing the turbo
command in the repository root with
NEXT_TELEMETRY_DISABLED=1 DO_NOT_TRACK=1
.
NEXT_TELEMETRY_DISABLED=1
disables developer telemetry in nextjs.DO_NOT_TRACK
disables telemetry in all packages that respect the Console Do Not Track (DNT) standard
Our testing suite is a work in progress and any contributions are welcome.
We use Jest for unit testing. You can run the tests with the following command:
pnpm test
This project is tested with BrowserStack.
BrowserStack is used for cross-browser, accessibility, and regression testing.