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
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Interactive map of global migration flows 1960-2024 - open-source rebuild of the Metrocosm global immigration map
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
An open-source, interactive map of global migration — an homage to (and rebuild of)
Max Galka's Metrocosm global immigration map,
whose original site is no longer online.檢視完整 README ↗An open-source, interactive map of global migration — an homage to (and rebuild of) Max Galka's Metrocosm global immigration map, whose original site is no longer online.
Live map: https://code-4you.github.io/world-migration-flows/
Animated particles show estimated migration flows between countries. An
Events dropdown replays named migration episodes — the Syrian refugee
crisis, the Gastarbeiter era, the fall of the Soviet Union and more — each
auto-playing its years with the affected countries highlighted, and each
shareable via ?e=<event> links (e.g. ?e=ukraine). Its play button tours
every event in sequence.
Circles show each country's immigration (blue) and emigration (red) as
nested discs — the larger flow outside, the smaller on top, half-and-half
when balanced. Hover for numbers, click any country (or use the dropdown)
to isolate its flows, and play through decades or single years, 1960–2024.
1990–2020: Abel & Cohen bilateral migration flow estimates
(da_pb_closed method) — true gross flow estimates from demographic
accounting, so both directions of every corridor are visible (e.g. Mexico→US
and US→Mexico return migration).
Country names and positions: UN DESA, International Migrant Stock 2024
defines the country set for countries.json; centroids from
world-countries-centroids
with manual fixes for bent shapes (Norway, Croatia, Vietnam). The 2020–2024
period file comes from the Gaskin & Abel yearly estimates (2020–2023 summed).
1960–1990 decades and single years 1960–1989: UNU-CRIS imputed bilateral migration dataset (Standaert & Rayp 2022), stock differences over the decade or year.
Single years 1990–2023 and the 2020–2024 period: Gaskin & Abel deep-learning estimates ("Deep learning four decades of human migration", GPL-3.0) — annual bilateral flows by previous residence for ~230 countries, from a neural network integrating UN census stocks, national statistics, QuantMig, and Meta's Facebook-based flow measurements (Chi et al., PNAS 2025). Unlike the raw Meta data, China and Iran are covered. The "Year…" dropdown and its play button (2s per year) step through every year from 1960→1961 to 2023→2024.
2024 (selected countries only): officially reported statistics —
Eurostat
immigration/emigration by partner country (calendar 2024, ~19 reporting
European countries) and ABS Overseas Migration 2024–25
arrivals/departures by country of birth (Australia). Because coverage is
partial, 2024 appears in the Year dropdown only while a covered country
is selected; global views stay capped at the newest complete year.
Only both-direction sources are used (inflow-only sources like green-card
counts are excluded). Regenerate with scripts/process_reported.py.
All other numbers are model-based estimates, not counts; the sources use different pipelines, so expect methodological seams at 1990 and 2020. For the same reason the decade files (Abel & Cohen) and the single-year files (Gaskin & Abel) are independent series: a decade's total won't exactly match the sum of its ten years. The most visible one: emigration from rich countries is under-counted before 1990. The pre-1990 stock-difference method only registers an outflow when a country's expatriate stock grows, and deaths of older emigrants usually cancel new departures — e.g. US emigration reads as ~30k/year through the 1980s, then jumps to ~500k/year from 1990 when the flow-based estimates take over. Emigration didn't start in 1990; it just becomes visible then. (1990 itself, the first Gaskin & Abel year, runs hot — treat that single year's magnitudes with extra caution.)
The seam is also a definition change: before 1990 migrants are tracked by country of birth; from 1990 by country of previous residence. An Egyptian guest worker leaving Saudi Arabia is "an Egyptian" to the old method — his departure never counts as Saudi emigration — but counts as Saudi Arabia→Egypt under the new one. That's why guest-worker states (Saudi Arabia, the Gulf) show almost no emigration before 1990 and large outflows to Egypt, India and Indonesia from 1990: the same worker rotations existed all along, only the newer method can see them. It's also what makes return migration (e.g. US→Mexico) visible from 1990 on.
Regenerate the data files with:
python scripts/process.py # countries.json only (names + centroids)
python scripts/process_abel.py # 1990-2020 decades (Abel & Cohen flows)
python scripts/process_early.py # 1960-1990 decades (UNU-CRIS stocks)
python scripts/process_yearly.py # single years 1960-1989 (UNU-CRIS stocks)
python scripts/process_gaskin.py # single years 1990-2023 + 2020-2024 period
python scripts/process_reported.py # reported 2024 (Eurostat + ABS live APIs)
python scripts/process_total.py # 1960-2024 all-decades view (run last)
(after downloading the source files into raw/ — see the script docstrings).
Every flows_*.json has exactly one owning script, so rerunning any single
script can't overwrite another source's files.
Nobody keeps a worldwide ledger of moves. Migration numbers are built from imperfect ingredients, and knowing them explains everything odd about the map:
Any static file server works:
python -m http.server 8000
then open http://localhost:8000/. (Opening index.html directly won't work —
the app fetches its JSON data over HTTP.)
The app is fully static (HTML + CSS + JS + JSON), so it runs as-is on GitHub Pages, Netlify, or any static host. Note: Tableau Public cannot host custom web apps like this one — it only hosts workbooks built in Tableau's own tools.
Worldwide, migrants are roughly 90% of everyone who is "somewhere else" right now — about 304 million people live outside their birth country (UN, 2024), versus a few tens of millions abroad on a temporary trip at any instant. (Visits outnumber migrations ~125:1 per year, but a trip lasts days while a migration lasts years, so the migrants accumulate.)
But not everywhere. In these places the foreigners actually present are mostly tourists, so migration isn't the full picture there (2019 snapshot; tourists-present estimated as inbound visits × ~5-day stay):
| Country | Tourist share of foreigners present |
|---|---|
| Cuba | ~95% |
| Andorra | ~85% |
| Czechia | ~84% |
| Tunisia | ~82% |
| Slovakia | ~82% |
| Montenegro | ~79% |
| Vietnam | ~77% |
| Austria | ~75% |
| Jamaica | ~72% |
| China | ~62% |
The pattern: states closed to immigration but open to tourism (Cuba, Vietnam, China), post-communist Central Europe, and tourism microstates.
The temporary side of the story has its own maps:
Contributions are welcome — the easiest way to start is opening an issue for a bug, a data problem, or an idea.
Some good first contributions:
EVENTS
array at the top of app.js — an id, a display name, a year range
(start years, within 1960–2023), and the ISO2 codes of the countries to
focus. Please check the flows are actually visible in the data for those
years before submitting.data/, so new sources slot in without touching the app.To run locally: clone, then serve the folder over HTTP (e.g.
python -m http.server 8000) and open http://localhost:8000/ — opening
index.html directly won't work because the app fetches its JSON data.
The data/ files are committed, so you only need Python and the raw source
downloads (see the docstrings in scripts/) if you want to regenerate data.
Code is MIT; by contributing you agree your contributions are too. The underlying datasets keep their own licenses (see Credits).
Code is MIT licensed (see LICENSE). The UN data is © United Nations, made available for use under its terms.