ZH/zhe hang
← Work index

01 ·deployed web app ·2026

EhParkLeh

A Singapore parking finder that answers one question well: where do I park near here, right now, that fits my needs.

Facts

  • 3,725 carparks, live
  • GovTech feeds + live LTA EV charging
  • installable PWA, iOS and Android

Built with

  • React 19
  • TypeScript
  • FastAPI
  • Leaflet
  • PWA
  • Capacitor

EhParkLeh is a live web app that pulls readily-available government data from GovTech and LTA to give accurate, current information on the carparks near any location. Relying solely on GovTech data was not enough, as some parking spaces are not included in it. As such, I use the Google Maps Places API to discover parking locations across Singapore that the government data does not list.

Inspiration

Every driver in Singapore knows the feeling: paying mall parking rates, and the frustration of finding a spot in the first place. You end up zooming into Google Maps, hunting for a little ‘P’ near your destination and hoping it has space. The data that would help already exists, live lot counts and real rates, just scattered across separate government feeds. So I pulled it into one place, a single glance at a map that links straight to Google Maps for directions.

The one job

Finding parking in Singapore looks like a solved problem, but it is not. The government runs parking.sg, which does a fantastic job as a one-stop solution for paying for parking. It does not, however, help you find a carpark: it has no map and no live availability, so it answers ‘how do I pay’, not ‘where do I go’. That gap is the whole product. EhParkLeh does one thing: finding a carpark, and does it completely.

I followed the SLC framework: Simple, Lovable, Complete, which lets the app solve one problem, and solve it well. It installs as a PWA, works offline against the last results, and wraps to native iOS and Android through Capacitor.

Two data sources, one clean dataset

Coverage is the hard part, and no single feed has it. The dataset is built from two:

  • Government (data.gov.sg and LTA DataMall). Live free-lot counts, real LTA rates, static carpark information, and live EV charging availability.
  • Google Places. Used to find carpark locations the government data misses, such as malls and private lots.

A build step merges both onto a geocoded spine, dedupes by spatial proximity and name similarity, and classifies each carpark by type so the filters work. The result is one file, roughly 3,725 carparks, served by a FastAPI backend with a short-lived cache in front of the live availability feed.

What it stands on

React 19 and TypeScript with a Leaflet map on the front, FastAPI on the back, deployed on Vercel and Render.