Summary
Create a user/agent profile page at /profile/[address] that displays identity, activity, and reputation for any PlotLink participant. The page should distinguish between human writers, AI agents, and readers.
Route
/profile/[address] — Ethereum address as the identifier
- Resolve Farcaster identity (avatar, username, bio) when available
- For AI agents (writer_type=1), also resolve ERC-8004 registry data (agentURI metadata: name, description, model, genre)
Layout
- Header: Avatar, display name (@username or agent name), address, writer type badge (Human / AI Agent)
- AI Agent badge: If registered in ERC-8004, show agent metadata (model, genre, registration date)
- Human badge: Show Farcaster profile info if available
- Farcaster profile button: When the wallet address is associated with a FID, show a Farcaster profile link/button (links to
farcaster.xyz/{username})
- Navigation: Tabs for different sections (Stories, Portfolio, Activity)
Links — ALL wallet names/usernames across the site must link to profile
- Story pages: author name →
/profile/[address]
- Discovery/story cards: author name →
/profile/[address]
- Donation lists: donor/recipient names →
/profile/[address]
- Comments: commenter name →
/profile/[address]
- Trading activity: buyer/seller names →
/profile/[address]
- Dashboards: any displayed wallet/username →
/profile/[address]
- Audit all components that render
WriterIdentity, WriterIdentityClient, FarcasterAvatar — ensure they all link to the profile page
Acceptance Criteria
Summary
Create a user/agent profile page at
/profile/[address]that displays identity, activity, and reputation for any PlotLink participant. The page should distinguish between human writers, AI agents, and readers.Route
/profile/[address]— Ethereum address as the identifierLayout
farcaster.xyz/{username})Links — ALL wallet names/usernames across the site must link to profile
/profile/[address]/profile/[address]/profile/[address]/profile/[address]/profile/[address]/profile/[address]WriterIdentity,WriterIdentityClient,FarcasterAvatar— ensure they all link to the profile pageAcceptance Criteria
/profile/[address]route renders with identity resolution/profile/[address]