Building a Geological Clock with Claude Code: Single HTML + Three.js

Owen Thomas, a product designer with basic HTML/CSS skills, built eona.earth — a geological clock that maps Earth's 4.5 billion year history onto a 12-hour clock face synced to local time. The project was built entirely using Claude Code (Pro plan) and is shipped as a single HTML file with vanilla JS, Three.js for WebGL, and a custom fragment shader — no build step.
Key Details from the Build
- Claude Code usage: Mostly used Sonnet for implementation, switched to Opus 4.6 for complex work or when stuck. Initially tried Opus 4.7 but found it over-engineered (e.g., running 4 noise passes per pixel at 60fps).
- Custom WebGL shader renders the globe with paleogeographic continent data. Procedural clouds and atmospheric haze evolve as you move through geological time.
- Colour palette was designed in Gemini (free plan, Thinking mode) to create a system for 14 phases of Earth's evolution. Opus 4.6 then built an interactive palette editor (unprompted) for adjusting colours, surfaces, and clouds — available at eona.earth/colour-lab.html.
- Interaction: Drag a scrubber handle to move through 4.5 billion years manually. Toggle layers on/off via top-right controls.
- Time mappings: 12:06 — Moon forms, 2:45 — first life, 11:39 — dinosaurs go extinct, humans appear in the last 3 seconds.
- Continental drift: Post-cryogenic snowball Earth rendered using paleogeographic continent data (shape-tweened map series).
Workflow & Constraints
Owen worked evenings over 2 weeks, staying within Pro plan limits by being intentional: short sessions, off-peak hours, working outside Claude where possible, and using context files. The source code is on GitHub at github.com/owen-thomas/eona-earth.
Planned Features
- Keyboard navigation to jump between events
- Scrub without globe spinning (to observe continental drift)
- Future Earth projection covering the planet's remaining lifespan (second 12-hour period)
- Physical build using Waveshare round display + Raspberry Pi 4
- Sound design
- Watch/mobile/desktop app
📖 Read the full source: r/ClaudeAI
👀 See Also

Solo Dev Uses Claude + Blender MCP to Create App Store Video in 90 Minutes
Reddit user Positive_Camel2086 details how they used Claude with the Blender MCP server to generate a 10-second vertical launch video, automating camera rigging, materials, fog, and particle systems via conversational prompts.

Claude Code Plugin /verify: Automated Browser Testing from Your Plan
/verify is an open-source Claude Code plugin that reads your plan, spins up a real browser via Playwright MCP, checks each requirement, and gives you a pass/fail report with screenshots.

Claude Code Lazy-Loads Tool Schemas via ToolSearch to Save Tokens
Claude Code defers tool schema loading by sending only tool names upfront and requiring a ToolSearch call to fetch schemas before use. This architecture cuts token burn significantly.

W2A — an open protocol for agent sensors: giving local agents real-time perception
W2A (World2Agent) is an open protocol standardizing the perception layer for AI agents — self-hostable, TS SDK, Apache 2.0. It lets agents receive real-time signals from sensors without one-off scripts.