2026 · Creator & Developer
3D World Explorer
Currently building a 3D world map flag and geography learning tool that turns exploring countries, flags, and borders into an interactive experience.
- 3D
- WebGL
- React
- Three.js
- Geography
- Education

Overview
A 3D world map flag and geography learning tool, built to make exploring the world's countries, flags, and geography interactive rather than rote memorisation. Built with React, react-globe.gl, and Three.js, rendering all 241 countries from Natural Earth boundary data with no runtime network calls — country geometry, metadata, and flags are baked into the app at build time.
Every country is filled with a colour that differs from all of its neighbours, computed with a Welsh–Powell greedy graph colouring over adjacency derived two ways: shared borders from the boundary data's topology, and visual adjacency from a spatial hash over each country's vertices (plain bounding-box checks fail badly for countries like Russia that span half the globe).
Solved a few nontrivial rendering problems along the way: hover and selection are expressed purely through material colour rather than polygon altitude, since changing altitude forces the underlying library to rebuild all ~241 extruded meshes and stalls the main thread; and borders are drawn as their own mesh layer rather than using the built-in polygon stroke, which loses the depth test at the globe's surface and renders invisibly.
Highlights
- Interactive 3D globe for exploring countries, borders, and their geography, with click-through detail panels (flag, capital, population, region, area, clickable neighbours).
- Flag-learning mode paired with a two-tier location and geography quiz — Easy shows the flag, Hard doesn't, revealing it after each answer.
- Predictive search with historical alias support (USA, UK, Holland, Burma, Ivory Coast, Persia, …) that flies the camera to and highlights the matched country.
- Custom map-colouring algorithm combining topological and visual adjacency so no two neighbouring countries ever share a fill colour.