Next.jsReactStarter

boilerplate — Next.js Starter Template

By semaphore-protocol

The official dApp starter template provided by Semaphore, structured as a monorepo with a Next.js frontend and contracts, demonstrating the complete flow of anonymously creating an identity, joining a group, and sending feedback.

Explore the design

Compare the page layouts and mobile experience. Open any screenshot for a closer look.

2 previews
Desktop homepage1 / 2
Desktop captureTop of page

Actual screenshot captured by the server browser.

All pages & views 2

Screenshots show visual appearance; interactive behavior may differ.

Recorded 2026-10-02View source

What stands out

A quick read of the recorded project description.

01

Monorepo structure, divided into two components: apps/web-app and apps/contracts

02

Demonstrates the flow of creating a Semaphore identity, joining a group, and anonymously sending feedback

03

Provides GitHub template usage, allowing you to generate and clone your own repository directly

04

Includes command instructions for contract deployment and Etherscan verification

05

Uses Prettier for code format checking and automatic formatting

06

Uses the MIT license, allowing free use, modification, commercial use, and distribution

Template Details

This repository is a starter template for the Semaphore protocol, used to quickly set up a dApp based on Semaphore. The repository is divided into two components: apps/web-app (web application) and apps/contracts (contracts). According to the README, the application allows users to create their own Semaphore identity, join a group, and then anonymously send feedback; it is currently deployed on the Sepolia testnet.

In terms of usage, the repository is designed as a GitHub template, allowing you to generate your own repository and clone it, then install dependencies with yarn. You need to copy .env.example to .env and fill in the environment variables, or run the application on a local network. Local startup uses yarn dev.

For the contracts, you need to enter the apps/contracts directory to deploy; the deployment command requires passing in the Semaphore contract address and network parameters, after which you update the new contract address and group id in apps/web-app/.env.production, and copy the contract artifacts under apps/contracts/artifacts/contracts to apps/web-app/contract-artifacts. Contracts can be verified on Etherscan via yarn verify; before verification, you need to set the Etherscan API Key in .env. Code format checking and automatic formatting use yarn prettier and yarn prettier:write respectively.

The template uses the MIT license, allowing free use, modification, commercial use, and distribution, provided the copyright notice and license notice are retained when distributing. Third-party assets such as demo images, fonts, and icons, as well as external services such as domains and hosting, need to be checked separately for their respective licenses and fees.

Next.jsBoilerplate

Is it right for your project?

Use Cases

  • Building anonymous feedback dApps based on the Semaphore protocol
  • Learning how Semaphore identities, groups, and zero-knowledge proofs work together across frontend and contracts
  • Deploying and verifying related contracts on the Sepolia testnet
  • Quickly initializing your own project structure using the monorepo template

Suitable For

  • dApp developers who need a Semaphore starter template
  • Developers who want to understand how Semaphore frontend and contracts work together
  • Teams that need to organize a Next.js application and contract code as a monorepo

Getting started & customization

Use these recorded setup notes alongside the repository instructions for your chosen version.

  1. 1

    After generating the repository as a GitHub template and cloning it, run yarn in the project root to install dependencies

  2. 2

    Copy .env.example to .env and fill in the environment variables, or run on a local network instead

  3. 3

    Local startup uses yarn dev; contract deployment requires running yarn deploy in the apps/contracts directory and passing in the Semaphore address and network

  4. 4

    After deployment, update the contract address and group id in apps/web-app/.env.production, and copy the contract artifacts to apps/web-app/contract-artifacts

  5. 5

    Before Etherscan verification, set the Etherscan API Key in .env

Read repository instructions

License & source material

Usage conditions & limitations

Free to use · keep license notice

This entry covers the free version under the MIT license in the public repository; the free scope is the code of this version and does not mean that external services or third-party assets are free.

Must comply with when using

  • Allows free use, modification, commercial use, and distribution of this version of the code.
  • When distributing copies or substantial portions of the code, retain the original author's copyright notice and the complete MIT license notice.
  • The code is provided as is; warranties and limitations of liability are governed by the original license and applicable law.

