Case study 07
Side project · Go + React
Planetary Defense
A dashboard for near-Earth asteroids built on NASA/JPL's public APIs: upcoming close approaches, the Sentry impact-risk list, fireball reports and a 3D orbit viewer for any object.
My role
My own project. I built the Go API, the React frontend and the tests, and wrote up the design decisions in the README.
Core technologies
System path
A simplified view of the product workflow.
- 01
JPL APIs
- 02
Go client + cache
- 03
Typed JSON API
- 04
zod at the edge
- 05
React dashboard
- 06
3D orbit viewer
01
Backend
A small Go API in front of JPL
JPL's APIs return column-oriented arrays of strings. The Go service turns them into typed JSON, caches responses so the dashboard doesn't hammer NASA, and coalesces identical requests so a burst of users triggers one upstream call.
02
Frontend
Dashboard and orbit viewer
The React app validates every response with zod, so a change on JPL's side shows up as a clear error instead of a broken page. Object pages draw the orbit in 3D from its orbital elements.
03
Testing
Three layers of tests in CI
- 01Go unit and handler tests with the race detector, against recorded JPL fixtures.
- 02Vitest for formatting and orbital math.
- 03Playwright end-to-end tests that run the real stack against a fake JPL server, so they work offline.
- 04All of it runs in GitHub Actions on every push.