Inspiration The idea for EventFlow struck me during a conversation with a friend who runs a local pop-up art market. She was frustrated Eventbrite had taken nearly 15% of her ticket revenue in fees, and she had no way to know if tickets were oversold until angry customers showed up at the door. Meanwhile, I had just read about the H0: Hack the Zero Stack hackathon a challenge to build production-ready full-stack apps using Vercel v0 and AWS databases. The premise was simple: what if you could go from a prompt to a deployed app in minutes, on infrastructure that won't break when real users show up? That's when it clicked. The problem was real, the tools were finally mature enough to solve it, and the timing was perfect.
What it does EventFlow is a fair-trade ticketing platform for independent event organizers. It does three things differently: Transparent, Low Fees Instead of the industry-standard 10–15% effective rate, EventFlow takes just 2.5% + $0.30 per ticket, with every fee shown clearly at checkout. No surprises. Atomic Inventory Powered by Amazon DynamoDB, EventFlow guarantees zero overselling, even when 1,000 people click "Buy" on the same ticket at the exact same millisecond. The database handles the concurrency, not the application code. Smart Check-in Organizers get a QR scanner that validates tickets instantly, works offline, and prevents ticket fraud with dynamic QR codes that refresh every 30 seconds. Organizers can create events, set multiple ticket tiers, generate AI-powered flyers, scan tickets at the door, and track payouts—all from one dashboard. Attendees get a seamless, mobile-first checkout experience with live inventory counts and instant digital tickets.
How we built it
The Stack Layer: Technology Frontend: Next.js 14 (App Router) + React Server Components UI Generation: Vercel v0 (AI-powered component scaffolding) Styling: Tailwind CSS + shadcn/ui Backend: Next.js API Routes (serverless) Database: Amazon DynamoDB (PAY_PER_REQUEST) Authentication: NextAuth.js (JWT) Payments: Stripe Connect AI: Vercel AI SDK + OpenAI Deployment: Vercel
The Architecture I started with v0 prompts to scaffold the core UI components the organizer dashboard, public event landing pages, and the QR scanner. Within hours, I had a working frontend that looked production-ready. The real magic happened in the DynamoDB single-table design. I structured the data so that every operation reserving a ticket, checking inventory, scanning a QR code requires exactly one database query with sub-10ms latency. The atomic counter pattern was the game-changer: This single operation is atomic at the DynamoDB level. If 1,000 users hit claim simultaneously, DynamoDB serializes the writes internally and stops exactly when stock hits zero. No locks, no external cache, no complex distributed coordination. For payments, I integrated Stripe Connect with a platform fee model funds flow directly from the attendee to the organizer's bank account, with EventFlow automatically taking its cut via the Stripe fee structure. The AI flyer generator uses the Vercel AI SDK with GPT-4 to transform an event name and theme into a marketing image prompt and social captions all generated in seconds.
Challenges we ran into
Webhook reliability. Stripe webhooks were the biggest operational risk. If a payment_intent.succeeded webhook failed, tickets would stay in "pending" status forever. I solved this by implementing idempotency keys on the reservation ID and building a reconciliation job that checks for orphaned payment intents every 5 minutes.
QR code security. Static QR codes can be screenshot and shared. I implemented dynamic QR codes that encode a time-based hash the hash changes every 30 seconds, making screenshots useless after half a minute. The scanner validates the hash against the server, not just the ticket ID.
Offline check-in. Venues often have poor Wi-Fi. I built a service worker that caches the list of valid ticket hashes for an event when the organizer loads the scanner page. If the network drops, the scanner still works it syncs the "used" statuses when the connection returns.
State synchronization with v0-generated code. Rapid frontend iteration meant the data model kept shifting. I solved this by defining strict Zod schemas for every API request and response, ensuring the frontend and backend stayed aligned even as the UI evolved.
Accomplishments that we're proud of Zero overselling. The atomic counter pattern in DynamoDB guarantees that no matter how many concurrent buyers hit the system, we never sell more tickets than capacity.
Sub-100ms checkout. Every API route-reservation, confirmation, validation completes in under 100ms, thanks to DynamoDB's single-digit millisecond latency and PAY_PER_REQUEST scaling.
Full Stripe Connect integration. Organizers onboard once, and every ticket sale automatically transfers funds to their bank account minus our transparent 2.5% + $0.30 fee.
AI-powered marketing. The AI flyer generator turns a simple event description into a professional marketing asset in seconds, lowering the barrier for independent creators.
Offline QR scanning. The service worker cache means check-in works even in venues with zero internet connectivity.
What we learned
Choose the right database for the workload. DynamoDB's atomic counters and PAY_PER_REQUEST billing were perfect for a ticketing platform with spiky traffic. I didn't need a relational database I needed a high-throughput, low-latency key-value store with strong consistency where it mattered.
Solve race conditions in the database, not the code. The biggest lesson was that trying to manage concurrency in application logic is a losing battle. By pushing atomic operations to DynamoDB, I eliminated an entire class of bugs and performance issues.
v0 accelerates iteration without sacrificing quality. I was skeptical that AI-generated UI could be production-ready. But v0 generated clean, accessible, responsive components that I could customize and extend. It didn't replace my engineering judgment it accelerated my execution.
Shippable software > perfect software. The hackathon's emphasis on "shippable software" forced me to prioritize. I cut features that weren't core to the value proposition and focused on making the checkout flow bulletproof.
What's next for EventFlow
- Multi-currency support. Expand beyond USD to support organizers and attendees globally, with automatic currency conversion and localized pricing.
- Waitlist & VIP pre-sale. Add waitlist functionality for sold-out events and private pre-sale links for VIP attendees.
- Advanced analytics. Give organizers deeper insights attendance heatmaps, referral source tracking, and predictive pricing based on historical sales data.
- Event discovery. Build a consumer-facing "Browse Events" experience with personalized recommendations, search, and social sharing.
- Mobile app. Package the check-in scanner and attendee ticket wallet as native mobile apps for iOS and Android.
- Open source. Release the core platform as open source, allowing developers to self-host EventFlow for their own communities.
Built With
- amazon-dynamodb
- aws-iam
- aws-sdk
- jsqr
- next.js-api-routes
- nextauth.js-(auth.js)
- openai-gpt-4
- qrcode.react
- react
- react-webcam
- shadcn/ui
- stripe-webhooks
- tailwind-css
- typescript
- vercel-ai-sdk
- vercel-analytics
- vercel-v0
- zod
Log in or sign up for Devpost to join the conversation.