Skip to content

Architecture Overview

Umboni uses a pipeline architecture so that each language does the job it is best suited for.

Python fetch layer

The Python layer exists because HTTP requests and JSON normalization are much easier in Python than in raw Fortran.

Responsibilities:

  • Call multiple free weather APIs.
  • Convert different provider payloads into one shared schema.
  • Write a deterministic CSV file for the Fortran engine.
  • Emit structured JSON-line logs.

Key files:

Fortran simulation engine

The Fortran layer exists to demonstrate a strongly structured numerical engine in a language still used in scientific computing.

Responsibilities:

  • Read normalized CSV rows.
  • Apply provider weights.
  • Smooth abrupt hour-to-hour jumps.
  • Produce a single JSON forecast artifact for the frontend.

Key files:

Angular visualization layer

The Angular layer exists because weather data is easier to understand when it is visual.

Responsibilities:

  • Fetch the latest forecast document.
  • Present summary cards for beginners.
  • Render per-location mini visualizations and hourly tables.
  • Keep the UI type-safe and testable.

Key files: