Skip to content

cheeaun/checkweather-sg

Repository files navigation

Check Weather SG

☀️🌧 Yet another weather app for Singapore

Story

The Beginning

This began with my long-time curiosity on how to convert raster radar images into vector on a map. I've been using Weather.gov.sg's Rain Areas map whenever it rains, so I thought if I could convert that raster image to be used on Mapbox GL JS. I could put the whole raster image on Mapbox but choose to make it vector because I like it smoother.

After few trials and errors, I cooked up the Rain GeoJSON SG project, a straight-forward API server to convert rain area radar images (Singapore) to GeoJSON.

Since I've gone this far, so I thought "why not?", let's build yet another weather app for Singapore! Thus this project just happens.

2D radar 3D radar 3D clouds and rain

👉 Read more: Building Check Weather SG.

The lock-down period

2 years later (2020), I revisited this project and rebuilt it:

  • ⏳ Past 2 hours of radar snapshots
  • 🧼 Cleaner UI
  • 🗺 Cleaner maps
  • 🌏 Remove the 3D mode (it's not useful)

V2

I've also built an 📱 iOS app.

And... a plethora of open-source projects to make the impossible possible:

  • ☔️ rain-geojson-sg - the core API to fetch weather observations and rain radar
  • checkweather-sg-checker - a scheduled serverless function to keep checking for rain
  • sg-coverage - a script that converts the Singapore boundary into a 217x120 array of indices with values indicating its (land) region excluding the surrounding areas (other countries and water).
  • 📸 rainshot - a serverless instance to capture rain radar images
  • 🍩 rainshot-checker - A site to experiment contouring the radar data
  • 📤 sg-rain-radar-scribbler - another site to load rain radar image and generates a JSON output similar to the one generated by rain-geojson-sg.

Rain notifications

There are currently 3 channels:

  1. Push notifications, via the iOS app.
  2. Twitter @checkweathersg
  3. Telegram channel /checkweathersg

Technicalities

Node.js is required to run this web app. Here's a list of readily-provided scripts:

  • npm start - starts a local server for development
  • npm run build - build the files for production in dist folder
  • npm run serve - starts a local server to preview production build

Copyright & license