Additional costs & items to verify

  • Before use, copy .env.example to .env and fill in the environment variables, or run the application on a local network.
  • Deploying contracts requires running yarn deploy in the apps/contracts directory and passing in the Semaphore contract address and network parameters (such as sepolia).
  • Before verifying contracts on Etherscan, you must set the Etherscan API Key in the .env file.
  • After deployment, update the new contract address and group id in the apps/web-app/.env.production file.
  • Copy the contract artifacts under apps/contracts/artifacts/contracts to the apps/web-app/contract-artifacts directory.
  • The example application is currently deployed on the Sepolia testnet, not a mainnet production environment.
  • Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses and cannot be judged solely by the code's MIT license.
  • External services such as domains, hosting, databases, payments, or AI may incur additional fees.
View Original Text Basis

Permission is hereby granted, free of charge

Original License Text

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

Original README

yarn deploy --semaphore <semaphore-address> --network sepolia

Original README

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

Original README

Update the `apps/web-app/.env.production` file with your new contract address and the group id.

Original README

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

Original README

send their feedback anonymously (currently on Sepolia)

Original README
https://github.com/semaphore-protocol/boilerplate/blob/main/LICENSEhttps://github.com/semaphore-protocol/boilerplate/blob/main/README.md

Compiled by DeepSeek based on repository license and README ·2026-10-02. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.

Project checks & description sources

Template Information

Source platforms
GitHub
Documentation and maintenance reference score
More documented · 87 / 100
Technologies
Next.js · React
Website type
Starter
How this score is calculated

Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.

What to verify for this project

Repository update recorded
2025-12-13
Screenshot last checked
2026-10-02

A demo link is listed. Check it with your own content and viewport sizes; its presence does not confirm that forms, authentication or payments work.

The catalog identifies Next.js as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.

Use a selection guide →

How this description was prepared

AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.

Automatically checked against source and license rules; no manual editorial review.

Inspect the recorded source material

SHA-256: ffe036e89ca407cce536ca17efc520657865eb9caad893dd03191dfadfdd7c0d

2026-10-02T16:42:21.258Z

Source file / repository
<h1 align="center">
    Semaphore Boilerplate
</h1>

<p align="center">
    <a href="https://github.com/semaphore-protocol" target="_blank">
        <img src="https://img.shields.io/badge/project-Semaphore-blue.svg?style=flat-square">
    </a>
    <a href="https://github.com/semaphore-protocol/boilerplate/blob/main/LICENSE">
        <img alt="Github license" src="https://img.shields.io/github/license/semaphore-protocol/boilerplate.svg?style=flat-square">
    </a>
    <a href="https://github.com/semaphore-protocol/boilerplate/actions?query=workflow%3Astyle">
        <img alt="GitHub Workflow style" src="https://img.shields.io/github/actions/workflow/status/semaphore-protocol/boilerplate/style.yml?branch=main&label=style&style=flat-square&logo=github">
    </a>
    <a href="https://eslint.org/">
        <img alt="Linter eslint" src="https://img.shields.io/badge/linter-eslint-8080f2?style=flat-square&logo=eslint">
    </a>
    <a href="https://prettier.io/">
        <img alt="Code style prettier" src="https://img.shields.io/badge/code%20style-prettier-f8bc45?style=flat-square&logo=prettier">
    </a>
    <a href="https://www.gitpoap.io/gh/semaphore-protocol/boilerplate" target="_blank">
        <img src="https://public-api.gitpoap.io/v1/repo/semaphore-protocol/boilerplate/badge">
    </a>
</p>

| The repository is divided into two components: [web app](./apps/web-app) and [contracts](./apps/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](https://github.com/semaphore-protocol/boilerplate/generate).

Clone your repository:

```bash
git clone https://github.com/<your-username>/<your-repo>.git
```

and install the dependencies:

```bash
cd <your-repo> && yarn
```

## 📜 Usage

Copy the `.env.example` file as `.env`:

```bash
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:

```bash
yarn dev
```

### Deploy the contract

1. Go to the `apps/contracts` directory and deploy your contract:

```bash
yarn deploy --semaphore <semaphore-address> --network sepolia
```

2. Update the `apps/web-app/.env.production` file with your new contract address and the group id.

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

> [!NOTE]
> Check the Semaphore contract addresses [here](https://docs.semaphore.pse.dev/deployed-contracts).

### Verify the contract

Verify your contract on Etherscan:

```bash
yarn verify <your-contract-address> <semaphore-address> --network sepolia
```

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

### Code formatting

Run [Prettier](https://prettier.io/) to check formatting rules:

```bash
yarn prettier
```

or to automatically format the code:

```bash
yarn prettier:write
```
Report a correction

Explore similar templates

Compare previews and descriptions within the same stack and category.