A no-code decentralized application for creating and managing onchain attestations using the Ethereum Attestation Service (EAS) on Base network.
- Schema Builder: Create custom attestation schemas without code
- Attestation Generator: Generate attestations for others using existing schemas
- User Dashboard: View attestations received and given
- Mobile-First Design: Optimized for mobile and desktop experiences
- Framework: Next.js 14+ with App Router
- Language: TypeScript
- Styling: Tailwind CSS
- Web3: Wagmi, Viem, Coinbase OnchainKit
- Blockchain: Base Network (Layer 2)
- Attestations: Ethereum Attestation Service (EAS)
- Node.js 18+ and npm
- A Web3 wallet (Coinbase Wallet, MetaMask, or WalletConnect compatible)
- Clone the repository
- Install dependencies:
npm install- Copy the environment variables:
cp .env.local.example .env.local- Update
.env.localwith your configuration (RPC URLs, API keys, etc.)
Run the development server:
npm run devOpen http://localhost:3000 in your browser.
Build for production:
npm run build# Run ESLint
npm run lint
# Format code with Prettier
npm run format
# Check formatting
npm run format:checkSee .env.local.example for required environment variables:
NEXT_PUBLIC_CHAIN_ID: Base network chain ID (8453 for mainnet)NEXT_PUBLIC_RPC_URL: RPC endpoint for Base networkNEXT_PUBLIC_EAS_CONTRACT_ADDRESS: EAS contract address on BaseNEXT_PUBLIC_SCHEMA_REGISTRY_ADDRESS: Schema Registry contract addressNEXT_PUBLIC_SUBGRAPH_URL: The Graph subgraph URL for indexing
├── app/ # Next.js App Router pages
├── components/ # React components
├── lib/ # Utility functions and configurations
├── hooks/ # Custom React hooks
├── contexts/ # React contexts
├── public/ # Static assets
├── subgraph/ # The Graph subgraph configuration
Run tests:
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with UI
npm run test:uiThis project is tailored for deployment on modern VPS solutions using Docker.
For detailed instructions on how to deploy this application on your own VPS using Dokploy, please refer to the Dokploy Deployment Guide.
📖 Complete User Guide - Comprehensive guide covering all features in detail
Schemas define the structure of attestations. Follow these steps to create a custom schema:
-
Connect Your Wallet
- Click "Connect Wallet" in the top right
- Select your preferred wallet (Coinbase Wallet, MetaMask, or WalletConnect)
- Approve the connection request
- Ensure you're connected to Base network (the app will prompt you to switch if needed)
-
Navigate to Schema Builder
- Click "Create Schema" from the home page or navigation menu
- You'll see the Schema Builder interface
-
Define Your Schema Fields
- Click "Add Field" to add a new field to your schema
- For each field, specify:
- Field Name: A descriptive name (e.g., "skill", "score", "verified")
- Data Type: Choose from string, uint256, bool, address, bytes32, or bytes
- Required: Toggle whether this field must be filled in attestations
- Add as many fields as needed for your use case
- Remove fields by clicking the trash icon
-
Preview Your Schema
- The schema preview shows the generated schema string
- Example:
string skill, uint256 score, bool verified
-
Submit and Register
- Click "Create Schema" button
- Review the transaction details in your wallet
- Approve the transaction (you'll pay a small gas fee)
- Wait for confirmation (usually 2-5 seconds on Base)
-
Save Your Schema UID
- Once confirmed, you'll receive a unique Schema UID
- Copy this UID - you'll need it to create attestations
- Optionally share your schema as a Farcaster Frame
Example Use Cases:
- Skill Endorsements:
string skill, uint256 proficiency, string comment - Event Attendance:
string eventName, uint256 timestamp, bool attended - Reputation Score:
uint256 score, string category, string evidence
Attestations are onchain statements made using a schema. Here's how to create one:
-
Navigate to Attestation Generator
- Click "Create Attestation" from the home page
- Or click "Use This Schema" from a schema detail page
-
Select a Schema
- Option A: Enter a Schema UID directly if you know it
- Option B: Click "Browse Schemas" to see available schemas
- The schema fields will load and display
-
Enter Recipient Address
- Input the Ethereum address of the person receiving the attestation
- The app will automatically resolve ENS names or Farcaster usernames
- Example:
0x1234...orvitalik.eth
-
Fill in Attestation Data
- Complete all required fields (marked with *)
- Each field will have an appropriate input based on its type:
- String: Text input
- Number (uint256): Numeric input
- Boolean: Checkbox or toggle
- Address: Ethereum address input with validation
-
Review and Submit
- Double-check all information
- Click "Create Attestation"
- Approve the transaction in your wallet
- Wait for confirmation
-
Share Your Attestation
- Copy the Attestation UID for reference
- Click "Share to Farcaster" to post as a Frame
- View the attestation on a block explorer via the provided link
Tips:
- Attestations are permanent and public on the blockchain
- Make sure the recipient address is correct before submitting
- You can view all your created attestations in the Dashboard
Your dashboard shows all attestations related to your address:
-
Access Your Dashboard
- Connect your wallet
- Click "Dashboard" in the navigation
-
View Attestations
- Attestations Received: Attestations others have made about you
- Attestations Given: Attestations you've created for others
- Switch between tabs to see different views
-
Filter and Sort
- Use the filter dropdown to narrow by schema type
- Sort by date (newest first or oldest first)
- Search by schema name or attestation content
-
Explore Attestation Details
- Each card shows:
- Schema name and fields
- Attester and recipient (with resolved names)
- Timestamp
- Link to view on block explorer
- Click on addresses to see their profiles
- Click the block explorer link to verify onchain
- Each card shows:
Wallet Connection Issues
- Ensure you have a Web3 wallet installed
- Try refreshing the page and reconnecting
- Check that you're on the Base network
- Clear browser cache if connection persists
Transaction Failures
- Insufficient Funds: You need ETH on Base for gas fees. Use the Base bridge or a faucet for testnet
- User Rejected: You cancelled the transaction. Try again when ready
- Network Error: Check your internet connection and RPC endpoint
- Transaction Timeout: Base network may be congested. Wait and retry
Schema Not Loading
- Verify the Schema UID is correct (64-character hex string)
- Check that the schema exists on Base network
- Try refreshing the page
- The schema may still be indexing (wait 30 seconds)
Name Resolution Not Working
- ENS names must be registered and properly configured
- Farcaster names require an active Farcaster account
- If resolution fails, the truncated address will display
- This doesn't affect functionality, only display
Need Help?
- Check the Glossary for term definitions
- Review technical documentation in the
/docsfolder - Visit EAS Documentation for protocol details
- Check Base Network Status for network issues
- Web3 Infrastructure - Wallet connection and network setup
- Transaction Feedback System - Transaction state management
- Dashboard Feature - Dashboard implementation details
- Accessibility Guide - Accessibility features and testing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting
- Submit a pull request
MIT