尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Frontend for making attestations related to the OMA3 App Registry. Built with Next.js, TypeScript, and Reown AppKit for seamless wallet integration.
Licensing Notice
This initial version (v1) is released under MIT to maximize transparency and adoption.
OMA3 may license future versions of this reference implementation under different terms (for example, the Business Source License, BSL) if forks or incompatible implementations threaten to fragment the ecosystem or undermine the sustainability of OMA3.
OMA3 standards (such as specifications and schemas) will always remain open and are governed by OMA3’s IPR Policy.
git clone https://github.com/oma3dao/rep-attestation-frontend.git
cd rep-attestation-frontend
npm install
cp .env.example .env.local
# Edit .env.local with your values (see Environment Variables below)
Deploying to Vercel? For environment variable values, domain configuration, and Vercel project setup, see the Deployment Guide (Section 5). This README covers local development workflow.
npm run dev
npm run build
Open http://localhost:3000 to view the application.
Create a .env.local file in the root directory with the following variable:
# ThirdWeb Configuration (required)
# Get from https://thirdweb.com/dashboard
NEXT_PUBLIC_THIRDWEB_CLIENT_ID=your_thirdweb_client_id
.env.local fileThe wallet integration provides:
ConnectButton with all login options in a modalsrc/
├── app/ # Next.js app router pages
│ ├── api/ # Server-side API routes
│ │ ├── controller-witness-proxy/ # CORS proxy for controller witness
│ │ └── eas/ # EAS delegated attestation + nonce endpoints
│ ├── attest/ # Attestation creation pages
│ ├── dashboard/ # User dashboard (subjects, keys, attestations)
│ ├── publish/ # Publish attestation pages (by type)
│ ├── account/ # Account management
│ └── client.ts # ThirdWeb client configuration
├── components/ # Reusable React components
│ ├── ui/ # shadcn/ui base components
│ ├── dashboard/ # Dashboard-specific components
│ ├── home/ # Landing page components
│ └── ... # Form inputs, DID inputs, auth, attestation views
├── config/ # Configuration files
│ ├── chains.ts # Chain definitions (OMAChain mainnet/testnet/devnet)
│ ├── schemas.ts # Attestation schema definitions (generated)
│ ├── publish-categories.ts # Publish workflow categories
│ ├── subsidized-schemas.ts # Schemas eligible for gas subsidy
│ └── ... # Wallets, social platforms, home workflows
├── lib/ # Utility functions and business logic
│ ├── server/ # Server-only code (EAS routes, delegate key)
│ ├── utils/caip10/ # CAIP-10 address parsing and validation
│ ├── blockchain.ts # Wallet hooks and chain management
│ ├── eas.ts # EAS attestation helpers
│ ├── omatrust-backend.ts # Backend API client
│ ├── service-urls.ts # Chain-prefixed service URL derivation
│ └── service.ts # High-level attestation service layer
└── app/globals.css # Global styles (Tailwind)
npm run dev - Start development servernpm run build - Build for productionnpm run start - Start production servernpm run lint - Run ESLintnpm run update-schemas - Update schemas from JSON filesThis project uses JSON schemas to generate TypeScript attestation forms. Schema definitions live in the rep-attestation-tools-evm-solidity repository under schemas-json/. For the full authoring guide — OMA3 extensions (x-oma3-*), best practices, and example structures — see that repo's schemas-json/README.md.
When schema definitions change in rep-attestation-tools-evm-solidity, you need to regenerate the frontend schemas:
# 1. Generate EAS objects (run from the tools repo)
cd ../rep-attestation-tools-evm-solidity
npx hardhat generate-eas-object --schema schemas-json/<schema-name>.schema.json --network omachainTestnet
# 2. Update this frontend's schemas.ts
cd ../rep-attestation-frontend
npm run update-schemas ../rep-attestation-tools-evm-solidity
# 3. Copy to app-registry-frontend (schemas.ts must stay in sync)
cp src/config/schemas.ts ../app-registry-frontend/src/config/schemas.ts
If you also deployed the schema on-chain, the deployment UIDs and block numbers are picked up automatically from the generated/*.deployed.*.json files. See the tools repo README for the full deployment workflow.
*.schema.json files from the tools repo's schemas-json/ directorygenerated/*.eas.json filesgenerated/*.deployed.*.json filesx-oma3-* extensionssrc/config/schemas.ts with field definitions, deployed UIDs, and metadataThe script processes x-oma3-* extension fields from the JSON schemas (e.g., x-oma3-skip-reason, x-oma3-subtype, x-oma3-default, x-oma3-render). For the full reference on all supported extensions, see schemas-json/README.md in the tools repository.
Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
The application targets:
Network configuration is in src/config/chains.ts. The active chain is determined by the NEXT_PUBLIC_ACTIVE_CHAIN environment variable, not the user's wallet.
Currently integrated:
For delegate wallet addresses and signing configuration details, see the Deployment Guide (Sections 3 and 9).
For local dev, set a raw private key in .env.local:
# Private key for EAS delegate wallet (local dev only)
EAS_DELEGATE_PRIVATE_KEY=0x...
# Optional: max gas per transaction (default: 300000)
MAX_GAS_PER_TX=300000
To generate a throwaway dev key:
node -e "console.log('0x' + require('crypto').randomBytes(32).toString('hex'))" > ~/.ssh/eas-delegate-key
chmod 600 ~/.ssh/eas-delegate-key
NEXT_PUBLIC_THIRDWEB_CLIENT_ID in your .env.local file