尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Interactive map of Australia's Big Things
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A dataset and interactive map of Australia's Big Things — the giant novelty roadside
sculptures that dot the continent, from the Big Banana at Coffs Harbour to a 250-metre
walk-through earthworm that stood on the Bass Highway until 2020.
Zero runtime dependencies. One canonical dataset. Every pin says how precisely it is placed.檢視完整 README ↗A dataset and interactive map of Australia's Big Things — the giant novelty roadside sculptures that dot the continent, from the Big Banana at Coffs Harbour to a 250-metre walk-through earthworm that stood on the Bass Highway until 2020.
https://bigthings.downunder.blue
Zero runtime dependencies. One canonical dataset. Every pin says how precisely it is placed.
npm test # 171 tests
npm run build # rebuild the dataset and the web app from the cached sources
npm run serve # open the map at http://localhost:8099
npm run serve:about # the About/landing page
npm run build:public # package the map into public/ for static hosting
npm run serve:public # preview public/ exactly as a static host would serve it
npm run admin # local-only admin UI for manual corrections — see docs/ADMIN.md
node src/cli.js prawn
| Path | What it is |
|---|---|
data/bigthings.json | The canonical dataset. Every big thing, with coordinates, precision, size, era, status and per-row sources. |
data/overrides.json | Hand-curated corrections and additions. Each carries a reason and a source. |
web/index.html | The generated map app. Not hand-edited. |
web/about.html | The generated About/landing page. |
web/about-template.html | Its shell. Every figure in it is injected at build time. |
web/img/ | 284 Wikimedia Commons photographs, vendored with their licences. |
web/vendor/ | Leaflet, the fonts, and a vector Australia outline — all self-hosted. |
web/template.html | The app shell web/index.html is generated from. |
public/ | The site, repackaged for static hosting. Generated by npm run build:public, never hand-edited. |
data/site.json | Canonical domain and share image for SEO/AEO tags — see below. |
data/image-credits.json | Per-photo photographer, licence and checksum. |
src/ | The pipeline: fetch → extract → normalise → build → generate. |
cache/ | Unmodified snapshots of every upstream source, plus CHECKSUMS.txt. |
test/ | The test suite, including a map-vs-CLI equivalence diff. |
docs/ | BUILDING.md · DATA.md · RECREATING.md · ADMIN.md |
Wikipedia's article cites 1,075 big things in Australia as of 2022, sourced to Amy Clarke's research in the Journal of Australian Studies. That is a census figure, not a list — the article's own tables enumerate far fewer, and popular round-ups quote anything from "more than 150" to "around 600" depending on how strictly they define a big thing.
This project ships 477 big things: every one that two openly-licensed lists actually name, cross-checked against OpenStreetMap and independent reporting, plus 100 more mined from two community catalogues that enumerate far more than Wikipedia does. So the map's own framing is "477 mapped of a claimed 1,075" rather than a pretence of completeness.
The second honesty problem is coordinates. Wikipedia's table gives a town, not a point. A
map that silently drops hundreds of town centroids on the continent is lying about where the Big Potato
is. So every record carries a precision field, the app renders town-level pins with a dashed
border and a 📍 town-level pin badge, and there is a filter to hide them entirely.
| Precision | Meaning | Count |
|---|---|---|
exact-article | The sculpture's own Wikipedia article has coordinates | 20 |
exact-wikivoyage | A Wikivoyage marker for this name in this state | 27 |
exact-osm | A name-matched OpenStreetMap feature near the right town | 79 |
exact-inline | A {{coord}} template in the source table | 6 |
exact-verified | Independently researched, or published by a community catalogue | 181 |
town | The town's coordinates — not the sculpture's | 164 |
313 of 477 (66%) are located to the actual sculpture; the remaining 164 sit at their town's centre. Every card states which it is, in plain words: "How this pin was placed: core name 'swan' matches exactly, 0.6 km from the town point", or "This pin sits at the centre of Monash, not on the sculpture — the sources give a town, not a point."
Run node src/cli.js --stats for the current breakdown.
There are two pages — a landing/About page and the map — one template each,
web/about-template.html and web/template.html, generating web/about.html and
web/index.html. No CDN, no hotlinking: photos come from web/img/, Leaflet and the fonts
from web/vendor/, all served from this domain rather than someone else's.
The About page is worth a note: every figure on it is read out of data/ at build time.
The headline counts, the precision table, the state and category bars, the superlatives in
prose, the correction cards and the photo credits are all generated. A landing page with
hand-typed statistics goes stale the first time the dataset changes and then quietly
misrepresents the thing it is introducing — so test/about.test.js asserts every number on
the page against the dataset, and the precision tiers must sum to the total.
It also picks its correction cards by substance rather than alphabetically, and dedupes records that share one override, so the Nullarbor bull leads instead of three near-identical Sapphire entries.
Loading OpenStreetMap tile imagery for the whole continent at once is wasteful, and at that
scale it looks worse than a simple map — so the app draws a vector Natural Earth coastline at
the continent view, and swaps to real OpenStreetMap tiles once you zoom in past state level.
standalone.test.js asserts the swap is gated on zoom, not loaded unconditionally.
Every other asset stays local at every zoom level: photos, fonts and Leaflet never leave this domain. A test asserts the page loads no external image, font or script — tiles, fetched live per view once you're zoomed in, are the one and only intentional exception.
Generated from the dataset, no build step and no framework beyond Leaflet.
#thing=<id>, filter by state and it becomes #state=NSW (or NSW,QLD). Load either
and the map jumps straight there. No history entry per pin click — it replaces, not pushes.The same dataset, queryable from a terminal. src/query.js is the single definition of "what
matches"; the map mirrors it and test/equivalence.test.js diffs the two so they cannot drift.
node src/cli.js prawn # free-text search
node src/cli.js --state QLD --category seafood
node src/cli.js --near -33.87,151.21 --within 300 --sort distance
node src/cli.js --gone --format csv > lost-big-things.csv
node src/cli.js --format geojson > bigthings.geojson
node src/cli.js --stats
Exit codes: 0 results found · 1 no results · 2 usage error.
Open data is not the same as correct data. Each of these is recorded in data/overrides.json
with a reason and a source, and surfaced in the app on the affected card:
mainClause() cut the sentence at "has since moved" — treating an adverb as a
subordinating conjunction and discarding the only word that said it was gone.Every one of those lives in data/overrides.json, applied after harvesting so it always wins
and always survives the next rebuild — unlike data/bigthings.json itself, which is a build
artifact and gets fully regenerated every time. npm run admin is a local-only web UI
(http://127.0.0.1:8098, never deployed) for making your own: fix a field, pin a better
coordinate, or attach a photo that isn't on Wikimedia Commons. See docs/ADMIN.md.
300 photographs ship with the map: 278 vendored from Wikimedia Commons at 480px
wide, and 22 added by hand (data/custom-photos.json, see docs/ADMIN.md). The
licence mix:
Attribution is a licence condition, not a courtesy. Most of these are CC BY or CC BY-SA,
which require naming the author and the licence — and for several versions this app displayed
them bare, which was a breach. Every photo now carries a credit line on its card, and
docs/IMAGE-CREDITS.md (and credits.html on the site) lists every one,
Commons and custom, with photographer, licence and a link to the file page.
The photographs are not covered by this repository's licence. Each stays under the licence
its author chose; the dataset is CC BY-SA 4.0. data/image-credits.json records the licence,
the author and a SHA-256 of every local copy, and a test fails if any file drifts from its
checksum or lacks an author.
Every referenced photo was vendored successfully.
The map is a client-rendered single page, so without help a crawler that doesn't run its JS sees
a title and a description and nothing else. src/seo.js closes that gap on both pages, driven by
data/site.json (set siteUrl there if the domain ever changes):
<title>/<meta name="description"> — never typed twice.WebSite + Dataset + ItemList JSON-LD on the map page: every one of the 477 things' name,
coordinates, address, photo and (where it exists) Wikipedia link, readable straight out of the
raw HTML — including its #thing=<id> deep link, the same one the app's own direct-link
feature understands (see "Direct links" above).FAQPage + BreadcrumbList JSON-LD on the about page, reusing the same computed superlatives
(oldest, newest, biggest, tallest, the lost count) that already appear in the visible prose, so
the two can't disagree.public/robots.txt and public/sitemap.xml, generated at packaging time (below).Details in docs/BUILDING.md.
public/npm run build:public packages the map (already self-hosted and zero-network, per
standalone.test.js) as a
plain static site — index.html, about.html, credits.html, 404.html, img/, vendor/, robots.txt, sitemap.xml —
under public/, ready to point any static host at. For Cloudflare Pages:
npm run build:public
npx wrangler pages deploy public --project-name=bigthings-downunder-blue
Or connect the repo in the Cloudflare dashboard with build command npm run build:public and
output directory public. No environment variables, functions, or KV/D1 bindings are needed —
it's static files only. public/_headers sets long-lived caching for img/ and vendor/;
Pages picks that file up automatically.
| Source | Used for | Licence |
|---|---|---|
| Wikipedia — Big things (Australia) | The master list: names, towns, years, sizes, notes, images | CC BY-SA 4.0 |
| Wikivoyage — Australia's big things | Surveyed marker coordinates, travel-guide voice, extra entries | CC BY-SA 4.0 |
| OpenStreetMap (Overpass) | Independent coordinate cross-check; basemap tiles | ODbL 1.0 |
| Wikimedia Commons | Photographs, vendored locally with credit | various free licences |
MediaWiki API prop=coordinates | Article and town coordinates | CC BY-SA 4.0 |
| Land of the Bigs | Big things absent from the wikis: name, town, mapped coordinate, subject category | facts only, cited per row |
| Aussie Big Things Passport | Same, cross-checked | facts only, cited per row |
From the two community catalogues we take only facts — a name, a place, a coordinate, a
subject category — which are not copyrightable, and cite the page each came from. No prose is
copied: a discovered record's notes stay empty rather than lifting someone else's writing.
Both sites' robots.txt permits crawling, and the harvester serialises requests with a delay.
This repository's dataset is published under CC BY-SA 4.0 to match its upstream sources.
Attribution appears in the app footer and in data/bigthings.json's meta.sources.
Basemap tiles come from OpenStreetMap's public tile servers — fine for local use and modest traffic, but read the tile usage policy before deploying this anywhere busy, and switch to a paid tile provider if you do.