Attendee Engagement App
Role: Full Stack Developer, built end to end
Project Type: Attendee networking app for in-person summits
Stack: React 19, Vite, TypeScript, TanStack Router, Tailwind CSS, Convex, WebRTC, Web Push, Three.js, Vitest, Playwright
Project Overview
People go to a summit to meet the right people. This app helps them do that. Attendees plan their day, find people worth meeting, book meetings, chat and call.
One app serves many events. Each event has its own branding, agenda and guest list. Organizers run it all from an admin area.
I built the whole app: the attendee side, the organizer admin, the backend and the test tooling. Its agenda syncs from AgendaForge, which I also built.
Key Features
Agenda and schedule
- Filters by day, track, room and format
- Roundtable seat booking with a waitlist
- A personal schedule with clash warnings and private time blocks
- Calendar subscription links for Google Calendar and other apps
People and meetings
- Onboarding with privacy settings for every profile field
- Search and recommendations, each with a short "why you two" reason
- Meeting requests based on both people's free time and preferred hours
- Meeting spots shown on the venue floor plan
Messaging
- Chat with replies, reactions, read receipts and typing indicators
- Photos and files shared through expiring links
- One-to-one voice calls from a chat
- Web push notifications
Floor plan
- 2D and 3D venue floor plans
- Zones with names and colours, and each meeting's spot highlighted
Organizer admin
- Attendee import from ticketing exports and live ticketing sync
- Agenda, speakers, sponsors and meeting rules
- Per-event branding, including combined branding for jointly run events
- Matching tools and meetings booked on someone's behalf
- A one-click stress test with simulated attendees
Tech Stack
Frontend
- React 19, Vite and TanStack Router: A fast, typed single-page app
- Tailwind CSS: Light and dark themes and per-event branding
- Three.js: The 3D floor plan
Backend
- Convex: Real-time data, server functions, scheduled jobs and auth
- Email codes and Google sign-in: Only people on the guest list get in
Real-time
- WebRTC: Voice calls in the browser
- Web Push: Notifications when the app is closed
Testing
- Vitest: Backend and logic tests
- Playwright: End-to-end tests with sample tickets and mocked email
Key Technical Challenges
1. Privacy first networking
- Problem: People want to be found, but not by everyone, and not with every detail.
- Solution: Each profile field has its own visibility. Search and recommendations only use fields the viewer is allowed to see. Owners can preview their profile as others see it. Profile views are rate-limited to stop scraping.
- Result: Attendees share what they choose, and the app never leaks the rest.
2. Fair roundtable seats
- Problem: Popular roundtables fill in seconds. Two people must never get the same last seat.
- Solution: Booking runs in a single transaction. A first-come waitlist promotes the next person when someone cancels. A capacity change rebalances seats.
- Result: Seats are never overbooked, and the queue is fair.
3. Calendar links that stay safe
- Problem: A calendar subscription link is a secret. If it leaks, someone can read your schedule.
- Solution: Only a hash of each link is stored. Links can be revoked. Each fetch checks that the person still holds a ticket.
- Result: Schedules sync to any calendar app without a weak spot.
4. Will it hold on event day?
- Problem: Everyone opens the app at the same moment, right after the keynote.
- Solution: I built load test tooling that fills a hidden test event with up to a thousand simulated attendees. Organizers can run it from the admin in one click.
- Result: It found a bug where busy sessions made saves fail, which I then fixed.
5. Calls that connect
- Problem: Browser calls fail on some networks, like strict venue Wi-Fi.
- Solution: Calls connect directly when they can. A relay server can be switched on later with no code change, and it falls back safely.
- Result: Calls run on free infrastructure today, with a clear upgrade path for strict networks.
Key Learnings
- Privacy is a feature, so design it in from the start
- Anything with limited capacity needs a transaction
- Load test before the event, not during it
- A security review at the end of each phase catches what code review misses
Conclusion
This app turns a summit's guest list into real meetings. I built all of it, phase by phase, from sign-in to calls.
It taught me how much trust matters in a social product. People only share when they feel safe.
Contents
Contact me
Send me an email or message me on LinkedIn if you're looking for someone who builds without the fluff.