Category
Product Design · Web3
Year
2026
Swiftly

A Web3-native event platform built on Arkiv where events, communities, and attendance records live on-chain.
Overview
The Problem
Event platforms like Luma and Eventbrite are centralized and siloed. Organizers don't own their data, attendance records disappear, and communities have no on-chain identity.
Agora flips this: every event, RSVP, and attendance record is a permanent, verifiable entity on Arkiv.
The platform covers the full lifecycle:
ATTENDEES
Event Discovery
Browse and search crypto events with filters by status, type, date, and location. Grid and list views with color-coded event cards.
ATTENDEES
On-chain RSVPs
RSVP with your wallet. QR ticket generation for check-in. Attendance verification with QR scanner. All records stored on Arkiv.
AI-POWERED
AI Luma Import
Paste a Luma URL and Claude API auto-fills event details, categorizes the event, and suggests relevant communities. 3-strategy fallback chain.
COMMUNITIES
Community Pages
Communities with event calendars, subscriber lists, event approval systems, and custom branding. Community leaders curate their own events.
ORGANIZERS
Organizer Dashboard
Create events with on-chain storage, manage status (upcoming → live → ended), scan QR codes for attendance verification, handle event submissions.
IDENTITY
Wallet-native Identity
No passwords. Your wallet is your profile. Event history and community memberships become part of your permanent on-chain identity.
Brand Identity
The identity was developed as part of a hackathon, working from the competition rules and a clear visual direction: a platform that felt native to the crypto ecosystem without looking like generic Web3.
Rather than designing every screen before building, the workflow combined Figma for identity definition and key screens, Figma MCP for automatic specs, and Claude Code for component generation — iterating in Cursor as the product took shape. The brand decisions came first and informed every UI choice from there.
The first functional version focused on getting the on-chain logic working — a raw but real proof that the architecture held up.


From there, the visual identity was defined and applied across the entire product — same logic, completely different feel.

Design Decisions
Entity Architecture as UX
The data model directly shaped the UI. With 8 entity types — Event, Community, Profile, RSVP, Waitlist, Attendance, Subscription, and Approval — each with rational expiration dates, I had to design flows that felt simple on the surface but respected complex ownership rules underneath.
The hardest example: the approval system. In Arkiv, only entity owners can modify their own data. This meant community leaders couldn't simply "approve" an event by updating its status — they don't own that entity. The solution was redesigning approvals as separate entities created by the community leader's wallet. This constraint actually produced a better, more decentralized design.
Event
Community events with metadata
Event date +30d
organizer, community, status, type, slug
Community
Groups that curate events
365d renewable
communitySlug, organizer, address
Profile
User identity and preferences
365d renewable
address, subscriber
RSVP
Event registration
Event date +30d
eventId, attendee
Waitlist
Overflow registration
Event date +30d
eventId, attendee
Attendance
Verified check-in record
10 years
eventId, attendee
Subscription
Community membership
365d renewable
communitySlug, subscriber
Wallet-Native Identity
No passwords, no profiles to fill out. Your wallet is your identity. Every write operation verifies chain ID and wallet ownership. The UI had to make this feel seamless — connecting a wallet should feel like logging in, not a crypto interaction.

AI-Powered Luma Import
To lower the barrier for organizers already using Luma, I built an AI enrichment flow: paste in a Luma URL, and Claude automatically extracts event details, categorizes the event type, and suggests relevant communities. This took handling three different data formats (JSON-LD, NEXT_DATA, OpenGraph) depending on the event — so we built a 3-strategy fallback chain.

Event Card System
Designed a flexible card component that handles events with and without cover images, multiple status states (Upcoming, Live, Ended), and category tags — all while maintaining visual hierarchy across a masonry grid.

The component system was designed in Figma first — exploring card variants, status badges, and layout states before implementation.

Hard Problems
Shared testnet signal/noise
Agora shared the testnet with other apps, so events from other projects appeared in queries. Had to identify 3 different entity schemas and filter by Agora-specific fields.
Wallet address case sensitivity
Checksummed vs lowercase addresses caused queries to silently return empty results. This took hours to debug and led to a defensive normalization layer throughout the codebase.
The approval system
Discovering Arkiv’s ownership constraint mid-build forced a complete redesign of the community governance model. The result was architecturally sounder.
The Luma import
Three different data formats, one fallback chain. Building resilient parsing for a third-party site with no API is messier than it sounds.
Demo
Stack
Next.js 15 · TypeScript · Tailwind CSS · Arkiv SDK (Kaolin testnet) · Wagmi · Viem · Anthropic Claude API · QR code generation + scanning · Vercel