Skip to content

CheeJS/Parkwhere

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

ParkWhere

Real-time parking availability and predictions for Melbourne CBD, powered by City of Melbourne sensor data.

App Store Google Play


About

ParkWhere takes the guesswork out of finding parking in Melbourne CBD. Instead of just showing you what's available right now, it predicts what will be available by the time you actually arrive, using an exponential-decay forecasting model built on a rolling 24-hour history of sensor readings.


Features

  • Predictive availability — forecasts bay status at your estimated arrival time using a per-bay exponential-decay model, so you're not navigating to a spot that filled up while you were driving
  • Live sensor data — 4,800+ City of Melbourne parking sensors, polled every 2 minutes
  • Zone-level forecasts — aggregated availability for parking zones with per-bay breakdown
  • Interactive map — colour-coded heatmap and tappable bay markers
  • Restriction timeline — parking rules, time slots, and applicable days displayed per bay
  • Arrival notifications — background geofence monitor fires a local notification when you reach your destination
  • ETAs — driving and walking estimates via Google Directions with haversine fallback
  • Search — Google Places autocomplete, recent destinations, and saved favourites
  • Navigation handoff — one-tap handoff to Apple Maps, Google Maps, or Waze
  • Adaptive UI — Cupertino on iOS, Material 3 on Android

Architecture

Backend (Go)

Deployed on Fly.io (Sydney region).

  • Ingestion — delta-polls the City of Melbourne Parking Sensor API every 2 minutes; full sync runs daily
  • Prediction engine — per-bay exponential decay (lambda_occupy / lambda_free) computed from a 24-hour rolling history window
  • Zone prediction — aggregated zone-level forecasts
  • Persistence — SQLite in WAL mode with automatic history pruning
  • Google API proxy — Places autocomplete, Place Details, and Directions are proxied server-side so API keys are never exposed to clients

Mobile (Flutter)

Targets iOS and Android.

  • Map screen — flutter_map with manual hit-testing, bay detail bottom sheet, live GPS blue dot
  • Search screen — Places autocomplete, recents, and favourites with predictive availability badges
  • Zone detail screen — full restriction timeline, per-bay predictions, availability summary

Tech Stack

Layer Technology
Backend language Go 1.23
HTTP router Gorilla Mux
Database SQLite (WAL mode)
Mobile framework Flutter 3.9+
Map rendering flutter_map 8.2 + latlong2
Location geolocator 13
Notifications flutter_local_notifications
Data source City of Melbourne Open Data — Parking Sensor API
External APIs Google Places API, Google Directions API
CI/CD Codemagic (iOS to TestFlight, Android to Google Play)
Deployment Fly.io (Sydney region)

Data

Parking sensor data is sourced from the City of Melbourne Open Data platform and is made available under the Creative Commons Attribution 4.0 International licence.


License

This project is licensed under the MIT License. See LICENSE for the full text.

About

Real-time parking availability and predictions for Melbourne CBD, powered by City of Melbourne sensor data.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors