ParkingKarma
Inspiration
Anyone who's driven through Melbourne CBD knows the feeling. Circling blocks, watching the clock, burning fuel, because someone pulled out of a spot 30 seconds before you got there. Parking isn't scarce. Information about parking is scarce. We looked at sensor grids, static maps, and paid apps, and none of them capture the one thing that actually matters: someone is about to leave, right now, near you. That's a human signal, not a sensor signal. What if leaving a spot was worth something?
What it does
ParkingKarma turns every departing driver into a live signal for every searching driver. Tap "I'm Leaving" and the app verifies your departure through GPS speed, accelerometer patterns, and direction tracking. Once confirmed, your spot broadcasts to nearby drivers with a 10-minute claim window, showing real City of Melbourne data: time limits, meter types, disability flags, and EasyPark zones. In multi-storey car parks, your phone's barometer detects your floor via atmospheric pressure.
Karma drives everything. Share a spot, earn karma. Claim one, earn karma. Climb tiers from Seedling to Dragon. Higher-karma users see broadcasted spots before everyone else, the more you give to the community, the better your access to it. Steal a spot without claiming and the app knows. Parking Sinner debuff, 24-hour lockout, repeat offenders frozen entirely.
How we built it
- React Native + Expo for cross-platform mobile
- Supabase for auth, real-time subscriptions, and PostgreSQL
- Zustand for state management across two stores: global app state and the ephemeral verification session
- Expo Sensors for barometer floor detection and accelerometer movement analysis
- GPS verification with rolling speed average, spoofing detection, and direction-away-from-spot validation
- City of Melbourne Open Data via an ETL pipeline joining 23,000 parking bays, meters, zones, and sign plates into a unified Supabase knowledge base
Challenges
GPS is noisy. A stationary phone can report 3 km/h, so we built a rolling average buffer cross-referenced with accelerometer data to reliably confirm departure. Barometer calibration was solved by computing relative altitude from a baseline at app launch rather than absolute pressure. Anti-cheat required a layered approach with spoofing detection, cooldown checks, and proximity-based theft detection, each targeting a different exploit without punishing honest users.
What we're proud of
- Karma-based priority access that creates a genuine incentive loop, contributors get rewarded with better access, not just a score
- Using atmospheric pressure to detect car park floors, a sensor most apps ignore entirely
- Parking Sinner detection with real consequences and no false positives for honest users
- Raw sign codes like
MP2Pdecoded into human-readable "Metered · 2 hr max · Mon-Fri · 7am-6pm" - A design system tight enough that every screen feels like the same product
What's next
Predictive availability based on historical sharing patterns, push notifications for nearby spot broadcasts, expanded city data for Sydney and Brisbane, and a karma marketplace for partner discounts with local businesses.
Built With
- expogo
- opendataplatform
- react-native
- supabase
- typescript
Log in or sign up for Devpost to join the conversation.