Skip to content

3D visualization engine for simulating and tracking the trajectories of interstellar visitors — including ʻOumuamua, 2I/Borisov, 3I/ATLAS, and future exotic objects as they pass through our solar system.

Notifications You must be signed in to change notification settings

Eprey27/interstellar-tracker

Repository files navigation

🌌 Interstellar Tracker

A professional 3D visualization system for tracking the passage of interstellar object 2I/Borisov through our solar system.

.NET Build Tests Coverage License Azure PRs Welcome

🎯 Project Overview

Interstellar Tracker is a microservices-based application that provides real-time and time-accelerated visualization of interstellar objects passing through our solar system. Built with Clean Architecture principles, it demonstrates professional .NET development practices suitable for learning and production use.

Key Features

  • 🌠 3D Solar System Visualization - OpenGL-based rendering using Silk.NET
  • ⏱️ Time Control - Real-time and accelerated time simulation
  • 🔐 Enterprise Authentication - Keycloak integration with social login support
  • 📊 Orbital Calculations - Accurate astronomical physics engine
  • 🐳 Container-Ready - Full Docker and Kubernetes support
  • Quality Assured - Comprehensive testing and code quality gates
  • 📚 Well-Documented - Designed for junior developer onboarding

🏗️ Architecture

This project follows Clean Architecture with microservices pattern and event-driven communication:

┌─────────────────────────────────────────────────────────────┐
│                    API Gateway (YARP)                        │
│           Routing • Load Balancing • Telemetry              │
└────────────────────────┬────────────────────────────────────┘
                         │
        ┌────────────────┼────────────────┐
        ▼                ▼                ▼
┌───────────────┐ ┌──────────────┐ ┌─────────────┐
│ CalculationSvc│ │VisualizSvc   │ │ AuthService │
│    :5001      │ │   :5002      │ │   :5003     │
│ • Orbital calc│ │• Trajectories│ │• Keycloak   │
│ • Ephemeris   │ │• Coord. trans│ │• JWT        │
└───────┬───────┘ └──────┬───────┘ └──────┬──────┘
        │                │                 │
        └────────────────┼─────────────────┘
                         ▼
                 ┌───────────────┐
                 │   RabbitMQ    │ (Phase 4)
                 │  Event Bus    │
                 └───────┬───────┘
                         │
            ┌────────────┴────────────┐
            ▼                         ▼
    ┌────────────────┐       ┌────────────────┐
    │ App Insights   │       │   Grafana +    │
    │ + Log Analytics│       │   Prometheus   │
    └────────────────┘       └────────────────┘

Current Status: ✅ API Gateway + CalculationService deployed | ✅ VisualizationService HTTP integration (TDD)

Microservices

Service Port Status Description
API Gateway 5014 ✅ 60% YARP reverse proxy, routing, telemetry
CalculationService 5001 ✅ 70% Orbital calculations, hyperbolic orbits
VisualizationService 5002 ✅ 35% Trajectory data, coordinate transforms, HTTP client to CalculationService
AuthService 5003 ⏳ 0% Keycloak integration, JWT validation
WebUI (Blazor) 5015 ⏳ 20% Dashboard, management interface
3D Rendering - ⏳ 0% Silk.NET + OpenGL desktop client

Layer Structure

  • Domain - Core business models (HyperbolicOrbit, CelestialBody, 2I/Borisov)
  • Application - Use cases, CQRS (MediatR), validation (FluentValidation)
  • Infrastructure - Azure App Insights, Key Vault, persistence
  • Services - Microservices comunicating via HTTP (→ RabbitMQ Phase 4)
  • Web - Blazor Server dashboard + Silk.NET 3D rendering

📚 Detailed Architecture: docs/02-architecture/system-overview.md

🚀 Quick Start

Target: 0 → Running system in < 30 minutes

Prerequisites

5-Minute Setup

# 1. Clone and navigate
git clone https://github.com/YOUR_USERNAME/interstellar-tracker.git
cd interstellar-tracker

