Challenges & Solutions
- Building an intuitive map-based location picker that feels native╰ Crosshair map picker with fullscreen expand/collapse and POI tap-to-select with reverse geocoding
- Keeping destination data in sync across multiple users in real time╰ Firestore snapshot listeners for real-time sync with pull-to-refresh fallback
- Designing a voting system that's clear and easy to use at a glance╰ Going / Not Going voting with live counts and destination history with attendance stats
- Bridging SwiftUI and UIKit for the MKMapView integration╰ UIViewRepresentable wrapper around MKMapView with SwiftUI state bindings
Technical Details
Interactive MapKit picker with crosshair and POI selection, reverse geocoding for addresses, Firestore real-time listeners for group sync, and a voting system with attendance tracking. 'Take Me There' opens Apple Maps with directions.
Learnings
- MapKit integration with SwiftUI via UIViewRepresentable
- Real-time data sync patterns with Firestore snapshot listeners
- iOS location permissions and CoreLocation best practices
- Bridging UIKit components into a SwiftUI-first architecture
