Deployed project
GalaxyVoyagers is a collaborative sci-fi worldbuilding platform for building stories, scenes, characters, organizations, locations, ships, conflicts, and supporting media. It is a separate production deployment that demonstrates how I design a full-stack application around a connected domain instead of treating each screen as an isolated CRUD form.
The live site uses a Next.js frontend backed by a Go GraphQL gateway. Behind that gateway, Go services communicate over gRPC, store domain data in PostgreSQL and MongoDB, use Redis for shared runtime state, and send async work through RabbitMQ for AI-assisted story and image generation flows.
Open GalaxyVoyagers.comThe project is intentionally polyglot at the system boundary but conservative inside each service: TypeScript and Apollo Client in the browser, Go and gqlgen at the API gateway, protobuf-defined gRPC contracts between services, and proven datastores selected for the access pattern they serve.
The browser talks to one GraphQL entry point for queries, mutations, and subscriptions. The gateway owns backend composition: it calls the story, chat, auth, image, story-generation, and Stripe services over gRPC, while async generation work moves through RabbitMQ and streams results back to the UI.
GalaxyVoyagers is not a flat resource catalog. A useful screen often needs a nested view: a story, its ordered scenes, the characters and locations in each scene, related organizations and conflicts, generated images, and discussion context. GraphQL fits that shape because the UI can request the exact graph it needs in one operation.
With a REST-only browser API, that same screen would tend to become a chain of dependent requests: fetch the story, fetch scenes, fetch the entities attached to each scene, fetch media, then fetch comments. The GraphQL gateway moves that composition into the backend, where it can resolve nested fields through service calls and datastore access without forcing the browser to coordinate every step.
Stories connect to scenes, characters, locations, organizations, conflicts, roles, ships, generated images, and discussion content.
The frontend can ask for the nested shape a screen needs instead of fetching a story, then scenes, then related entities, then media through chained browser calls.
The Go GraphQL gateway resolves fields across backend services and datastores while keeping the browser API explicit and stable.
GraphQL subscriptions support streaming story suggestions and async creation flows without adding a second frontend API model.
The project highlights production-oriented backend design: a typed GraphQL boundary, protobuf service contracts, separate persistence models for relational worldbuilding data and document-style discussion data, async job handling for expensive generation work, and deployment through containerized services on Kubernetes.