# 2. Start infrastructure (Keycloak, RabbitMQ, Prometheus, Grafana)
docker-compose up -d

# 3. Build solution
dotnet build InterstellarTracker.sln

# 4. Run tests
dotnet test

# 5. Start services (VS Code task or manual)
dotnet run --project src/Services/CalculationService/InterstellarTracker.CalculationService
dotnet run --project src/Services/ApiGateway/InterstellarTracker.ApiGateway

Verify Services

📘 Complete Guide: docs/04-development/getting-started.md

📖 Documentation

🏗️ Architecture

👨‍💻 Development

🔬 Domain Knowledge

🚀 Operations

📋 Project Management

🧪 Testing

# Run all tests
dotnet test

# Run with coverage
dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=opencover

# Generate coverage report
reportgenerator -reports:coverage.opencover.xml -targetdir:coveragereport

# Run only integration tests
dotnet test --filter Category=Integration

Test Strategy

  • Unit Tests (17) - TrajectoryService business logic with mocked dependencies
  • Integration Tests (6) - HTTP client tests using WireMock.Net for mocking external CalculationService
  • Test Coverage - Target >80% (Phase 6)

WireMock Integration: Integration tests use WireMock.Net to mock HTTP responses from CalculationService, following best practices:

  • CustomWebApplicationFactory - Overrides configuration to point to WireMock server
  • CalculationServiceMock - Pre-configured HTTP stubs matching real API contracts
  • IAsyncLifetime pattern - Proper lifecycle management with random port assignment

See ADR-007 for TDD implementation details.

🐳 Docker & Kubernetes

Build containers

docker-compose build

Deploy to local Kubernetes

kubectl apply -f k8s/

Push to GitHub Container Registry

docker tag interstellar-tracker/api-gateway ghcr.io/YOUR_USERNAME/interstellar-tracker-api-gateway:latest
docker push ghcr.io/YOUR_USERNAME/interstellar-tracker-api-gateway:latest

🌐 Deployment

Local (Docker Desktop)

docker-compose up

Azure Kubernetes Service (AKS)

See deployment documentation for full Azure setup with:

  • Azure Kubernetes Service (AKS)
  • Azure Container Registry
  • Azure AD B2C for social authentication
  • Application Insights for monitoring

🤝 Contributing

We welcome contributions! This project is designed to be learning-friendly.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'feat: add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

See CONTRIBUTING.md for detailed guidelines.

📊 Project Status

Current Phase: 1 - Documentation (~35-40% complete overall)

Phase Component Status Coverage
✅ 0 Infrastructure 80% Azure deployed, Terraform, App Insights
✅ 0 CalculationService 70% Hyperbolic orbits, tests
✅ 0 API Gateway (YARP) 60% Routing, telemetry
📝 1 Documentation IN PROGRESS System overview, ADRs, getting-started
⏳ 2 VisualizationService 0% Planned
⏳ 3 Microservices Decomposition 0% Planned
⏳ 4 Event-Driven (RabbitMQ) 0% Planned
⏳ 5 SonarQube Quality Gates 0% Planned
⏳ 6 TDD + 80% Coverage 30% Target 80%
⏳ 7 General Review 0% Final phase

Progress: ROADMAP.md | Azure: Portal Dashboard

Test Coverage

  • Current: ~30% (xUnit tests in Domain, Application)
  • Target: >80% (Phase 6 - TDD adoption)
  • Quality Gate: SonarQube (Phase 5)

📝 License

This project is licensed under the MIT License - see the LICENSE file for details.

🙏 Acknowledgments

  • 2I/Borisov orbital data - JPL Small-Body Database
  • Silk.NET - Modern .NET OpenGL bindings
  • Keycloak - Open-source identity and access management
  • Clean Architecture - Robert C. Martin's architectural pattern

📧 Contact


Built with ❤️ for learning and exploring the cosmos 🚀

About

3D visualization engine for simulating and tracking the trajectories of interstellar visitors — including ʻOumuamua, 2I/Borisov, 3I/ATLAS, and future exotic objects as they pass through our solar system.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •