Constellarium is a full-stack web application that lets users explore the night sky in 3D — navigating through the zodiac constellations, discovering over 300,000 stars, and asking an AI chatbot questions about each constellation they visit.
The project covered the complete full-stack developer workflow: local development, containerised deployment, and server maintenance. The course brief was explicitly about server infrastructure — but building a CRUD app felt like a missed opportunity. The goal was to find subject matter compelling enough to justify a rich frontend while still fulfilling the backend and deployment requirements rigorously.
The challenge
Astronomy apps split into two camps. AR tools show you what's above you right now — impressive once, then rarely revisited. Deep simulation software built for serious astronomers requires significant prior knowledge and is genuinely intimidating to a curious beginner.
Neither serves the person who looks up at the night sky and simply wants to understand what they're seeing. The challenge was building something that felt like open-ended exploration — rewarding at every level of engagement, no prior knowledge required.
How we approached it
The project required solving three independent problems simultaneously: rendering a massive star field at interactive framerates in a browser, building a backend and deployment pipeline that could support it reliably, and integrating an AI chatbot that felt genuinely useful rather than bolted on.
Key insights:
- WebGL performance at this scale depends entirely on instanced rendering — individual mesh objects per star are a dead end
- The star database (300,000+ entries) requires indexed MongoDB lookups to query without lag
- AI model behaviour is largely a prompting problem — seeding each constellation's context makes the chatbot specific and accurate
- Exploration and explanation reinforce each other — users who found something visually interesting were far more engaged with AI explanations
- The deployment pipeline (GitHub Actions → Docker → Portainer → live server) required more systematic debugging than the application itself
What we built
Three.js with BufferGeometry and instanced rendering handles the full star field at smooth framerates — stars sized and coloured by magnitude and spectral class. Users are placed at the centre of the zodiac with all constellations surrounding them; clicking any constellation navigates to a detail page with mythology, astronomy, and cultural history.
Each constellation detail page includes a chatbot powered by OpenAI, with prompts seeded by the constellation's specific context — so responses are accurate rather than generic. The full stack is hosted separately (frontend, backend, database). GitHub Actions automates CI/CD; Portainer manages containerised services.
- 300,000+ stars with accurate magnitude, colour temperature, and positional data
- Interactive constellations: mythology, astronomical data, and cultural history across civilisations
- Context-seeded AI chatbot: each constellation page has its own informed chatbot, not a generic one
- Full zoom: from individual star systems to the galactic structure
- Production deployment: GitHub Actions CI/CD, Portainer container management, separate frontend/backend/database hosting
Constellarium proved that strong subject matter makes technical work more meaningful — and that deployment is its own design discipline. The CI/CD pipeline in particular was a steep learning curve: understanding how GitHub Actions, Docker, and a live server interact required systematic debugging and careful documentation.
That operational knowledge now shapes how I think about building for production rather than just for development. The gap between "works on my machine" and "works reliably for users" turned out to be where the most interesting problems live.