-This is an official starter Turborepo.
+SchemaCraft is an Attestation Developer Tool for Ethereum Attestation Service. The project consists of two parts:
-## Using this example
+1. **Attest Chain** - A L3 Chain tailored specifically for attestations. It is built using OP Stack with EigenDA, deployed using Conduit. It uses Base Sepolia as a L2 Chain.
+2. **EAS UIKit** - A developer tool in form of a npm component library which has various components like Schema Builder, Schema Viewer, Attestation Requester, Attestation Viewer, etc.
-Run the following command:
+## Architecture 🏗️
-```sh
-npx create-turbo@latest
+
+
+## How it works 🛠️
+
+### Attest Chain
+
+The Custom Attest Chain is deployed using Conduit and is built on OP Stack with EigenDA.
+
+The main modification are in sequencer nodes, where the batches of transactions are posted to DA and state roots of executed transactions are sent to the DA.
+
+When transaction is written to Eigen DA the disperser return as unique blob key which can be used to later retrieve the data
+
+We also have deployed EAS Contract on Attest chain on the following addresses
+
+```bash
+EAS=0xe86b1899376c77e1a109eA2124E462EF58E56897
+SchemaRegistry=0x8f966BC6Ad2D241a01C1f7634C47c7419Ce96830
+Indexer=0xA787c2162F60559eC602C33b5720e51ec19bfF5F
+EIP712Proxy=0x2Df018Bf17f31e81a0677C77Fa90A23f9FceCF59
```
-## What's inside?
+Also the custom chain comes with an open source Blockscout explorer.
-This Turborepo includes the following packages/apps:
+Block Explorer: https://explorer-attest-chain-52s82yu298.t.conduit.xyz
-### Apps and Packages
+---
-- `docs`: a [Next.js](https://nextjs.org/) app
-- `web`: another [Next.js](https://nextjs.org/) app
-- `@repo/ui`: a stub React component library shared by both `web` and `docs` applications
-- `@repo/eslint-config`: `eslint` configurations (includes `eslint-config-next` and `eslint-config-prettier`)
-- `@repo/typescript-config`: `tsconfig.json`s used throughout the monorepo
+### Virtual Testnet
-Each package/app is 100% [TypeScript](https://www.typescriptlang.org/).
+The Virtual Testnet is deployed using Tenderly and is used for testing the Attest Chain. It is based on Base Sepolia and EAS Contracts are deployed on the Virtual Testnet.
-### Utilities
+Block Explorer: https://virtual.base.rpc.tenderly.co/1f98648a-38db-493e-9560-f23a8254c17d
-This Turborepo has some additional tools already setup for you:
+---
-- [TypeScript](https://www.typescriptlang.org/) for static type checking
-- [ESLint](https://eslint.org/) for code linting
-- [Prettier](https://prettier.io) for code formatting
+### EAS UIKit
-### Build
+EAS UIKit is a collection of components and utilities used to build applications on top of Ethereum Attestation Service. Developers can quickly build applications that interact with the EAS smart contracts by using the components provided by EAS UIKit.
-To build all apps and packages, run the following command:
+https://www.npmjs.com/package/eas-uikit
+To get started with EAS UIKit, you can install the package using the following command/s:
+
+```bash
+npm install eas-uikit
+# or
+yarn add eas-uikit
+# or
+pnpm add eas-uikit
```
-cd my-turborepo
-pnpm build
+
+```tsx
+ console.log('Schema created with uid:', uid)}
+/>
```
-### Develop
+```tsx
+
+```
-To develop all apps and packages, run the following command:
+Full Documentation can be found [here](./packages/eas-uikit/README.md)
-```
-cd my-turborepo
-pnpm dev
-```
+---
+
+### World ID
+
+The application uses World ID to gate access to verified users with `Device` type or `Orb` level verification.
+
+The verification is done using Incognito Action and verified using Cloud Verification. This returns `merkle_root`, `nullifier_hash` and `proof`
+
+The Proofs along with nullifier hash are stored in session cookies with checks ensuring that proofs are valid.
-### Remote Caching
+## Demo Video 🎥
-Turborepo can use a technique known as [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching) to share cache artifacts across machines, enabling you to share build caches with your team and CI/CD pipelines.
+https://stream.mux.com/dEIk6ycEm02Didw7eMW01wKH02R7rhj37mqRg01RELiStL00/high.mp4
-By default, Turborepo will cache locally. To enable Remote Caching you will need an account with Vercel. If you don't have an account you can [create one](https://vercel.com/signup), then enter the following commands:
+## Screenshots 📸
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+## 🧑🏼💻 Tech Stack
+
+- **Frontend**: Next.js, Tailwind CSS, shadcn
+- **Integration**: `@worldcoin/idkit`, `wagmi`, Conduit, Tenderly, `eas-sdk`
+- **Contracts**: `Ethereum Attestation Service`
+
+## Get Started 🚀
+
+The following repository is a turborepo and divided into the following:
+
+- **apps/www** - The web application built using NextJS.
+
+First install the dependencies by running the following:
```
-cd my-turborepo
-npx turbo login
+
+pnpm install
+
```
-This will authenticate the Turborepo CLI with your [Vercel account](https://vercel.com/docs/concepts/personal-accounts/overview).
+Then fill in the Environment variables in `apps/www/.env.local`
-Next, you can link your Turborepo to your Remote Cache by running the following command from the root of your Turborepo:
+```bash
+NEXT_PUBLIC_WALLETCONNECT_ID="your_wallet_connect_id"
+NEXT_PUBLIC_ATTEST_CHAIN_TESTNET_RPC_URL="tenderly_virtual_base_rpc"
+NEXT_PUBLIC_ATTEST_CHAIN_TESTNET_BLOCK_EXPLORER_URL="tenderly_virtual_base_block_explorer"
-```
-npx turbo link
+NEXT_PUBLIC_ATTEST_CHAIN_RPC_URL="https://rpc-attest-chain-52s82yu298.t.conduit.xyz"
+NEXT_PUBLIC_ATTEST_CHAIN_WSS="wss://rpc-attest-chain-52s82yu298.t.conduit.xyz"
+NEXT_PUBLIC_ATTEST_CHAIN_BLOCK_EXPLORER_URL="https://explorer-attest-chain-52s82yu298.t.conduit.xyz"
+
+NEXT_PUBLIC_WORLDCOIN_CLIENT_ID="your_worldcoin_client_id"
+
+IRON_SESSION_PASSWORD="your_secured_session_password"
```
-## Useful Links
+Then run the following command to start the application:
-Learn more about the power of Turborepo:
+```bash
+pnpm dev
+```
-- [Tasks](https://turbo.build/repo/docs/core-concepts/monorepos/running-tasks)
-- [Caching](https://turbo.build/repo/docs/core-concepts/caching)
-- [Remote Caching](https://turbo.build/repo/docs/core-concepts/remote-caching)
-- [Filtering](https://turbo.build/repo/docs/core-concepts/monorepos/filtering)
-- [Configuration Options](https://turbo.build/repo/docs/reference/configuration)
-- [CLI Usage](https://turbo.build/repo/docs/reference/command-line-reference)
+---
diff --git a/assets/1.png b/assets/1.png
new file mode 100644
index 0000000..00cd700
Binary files /dev/null and b/assets/1.png differ
diff --git a/assets/2.png b/assets/2.png
new file mode 100644
index 0000000..c8e1916
Binary files /dev/null and b/assets/2.png differ
diff --git a/assets/3.png b/assets/3.png
new file mode 100644
index 0000000..ebfbde2
Binary files /dev/null and b/assets/3.png differ
diff --git a/assets/4.png b/assets/4.png
new file mode 100644
index 0000000..ff3a55f
Binary files /dev/null and b/assets/4.png differ
diff --git a/assets/5.png b/assets/5.png
new file mode 100644
index 0000000..883dc08
Binary files /dev/null and b/assets/5.png differ
diff --git a/assets/6.png b/assets/6.png
new file mode 100644
index 0000000..e43008f
Binary files /dev/null and b/assets/6.png differ
diff --git a/assets/cover.png b/assets/cover.png
new file mode 100644
index 0000000..1920933
Binary files /dev/null and b/assets/cover.png differ
diff --git a/assets/logo.svg b/assets/logo.svg
new file mode 100644
index 0000000..47ae43d
--- /dev/null
+++ b/assets/logo.svg
@@ -0,0 +1,7 @@
+
diff --git a/typedoc.json b/typedoc.json
index 407f049..5563d66 100644
--- a/typedoc.json
+++ b/typedoc.json
@@ -4,7 +4,7 @@
"entryPointStrategy": "packages",
"name": "EAS UIKit Reference",
"out": "docs",
- "readme": "./README.md",
+ "readme": "./packages/eas-uikit/README.md",
"customCss": "assets/docs.css",
"plugin": ["typedoc-material-theme", "typedoc-plugin-extras"],
"themeColor": "#c3c8e4",
@@ -13,6 +13,12 @@
"includeGroups": true,
"includeFolders": false
},
+ "visibilityFilters": {
+ "protected": false,
+ "private": false,
+ "inherited": true,
+ "external": true
+ },
"categorizeByGroup": true,
"hideGenerator": false
}