Wikipedia3D (legacy revival)
A 2011-era WebGL + Semantic Web mashup that renders Wikipedia/DBpedia entities in a navigable 3D space, with map-based discovery and a rich UI for favourites, blacklisting, and exploration. This repo contains the original PHP/JS frontend and lightweight proxy scripts used for API calls.
Quick assessment (what you have today)
Strengths
- Unique concept still feels fresh: spatial exploration of knowledge, fast discovery loop (search → spawn 3D item → navigate → branch).
- Feature-rich UX: favourites, blacklist, keyboard navigation, skybox themes, map-driven discovery.
- Fully client-driven rendering with Three.js and simple PHP utilities—no heavy backend required.
Pain points / risks
- Very old JS stack (jQuery 1.6, MooTools, ancient Three.js) and global namespace design.
- Deprecated APIs: Google Maps “panoramio” library is discontinued; AlchemyAPI is defunct.
- Hard-coded domain URLs (
wikipedia3d.world.eu.org) break local use and make the app fragile.
- Mixed-content/HTTP: many endpoints are
http:// which modern browsers block on https://.
- CORS + proxy reliance: API calls are routed via PHP proxies; security + reliability needs care.
Quick local hosting (FastAPI replacement)
The legacy PHP proxy has been replaced by a small FastAPI app that also serves the static site.
cd /home/lucky/.openclaw/workspace/wikipedia3d
python3 -m venv .venv
source .venv/bin/activate
pip install -r server/requirements.txt
uvicorn server.app:app --reload --port 8088
Open:
⚠️ For best results run over HTTP, not HTTPS, because the code uses legacy HTTP endpoints.
What changed
server/app.py implements /proxy (replacement for ba-simple-proxy.php).
wikipedia3d/index.html and /index.html are static HTML replacements for the old PHP pages.
- Proxy + icon URLs now point to relative paths to work locally.
Outlook: modernizing while keeping the soul
Goal: Preserve the core experience (3D exploration + semantic discovery + map-driven expansion) while upgrading to a modern, maintainable stack.
Phase 1 — Stabilize (lowest effort, highest payoff)
- Replace hard-coded URLs with relative paths.
- Add
.env or config file for API endpoints/keys (Google Maps, GeoNames).
- Move inline scripts to files; reduce global pollution.
- Add a tiny local dev server script (Node or PHP).
Phase 2 — Modern frontend
- Upgrade to a current Three.js and refactor rendering to ES modules.
- Replace MooTools and legacy jQuery usage with vanilla JS or a minimal modern library.
- Use
fetch() + async/await instead of jQuery AJAX.
- Replace the deprecated Google Maps bits (Panoramio) with Maps JS API + Places/StreetView or Mapbox.
Phase 3 — Data + semantics refresh
- Migrate from DBpedia-only to Wikidata SPARQL as primary, keep DBpedia as fallback.
- Replace AlchemyAPI (dead) with modern entity extraction or just remove it.
- Add caching and rate limiting in the proxy.
Phase 4 — Experience upgrade (keep the magic)
- Improved camera controls (orbit + FPS toggle).
- Smooth item layout + collision avoidance.
- Mini-map + bookmarks + “topic trails” visualization.
- Optional VR/WebXR mode while retaining keyboard-first navigation.
Key dependencies (legacy)
- jQuery 1.6.2, jQuery UI 1.8
- MooTools 1.3
- Three.js (very old build)
- Google Maps JS API (panoramio library deprecated)
- DBpedia SPARQL, Wikipedia API, GeoNames
- PHP proxy scripts (ba-simple-proxy.php)
Next steps (suggested)
- Confirm the app runs locally with the PHP server.
- Apply the URL fixes above.
- Decide on a modern map provider (Google Maps w/ key vs Mapbox).
- I can then create a clean “modernization branch” with ES modules + updated Three.js while preserving the UI flow.
If you want, I can start a staged refactor plan and implement Phase 1 and Phase 2 step-by-step.