SkyPorter — designing a two-sided marketplace for mobile
- Problem
- Travellers fly with unused baggage allowance; senders need cheap routes for parcels. Matching them means collecting a lot of structured detail — route, dates, weight, item type, budget — from two different user types without the form fatigue that kills marketplace signups.
- Approach
- Split each side into a five-step guided flow rather than one long form, with unfinished listings saved as drafts so nobody loses progress. Designed 28 screens covering both flows plus explore, matching, in-app chat, notifications, saved listings, and profile. Built a weight-based cost estimate so senders see an estimated total before they commit to a listing.
- Decision
- Native-feeling tab navigation and platform-appropriate sign-in (Apple on iOS, Google on both) rather than a single cross-platform compromise. Marketplace trust depends on the app feeling native on the device you already trust.
- Outcome
- Complete iOS and Android app built in Flutter, wired to a Node.js REST API with push notifications through Firebase. I wrote 53 of the 64 commits on the mobile client.
- Stack
- Flutter
- Dart
- Firebase Cloud Messaging
- Google & Apple Sign-In
- REST