PWA · Product Proposal

Delegate
Event App

A progressive web app for conference delegates. Browse the agenda, build a personal diary, read up on speakers, and take notes — powered by the Swoogo platform.

Swoogo API PWA — no app store needed Push notifications Works offline Multi-event
1

Everything a delegate needs, on their phone

All data lives in Swoogo — events, sessions, tracks, speakers. The app surfaces it in a clean mobile experience, adds a local diary and notes layer, and lets organisers broadcast announcements via push.

Event selector

Delegates pick their event on first launch. A returning delegate can switch between events without reinstalling.

Agenda

Full session list from Swoogo, grouped by track. Filter by time slot or track. Tap for the full session detail.

My diary

Star any session to save to a personal view. Stored locally on-device — no server round-trip, works at zero signal.

Speakers

Speaker bios and their scheduled sessions — pulled from Swoogo's speaker and session endpoints.

Session notes

Each session has a notes field. Stored in IndexedDB — persists between visits, works completely offline.

Push notifications

Organisers send announcements from an admin panel. Web Push fans out to all installed devices for that event.

2

System architecture

The PWA sits on top of a thin backend whose only jobs are auth, push subscription management, and proxying Swoogo. The diary and notes never touch the server — they live entirely in the browser.

Structural overview — layers & responsibilities
Delegate PWA Installed to home screen · runs offline · receives push Event selector Agenda + tracks My diary (local) Speakers Notes (local) Push inbox Backend / API proxy Auth · token refresh · push subscriptions · webhook receiver Node / Vercel Edge Functions direct · no server Swoogo API Events · Sessions · Tracks Speakers · Registrants IndexedDB Diary · Notes Push token Web Push (VAPID) Fan-out to all devices for selected event PWA views Your backend Swoogo Local only Push Bypasses server
3

Authentication

Delegates already registered on Swoogo. We use their registration email as the identity — no password to create or forget on the day of the event.

01

Enter email

Delegate enters the email they registered with on Swoogo

02

Validate against Swoogo

Backend calls GET /registrants — if found, delegate exists

03

Magic link sent

One-time signed token emailed. No password needed

04

JWT stored

Click the link → JWT saved in browser. Push permission requested

Swimlane — full authentication sequence
Delegate (browser) Your backend Swoogo API Enter registration email on PWA login screen Look up registrant GET /registrants?email=… Registrant found returns registrant_id + name Issue signed token send magic link email to delegate Clicks link in email PWA opens in browser Verify one-time token issue session JWT JWT stored locally localStorage Request push permission OS prompt shown to delegate Store push subscription event_id + endpoint + keys
4

Data flows

The diary and notes deliberately never leave the device — no server round-trip, no sync delay, works at zero signal. Push announcements follow the opposite path: organiser types, backend broadcasts, every device gets it within seconds.

Diary + notes — fully local (IndexedDB, no server)
DIARY Tap ★ on session in agenda view Write to IndexedDB diary:{event_id}:{session_id} My diary view reads same store, instant No server involved ✓ NOTES Type note on session detail screen Write to IndexedDB same key + note_text field Persists offline survives app close + reload
Push announcements — organiser to every device
Organiser types announcement in admin panel Your backend fetches all push subscriptions WHERE event_id = current Web Push (VAPID) fans out to all registered devices Delegate devices Android, iOS 16.4+ desktop Chrome / Edge Service worker (in PWA) receives push · shows OS notification · works even when app is closed Optional: Swoogo webhook → automatic push Swoogo fires session.updated → backend receives it → push sent automatically (e.g. room change, time update) ADMIN PANEL Simple internal page — password protected not part of the PWA
5

Five core screens

Each screen maps directly to the Swoogo API. Designed for one-handed use — your thumb should reach everything important.

9:41
Your events
Select an event to continue
Techconf 2025
The Future of Product & AI
ExCeL London · 12–13 June
Open event
Fintech Summit
Finance & Technology Leaders
Canary Wharf · 8 Sept
Open event
More events
Event select
9:41
Agenda
AllProductAIGrowth
09:00 AM
Opening Keynote: Building AI-native products
Main Stage · 60 min
KeynoteAI
10:30 AM
Workshop: Rapid prototyping with LLMs
Room B · 45 min
WorkshopProduct
Panel: Scaling teams in the AI era
Room A · 45 min
PanelGrowth
Home
Agenda
Diary
Speakers
Agenda
9:41
My diary
3 sessions saved
Day 1Day 2
09:00
Opening Keynote
Main Stage · 60 min
Notes added
11:30
Future of Design Systems
Room C · 30 min
14:00
Closing Panel: What's next?
Main Stage · 45 min
Home
Agenda
Diary
Speakers
My diary
9:41
Speakers
24 speakers · Techconf 2025
Search speakers…
SJ
Sarah Johnson
CPO, BuildAI · ex-Google
KeynoteAI
MT
Marcus Torres
CTO, Velocity Labs
PK
Priya Kapoor
Head of Product, Stripe
Home
Agenda
Diary
Speakers
Speakers
9:41
Back
Session detail
Opening Keynote: Building AI-native products that scale
09:00–10:00Main Stage
SJ
Sarah Johnson CPO, BuildAI
My notes
— Start with user value, not tech capability
— 3 phases: discover, validate, scale
— "Don't build AI features, build products"
— Feedback loops matter at scale
Saved locally · works offline
Home
Agenda
Diary
Speakers
Notes
6

Push notifications

Organisers type a message in a simple admin panel and hit send. Web Push fans it out to every installed device for that event — works even when the app is closed.

Example notifications · lock screen

TECHCONF 2025
🚨 Room change
Workshop: Rapid Prototyping has moved to Room D. Starting in 5 minutes.
now
TECHCONF 2025
Lunch is served
Head to the atrium — lunch is now open. Afternoon sessions resume at 13:30.
12m
No app store required
Web Push (VAPID) works from any browser. Delegates just need to install the PWA once and grant permission.
Works when the app is closed
The service worker receives the push event in the background and surfaces the OS notification natively.
Per-event targeting
Each push subscription is tagged with an event ID. Announcements only reach delegates for that specific event.
iOS caveat
Push works on iOS 16.4+ but only after the PWA is added to the home screen. Worth building an install prompt into first launch.
7

Technical approach

The backend is intentionally minimal — diary is local-only, so the server only handles auth, push subscriptions, and the Swoogo API proxy.

Frontend (PWA)
Next.js / SvelteKitPWA support, offline routing
Service WorkerOffline cache + push receiver
IndexedDBDiary + notes (local only)
Web Push APIVAPID permission + receive
Backend
Node / Vercel EdgeAPI proxy + auth handlers
JWT magic linksPasswordless auth via email
Supabase / PlanetScalePush subscription storage
web-push (npm)VAPID broadcast to devices
Swoogo API used
GET /eventsEvent picker screen
GET /sessionsAgenda + session detail
GET /tracksAgenda filter tabs
GET /speakersSpeaker list + bios
GET /registrantsValidate login email
Offline strategy
Stale-while-revalidateServe cached agenda instantly
Background syncRe-fetch on reconnect
IndexedDB firstNotes + diary need no network
Install promptNudge to home screen on load
8

Suggested phases

Start lean, ship fast. Each phase delivers standalone value so the app can go live before all features are complete.

Phase 1 — Core
Event selector + agenda view
Speaker list
Magic link login
PWA install + offline cache
Phase 2 — Personalisation
Diary (save sessions locally)
Notes per session
Track filtering
Speaker → session deep links
Phase 3 — Comms
Push notification infrastructure
Organiser admin panel
Swoogo webhook → auto push
Notification history in-app