[Features]
Background Geolocation
Whim utilizes a background location task, defined using Expo Task Manager, to search for connections in the foreground and background.
Profile Customization
Whim provides users a great deal of creative freedom over their profile page. Users can pick and choose from a list of interactive profile components to make their personality shine.
Messaging
Whim leverages Socket.IO to provide real-time messaging capabilities. Messages are synchronized with the server to enable cross-device persistence.
SMS Authentication
Whim utilizes Firebase Authentication to enable passwordless SMS authentication. Users can easily create or sign in to an account, without worrying about verification emails or lost passwords.
[Key Challenges]
Firebase Auth Integration
Whim uses Firebase for authentication, but otherwise uses a fully custom backend. Seamless integration was accomplished using Firebase Admin on the backend and React Native Firebase (wrapped with a custom hook) on the frontend.
Location-based Matching
Synchronizing live user location with the server, and broadcasting connection information when users are close in proximity, required careful interoperation between the client and server. By periodically broadcasting the user's location using a background task, and then evaluating geographic distance between user clusters on the server using PostGIS, location-based matching was implemented.