Grape Access Console is a Next.js + Material UI app for operating Grape Access gates on Solana with @grapenpm/grape-access-sdk.
It includes:
- A gate/access creation flow for admins
- A member self-serve portal
- Admin lifecycle actions (load, inspect, activate/deactivate, transfer authority, close)
- Moderator/debug check tools
- Metadata URI + Irys metadata upload support
- Create gates on-chain
- Create access spaces with optional
metadataUri - Check access on-chain for members or arbitrary wallets
- Manage existing gates from authority wallets
- Share deep links for member checks:
/access?gateId=<GATE_PUBLIC_KEY>&cluster=<mainnet-beta|devnet|testnet|custom> - Auto-derive common member accounts (reputation PDA, ATA, best-effort identity/link)
Create Gate
- Template-driven setup
- Criteria and gate type configuration
- Payload review + initialize transaction
Check Access
- Moderator/operator check for any user wallet
- Manual account overrides for troubleshooting
Admin Console
- Load gates by authority (read-only supported)
- Fetch gate details
- Update metadata URI
- Apply active state
- Transfer authority
- Close check record / close gate (with confirmation)
Community Guide
- Built-in operator/member usage checklist
- Standalone user route:
/access - Alias route:
/user(redirects to/access) - Supports deep-link prefill:
/access?gateId=... - Includes network selector so member checks run against the correct RPC/cluster
Grape Access ProgramOG Reputation ProgramGrape Verification Program
- Node.js 18+
- Browser wallet extension (Phantom or Solflare)
npm installnpm run devOpen http://localhost:3000.
npm run build
npm run startOptional:
NEXT_PUBLIC_WALLET_CONNECTOR_RPC- If set, wallet connection provider uses this RPC endpoint.
- If not set, defaults to Shyft mainnet RPC.
NEXT_PUBLIC_SHYFT_MAINNET_RPC- Preferred mainnet RPC used when
Mainnet Betais selected in Connection Settings. - Optional override for the default Shyft mainnet RPC value.
- Preferred mainnet RPC used when
For Irys metadata upload API (/api/irys/upload-json):
IRYS_SOLANA_PRIVATE_KEY- Server-side Solana secret key used by Irys uploader.
- Supports base58 string, JSON byte array (
[1,2,...]), or comma-separated bytes.
IRYS_NETWORK- Optional default:
mainnetordevnet.
- Optional default:
IRYS_SOLANA_RPC_URL- Optional RPC endpoint used for Irys funding/upload wallet operations.
IRYS_NODE_URL- Optional custom Irys node URL.
IRYS_GATEWAY_BASE_URL- Optional gateway base used to construct returned URI when receipt has no
publicURL.
- Optional gateway base used to construct returned URI when receipt has no
Example .env.local:
NEXT_PUBLIC_SHYFT_MAINNET_RPC=your_shyft_mainnet_rpc_url
# Optional override:
# NEXT_PUBLIC_WALLET_CONNECTOR_RPC=your_preferred_rpc_url
# Irys uploader (server-side)
# IRYS_SOLANA_PRIVATE_KEY=your_base58_or_json_secret_key
# IRYS_NETWORK=mainnet
# IRYS_SOLANA_RPC_URL=https://api.mainnet-beta.solana.com
# IRYS_NODE_URL=https://uploader.irys.xyz
# IRYS_GATEWAY_BASE_URL=https://gateway.irys.xyz- Connect authority wallet.
- Set network/RPC from the top-right settings cog.
- Create a gate in
Create Gate. - Validate with:
Check Access(known pass + known fail wallets)/access(real member test)
- Share member deep link using
Copy Share Link.
Gate ID: Unique gate identifier public key (not the gate PDA).OG Reputation Config: Public key of your community OG Reputation config account.Grape Space: Public key of your Grape Verification Space account (space PDA), not a wallet.Authority: Wallet allowed to manage the gate.
Auto-derive can populate:
reputationAccountfor reputation criteriatokenAccountATA for token-holding gates (checkAta=true)- best-effort
identityAccountandlinkAccountfor verification criteria
Identity/link derivation may still require correct identity input format depending on community verification setup.
Admin Load Gates now includes:
- RPC probe before loading
- UI status:
Load StatusLast RPC Slot Probe
- read-only loading support (wallet not required for read actions)
If load still returns empty:
- verify network/RPC matches where gate was created
- verify authority wallet filter matches gate authority
- paste gate ID directly into
Selected Gate IDand useFetch Gate Details
- Wallet modal layering is managed in
app/globals.css. - If UI customizations are added, keep wallet modal container/wrapper above overlay.
Gate criteria may require:
reputationAccountidentityAccountlinkAccounttokenAccount
Use the /access page Auto-Derive Accounts action first.
Console now prefers access-first SDK methods (GrapeAccessClient, initializeAccess, checkAccess, etc.) and falls back to gate aliases for compatibility.
- Push repository.
- Import project in Vercel.
- Set optional env var:
NEXT_PUBLIC_WALLET_CONNECTOR_RPC
- Deploy.
npm run devnpm run buildnpm run startnpm run lint
app/page.tsx: Main UI, actions, and SDK wiringapp/providers.tsx: MUI + wallet providersapp/layout.tsx: App shell/fontsapp/globals.css: Global styles and wallet modal stylingapp/api/irys/upload-json/route.ts: Server-side Irys JSON metadata uploader
Private project codebase. Respect your organization’s distribution and usage policy.