Our technologies
SWeather turns data from spacecraft and observatories into space weather forecasts, automatically and around the clock. A small team builds it on a current .NET platform.
Architecture
The system is split into independent parts, so each can change without breaking the others.
- A modular monolith: one service made of independent modules.
- Each module has its own contracts, domain, data and API layers.
- Modules talk through a source-generated in-process mediator and through integration events on a message bus.
- Architecture tests fail the build when one module depends on another.
Modern platform
We build on current versions of our tools and keep the code strict.
- .NET 11 with runtime async and nullable reference types everywhere.
- ASP.NET Core with Minimal API, OpenAPI and versioned endpoints, as well as Blazor Server.
- Microsoft Aspire for the local environment.
- Entity Framework Core and Dapper for data access.
- A strict build: every warning is an error, code style is checked in the build.
- Multilingual: Russian, English, Chinese, Finnish and Norwegian.
Artificial intelligence
AI helps explain space weather, and AI agents can use our data.
- Microsoft.Extensions.AI and OpenAI-compatible clients.
- Microsoft Agent Framework.
- DeepL.
- Tesseract OCR.
- An MCP server with tools for AI agents.
Storage and messaging
Each kind of data lives in the storage that suits it.
- PostgreSQL with PostGIS.
- ClickHouse.
- Garnet and a two-level hybrid cache.
- RustFS, an S3-compatible object storage.
- RabbitMQ and Rebus.
Performance
Heavy calculations run fast and do not waste memory.
- SIMD vectorization and FMA instructions in Geopack.
- Geopack computations and data parsers without memory allocations.
- NativeAOT: Geopack is a native library that Python uses without .NET.
Visualization
Charts and maps are drawn on the server automatically.
- Our own library built on ScottPlot; charts in WebP.
Tests
Every change is checked automatically before it reaches users.
- Unit tests in every repository.
- Integration tests with PostgreSQL, RabbitMQ and S3 storage in containers.
- Architecture tests and dependency container tests.
- Chart rendering tests.
- BenchmarkDotNet benchmarks against performance regressions.
Containers and operations
The system ships in containers and reports its own health.
- Docker images built in stages; the build is automated with Fallout.
- OpenTelemetry, Prometheus, Loki, Tempo and Grafana; health checks and business metrics.
- A diagnostics sidecar collects memory dumps and traces without stopping the service.
- CI checks style, builds, tests and publishes every change.
Open source
We support open source: our scientific and infrastructure libraries are published openly on GitHub, NuGet.org and PyPI.