Skip to content

Simple monorepo you can use as a template to start developing your dApp with Semaphore.


Notifications You must be signed in to change notification settings


Repository files navigation

Semaphore Boilerplate

Github license GitHub Workflow style Linter eslint Code style prettier

The repository is divided into two components: web app and contracts. The app allows users to create their own Semaphore identity, join a group and then send their feedback anonymously (currently on Sepolia).

🛠 Install

Use this repository as a Github template.

Clone your repository:

git clone<your-username>/<your-repo>.git

and install the dependencies:

cd <your-repo> && yarn

📜 Usage

Copy the .env.example file as .env:

cp .env.example .env

and add your environment variables or run the app in a local network.

Local server

You can start your app locally with:

yarn dev

Deploy the contract

  1. Go to the apps/contracts directory and deploy your contract:
yarn deploy --semaphore <semaphore-address> --group <group-id> --network sepolia
  1. Update the apps/web-app/.env.$(NODE_ENV).local files with your new contract address, the group id and the semaphore contract address.

  2. Copy your contract artifacts from apps/contracts/artifacts/contracts folder to apps/web-app/contract-artifacts folder.

Check the Semaphore contract addresses here.

The group id is a number!

Verify the contract

Verify your contract on Etherscan:

yarn verify <your-contract-address> <semaphore-address> <group-id> --network sepolia

Remember to set the Etherscan API Key in your .env file.

Code formatting

Run Prettier to check formatting rules:

yarn prettier

or to automatically format the code:

yarn prettier:write