I've been working on a space 4X game in my spare time, which is just starting to
look like a game despite the fact it's nowhere close:
Right now it generates 2500 random solar systems when the server starts up, with each solar system having 1-2 randomly generated stars and a random assortment of planets. I've tried to generate the planets with some semblance of realism, but a lot of the formulae and concepts are honestly pulling stuff out of thin air. It does things like take the system's metallicity into account when generating planet masses, uses planet mass to randomly generate atmospheres, and uses atmospheres and distance from the star(s) to determine surface temperature. Eventually it'll generate rings, moons and so on, but I need to nail down some of the extreme edge cases the random generator makes before I do that.
The claim button broke at some point, but I only got so far as to have it generate currently meaningless government entities to own the planet and system, and to assign those to the empire the player has assumed. There's a colonize button that adds a million people to the planet, currently with no regard to the habitability.
The game currently runs as 2 Node.js processes, with one acting as a server and the other as a client using the Blessed NPM library to render terminal graphics. I like the aesthetic, but it limits you in a lot of ways, since you can't just scale down text to print system names on the galaxy map, for example. The advantage of building the client and server as separate programs, however, is that the client is entirely independent of the server and could be built using anything. I might switch to a web UI at some point since that's what I do at my day job.