Stargazer Islands — a Three.js 3D portfolio

Stargazer Islands is an interactive, open-source Three.js portfolio by Emanuel Pfeifer (Ryhox). It's a cozy 3D world you explore right in your browser, and every GitHub stargazer of the repository gets their own permanent island in it.

Stargazer Islands: a low-poly island with a stone path, trees and flowers, built with Three.js

What is this Three.js project?

Most developer portfolios are a scrolling page. This one is a place. You land on a small island, walk up a hill, find a cat keeping watch, read the project board at the end of the west path, sit on a bench by the campfire, and watch the sky turn from sunset to a starry night. When you're done, board the boat and sail out into the archipelago.

Everything is rendered in real time with Three.js and WebGL through React Three Fiber — no game engine, no plugins, no install.

Features

GitHub stargazers get their own island

Star the Stargazer Islands repository on GitHub and a permanent island appears for you in the archipelago — usually within about five minutes. A GitHub Actions workflow publishes the ordered list of stargazers as a static JSON file, and every visitor's browser builds the same world from it.

How your island is made

Where it is comes from your star order, so your island never moves. What it looks like and how big it is come from a hash of your GitHub username — the same name always gives the same island, and nothing is stored on a server.

RegionRarityChanceLooks
🌳 Wildwood ReachCommon~30%Oakwood, Pinehaven
🪨 Bleakshoal KeysCommon~27%Stoneshoal, Greywaste
🍂 Ember HollowUncommon~14%Emberwood, Hollowwood
🏜️ Sunscorch ReachUncommon~13%Sunscorch Dunes, Redrock Mesa
❄️ Frostfell IslesUncommon~11%Snowdrift, Frostpine
🌸 Bloomtide ValeRare~5%Sakura Grove

Size is rolled separately: Small ~50%, Medium ~32%, Large ~14%, Huge ~4%. A Huge Sakura Grove is the jackpot.

Tech stack

Built as a single-page app with a component-per-system architecture: terrain, scatter, ocean, sky, boat, player and UI each live in their own module.

Three.jsWebGLReact Three Fiberdrei postprocessingGLSL shadersTypeScriptReact ZustandGSAPsimplex-noiseViteGitHub Actions

Other projects by Ryhox

FAQ

How do I get my own island?

Star Ryhox/Stargazer-Islands on GitHub. Within about five minutes it shows up on the world map. Press M in the game and search your username.

Can I use this as a template for my own Three.js portfolio?

The code is MIT-licensed, so yes — read it, learn from it, fork it. Third-party 3D models keep their own licenses, listed in the in-game credits.

Does it run on phones?

Yes. Touch controls appear automatically, and the graphics setting scales the scene down for weaker devices.

Why does it take a moment to load?

It streams 3D models, textures and audio for a whole world. After the first visit most of it is cached.