Skip to content

Development Environment Setup

Kevalkumar edited this page Jan 23, 2026 · 1 revision

Prerequisites

  • .NET SDK 8.0 or later
  • Git
  • A code editor (VS Code or Visual Studio 2022+)
  • Docker (optional, for containerized runs)
  • OpenTelemetry Collector (optional, for tracing/metrics)
  • Access to dependent AAS services (AAS Environment, Registry, Submodel Registry/Repository) or local test instances

Projects Overview

  • AAS.TwinEngine.DataEngine – main DataEngine API (net8.0)
  • AAS.TwinEngine.DataEngine.UnitTests – unit tests for DataEngine
  • AAS.TwinEngine.DataEngine.ModuleTests – module/integration tests for DataEngine
  • AAS.TwinEngine.Plugin.TestPlugin – example/test plugin API (net8.0)
  • AAS.TwinEngine.Plugin.TestPlugin.UnitTests – unit tests for the test plugin

Local Setup Instructions

1. Clone the repository

git clone https://github.com/AAS-TwinEngine/AAS.TwinEngine.DataEngine.git
cd AAS.TwinEngine.DataEngine/source

2. Restore dependencies

dotnet restore AAS.TwinEngine.DataEngine.sln

3. Build the solution

dotnet build AAS.TwinEngine.DataEngine.sln

4. Run the Test Plugin API

dotnet run --project AAS.TwinEngine.Plugin.TestPlugin/AAS.TwinEngine.Plugin.TestPlugin.csproj

The test plugin:

  • Exposes versioned API (header api-version)
  • Also exposes Swagger UI and OpenAPI JSON

5. Setup Template Repository / Registry

A template repository is required so DataEngine can retrieve AAS templates.

Option A – Use the provided template repository & registries (recommended)

From the repository root:

cd example
docker compose up -d

This starts the example template repository and the AAS/Submodel registries defined in example/docker-compose.yml.

If you change ports:

  • Adjust the port mappings in example/docker-compose.yml.
  • Update the same ports in example/nginx/default.conf.template and any related environment variables in the compose file.

Option B – Use your own template service

You can also run your own template repository and registries and configure their URLs in the AAS environment section in the DataEngine settings:

  • Update the AasEnvironment section in source/AAS.TwinEngine.DataEngine/appsettings.json (and appsettings.Development.json if used) to point to your template/AAS services (e.g. AasEnvironmentRepositoryBaseUrl, AasRegistryBaseUrl, SubModelRepositoryPath, etc.).

DataEngine will then use the configured template repository to load templates at runtime.

6. Run the main DataEngine API

From the source folder:

dotnet run --project AAS.TwinEngine.DataEngine/AAS.TwinEngine.DataEngine.csproj

The API is configured as an ASP.NET Core Web API with API versioning and OpenAPI/Swagger enabled. By default, it:

  • Exposes health check at /healthz

Swagger UI is available at:

  • /swagger (UI)
  • /swagger/1.0/swagger.json (OpenAPI document)

Development Workflow

  • Edit code in the main project or plugin projects.
  • Run unit tests regularly with dotnet test.
  • Use Swagger UI to manually verify API endpoints and contracts.
  • Use health checks (/healthz) to verify plugin manifest and dependency state.
  • For plugin development, keep the plugin API running and reference it via PluginConfig in the DataEngine configuration.

For iterative development, use dotnet watch run on the main project and/or plugin projects for automatic rebuild and restart:

dotnet watch run --project AAS.TwinEngine.DataEngine/AAS.TwinEngine.DataEngine.csproj

Clone this wiki locally