← Back to selected work

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

GochiReact 19TypeScriptViteTanStack QueryzodReact Three FiberTailwind CSSVitestPlaywrightGitHub Actions

System path

A simplified view of the product workflow.

  1. 01

    JPL APIs

  2. 02

    Go client + cache

  3. 03

    Typed JSON API

  4. 04

    zod at the edge

  5. 05

    React dashboard

  6. 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.