Developing a Conference Management Mobile Application
A conference app has a short lifespan—one week to several days of active use. But during that period, load is peak: hundreds of users simultaneously viewing schedules, finding rooms, scanning badges. Real-time reliability is more important than polished UI.
Schedule and Personalization
Conference schedule is a time/room grid. iOS: UICollectionView with custom UICollectionViewLayout where each talk is a cell with position (startTime) and size (duration). Compositional Layout doesn't fit—need full custom positioning. Custom layout with prepare() pre-calculates UICollectionViewLayoutAttributes for each talk.
Android: RecyclerView with standard LinearLayoutManager and custom ItemDecoration won't achieve this. Either custom RecyclerView.LayoutManager or Compose Canvas to draw schedule grid directly.
Personal schedule: user bookmarks talks. Store locally in UserDefaults / SharedPreferences plus sync with account. Schedule conflict (two talks same time)—explicit warning when adding.
Offline mode is mandatory. Conference Wi-Fi often overloaded. Cache full schedule on first launch, update with network. URLCache for HTTP with Cache-Control: max-age=300 server-side. Speakers may be late, rooms change—updates via push with content-available: 1 (silent push) to invalidate cache.
Registration and Badges
QR code for participant registration: encrypted ticketId in QR. Volunteers at entrance scan via AVMetadataMachineReadableCodeObject (iOS) or ML Kit BarcodeScanning (Android). Real-time validation < 500ms even with 50 simultaneous scans.
Cache validated tickets on scanner device: if API unavailable—check local copy. Risk: someone reuses old ticket. Solution—offline cache read-only, write to server when connection restored.
Participant QR code: generate in app via CoreImage.CIQRCodeGenerator (iOS) or zxing-android-embedded (Android) from ticketId. High error correction level (CIQRCodeInputCorrectionLevelH)—QR reads even with screen scratch.
Push and Live Updates
Schedule changes (talk moved, room changed, cancelled)—real-time push. FCM with priority: high for guaranteed delivery. Client shows banner over current screen via UIView.animate or Compose snackbar.
15-minute reminder before bookmarks: local notifications via UNUserNotificationCenter. Not Firebase—local notifications work offline. On schedule change—reschedule notification: UNUserNotificationCenter.removePendingNotificationRequests(withIdentifiers:) + new UNNotificationRequest.
Networking and Interaction
Participant list filtered by interests, company, role (speaker, attendee, sponsor). Contact exchange: profile QR code or NFC via CoreNFC.NFCNDEFReaderSession (iOS) / NfcAdapter.getDefaultAdapter() (Android). NFC for vCard exchange—instant, no camera.
Speaker Q&A chat: live WebSocket channel per talk, questions with upvote. Moderator selects questions to voice. Server: Redis Pub/Sub for broadcast questions and votes to all connected clients.
Conference Map
Building schematic: SVG or raster image with interactive room points overlay. PDFKit (iOS) for vector plans. Room navigation: arrow with floor, not full route graph (overkill for one building). Indoor Positioning via iBeacon (CLBeaconRegion) approaching specific room—optional, needs beacon infrastructure.
Process and Timeline
Schedule (grid + bookmarks + offline) + push + badges (QR scanning): 6–8 weeks. Networking + Q&A chat + map + live updates: 2–3 months. Pricing calculated after requirements analysis.







