Busabase
Busabase is an open-source (MIT) database and workspace for AI agents — data, docs, skills, and apps in one place. Run it locally, self-host it inside your network, or use Busabase Cloud, and turn age
Singapore HDB Resale Prices Dashboard — auto-refreshed daily from data.gov.sg
Translation pending
DataHTML · PythonGitHub @garethgoh99OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗An interactive dashboard of Singapore HDB resale prices from 1990 to now, broken down by town, street, flat type and year. It rebuilds itself every day from data.gov.sg and is served on GitHub Pages.
Live dashboard: https://garethgoh99.github.io/hdb-resale-dashboard/
A GitHub Actions workflow (.github/workflows/refresh-dashboard.yml) runs every day at 02:17 SGT. It also runs on every push to main, and whenever you press Actions → Refresh dashboard → Run workflow. Each run does the following:
pipeline/fetch.py pulls the five data.gov.sg "Resale Flat Prices" datasets.
d_8b84c4ee58e3cfc0ece0d773c8ca6abc) is re-pulled on every run.datastore_search API.pipeline/harmonize.py merges the five eras into one schema. This covers the lease-string parsing, the MULTI GENERATION spelling fix, the 99-year-lease fallback and $psf.pipeline/build.py aggregates the data into the 18-field records (via pipeline/aggregate.py) and fills template/dashboard_template.html to produce site/index.html.
It also writes per-quarter aggregates to site/q/<town>.json. These are loaded on demand: q/towns.json for the map, comparison table and town ranks, and q/<town>.json for the street bars and detail views. Both the map and the detail view switch to quarters when Quarterly is picked (Yearly is the default).data/latest_meta.json. That file is a small refresh log, and the commits also keep the daily schedule from being auto-disabled.If any step fails, nothing is deployed and the previous dashboard stays live.
The key is stored as a repository secret named DATA_GOV_SG_API_KEY (Settings → Secrets and variables → Actions). It is never committed to the repo.
DATA_GOV_SG_API_KEY secret (see above).pip install -r requirements.txt
export DATA_GOV_SG_API_KEY=... # optional, but gives higher rate limits
python pipeline/fetch.py && python pipeline/harmonize.py && python pipeline/build.py
open site/index.html
You can also drop CSVs you've downloaded by hand into data/raw/ as <dataset_id>.csv. fetch.py uses them until its next weekly re-pull.