Skip to content

Core Components of the Equation Platform ​

This section outlines the primary building blocks that make up the Equation platform. Each component plays a distinct role in enabling reusable, secure, and scalable calculation services across Haskoning's digital landscape.

1. Calculation Packages ​

These are the source of all engineering logic.

They are:

  • Written in Python
  • Developed and owned by domain experts
  • Structured for deterministic, testable computation
  • Intended to be wrapped by an API layer for exposure

💡 Note: Most calculation packages are written in Python because it's popular among our teams. However, you can use any programming language — as long as it can expose an API using an OpenAPI specification. Example: A Python package that calculates Nereda tank dimensions.

2. API Layer ​

This is a custom-built service (e.g. using FastAPI or Django) that:

  • Wraps the Python calculation package
  • Defines input/output schemas
  • Serves an OpenAPI specification for integration
  • Handles request validation and version control

This layer translates pure calculation logic into a structured, network-accessible interface.

3. API Management (APIM) ​

A centralized Azure-hosted component that provides:

  • Routing and public exposure of selected APIs
  • Integrated authentication via Azure Entra ID
  • Rate limiting, logging, monitoring, and alerting (#TODO not available yet)
  • Policy enforcement (e.g. CORS, IP whitelisting)
  • Developer portal for API discovery and documentation

APIs are not exposed directly — all requests go through this secure gateway.

4. Clients ​

Prebuilt clients that allow non-developers and integrators to use the APIs:

  • Equation Python Package: A user-friendly interface to call any published API from Python scripts or notebooks. ( #TODO not available yet)
  • WaterFuser Web Client: A browser-based interface focused on engineering workflows, including Speckle model handling.
  • Excel Client: Allows engineers to run calculations from familiar Excel environments.
  • Grasshopper Plugin: Enables Rhino users to integrate live API calls in parametric workflows.

Each client supports the same APIs through shared OpenAPI specs.

5. Supporting Infrastructure ​

This includes the pipelines, environments, and governance rules that tie everything together:

  • CI/CD pipelines triggered by Git updates
  • Infrastructure-as-Code using Terraform
  • Separation between Acceptance and Production environments
  • Managed Identities for secure role-based deployments

This layer ensures that deployments are auditable, secure, and automated.