You are browsing as a guest. Sign up (or log in) to start making projects!

9h 2m 5s logged

Devlog #1

Uranometria is the idea of turning a GitHub account into an explorable 3D galaxy repos become star systems, folders become planets, files become moons. This session was about getting the two ends of the stack alive: a Three.js scene you can actually fly around in, and a Rust server that talks to GitHub as a proper GitHub App. As a high school senior in Korea, I had to juggle studying for exams alongside this, so I ended up making quite a few silly mistakes.

Flying between spheres

Step zero was a playground: Next.js + react-three-fiber, a sun in the middle, a few planets around it, pointer-lock mouse look, and WASD flight. The flight part is a small FlyControls component that reads keys into a ref and moves the camera along camera.getWorldDirection() inside useFrame, so W always means “wherever I’m looking.” Simple, but it immediately felt like a spaceship, which is the whole point. (To be honest, I reused a lot of code from the previous project. I also know the current design is pretty bland, but I just couldn’t be bothered to change it. I’ll fix it later.)

The scene itself took ten minutes. The ecosystem took the rest of the day.

Talking to GitHub as an App

The actual goal of the session: an axum server that authenticates as a GitHub App — sign a short-lived RS256 JWT with the app’s private key, trade it for an installation token, then call /installation/repositories. Read-only Contents permission, tokens never leaving the server, exactly like the design doc says.

Where Uranometria stands

  • Next.js + R3F scene: sun, planets, stars, pointer-lock + WASD flight working
  • Rust (axum) server: GitHub App JWT auth, installation token flow, /api/repos proxy returning real data
  • Three version-ecosystem traps documented so future-me never pays for them again

Next up

Rendering the actual galaxy — mapping the repo list onto star systems, with language picking the star color and stars deciding the corona. The fun part, finally.

0
6

Comments 0

No comments yet. Be the first!