Build the shooter as a custom canvas module
The game experience needed direct control over rendering and update cadence, but the rest of the product still lived inside a standard web application.
Use a full game frameworkAvoid a real-time module entirelyImplement a purpose-built canvas loop inside React
Decision
I built the Space Shooter around a custom canvas game loop so the most interactive feature stayed tightly scoped and performance-aware.
Tradeoff: A custom loop gives more control, but it also means owning more of the gameplay architecture directly.
Impact: The game became a differentiating module without forcing the entire product into a game-engine-first architecture.
Keep live educational data in the product flow
A static space site is less compelling when users can reasonably expect real-world context such as ISS tracking.
Ship only static educational contentEmbed third-party widgetsIntegrate an internal ISS map and polling flow
Decision
I added an ISS tracker flow that polls an internal API and computes user distance in the interface layer.
Tradeoff: Polling adds moving parts and requires discipline around update cadence.
Impact: The site feels closer to a living learning product than a static educational brochure.
Treat observability as part of delivery
Interactive APIs and chatbot flows degrade trust quickly if they fail silently.
Rely on manual checkingMonitor only the deployment platformAdd explicit synthetic monitoring for the product
Decision
I included Checkly-based monitoring so the product had a reliability posture beyond basic deployment success.
Tradeoff: This added operational setup to what could have remained a purely feature-focused project.
Impact: The project demonstrates product stewardship, not just feature implementation.