/NEXUS

Open-Source Project KONGOR Re-Write

Primary LanguageC#GNU Affero General Public License v3.0AGPL-3.0

Unit/Integration Tests Work Items Code Contributors Total Commits GitHub Sponsors

NEXUS

The full suite of Project KONGOR services, architected as an open-source cloud-ready distributed application.

If you would like to support the development of this project and buy me a coffee, please consider one of the following options: GitHub Sponsors, PayPal. 💚


Non-Code Dependencies

Important

The editions suggested in parentheses are for development purposes only. Commercial usage will likely require paid tiers of these software products.


Concise Instructions For Developers

Run In Development

# In The Context Of The Solution Directory
dotnet run --project ASPIRE.AppHost --launch-profile "Project KONGOR Development"

Run In Production

# In The Context Of The Solution Directory
dotnet run --project ASPIRE.AppHost --launch-profile "Project KONGOR Production"

Note

If no launch profile is specified, then the first profile in launchSettings.json will be used. Normally, this default profile is a development profile, which allows developers to run the project quickly by executing just dotnet run without specifying a launch profile.


Create A Database Schema Migration

  1. install the Entity Framework Core CLI by executing dotnet tool install --global dotnet-ef or update it by executing dotnet tool update --global dotnet-ef
  2. in the context of the solution directory, execute dotnet ef migrations add {MigrationName} --project MERRICK.Database

Update The Database Schema

# Development Database
# In The Context Of The Solution Directory
$ENV:ASPNETCORE_ENVIRONMENT = "Development"
dotnet ef database update --project MERRICK.Database
# Production Database
# In The Context Of The Solution Directory
$ENV:ASPNETCORE_ENVIRONMENT = "Production"
dotnet ef database update --project MERRICK.Database

Note

Updating the database schema manually is only required during development, when there is a potential for database schema migrations to fail. If the migrations are stable, then manually updating the database can be skipped, as that happens automatically at runtime. This also means that a database will be fully scaffolded at runtime if it does not already exist.


Generate .NET Aspire Deployment Artefacts & Deploy To Azure/Kubernetes

Note

Azure deployments require the Azure Developer CLI, and Kubernetes deployments require Aspir8. The documentation of each tool should be inspected for more complex deployment configurations.

# Azure
winget install microsoft.azd

# In The Context Of The ASPIRE.AppHost Project Directory
azd init
azd up
# Kubernetes
dotnet tool install -g aspirate

# In The Context Of The ASPIRE.AppHost Project Directory
aspirate init
aspirate generate
aspirate apply
# Manifest
# In The Context Of The Solution Directory
dotnet run --project ASPIRE.AppHost\ASPIRE.AppHost.csproj -- --publisher manifest --output-path manifest.json

Install/Update .NET Aspire

Note

The Aspire NuGet packages referenced by the respective projects need to be in-sync with the Aspire dotnet workload.

# Install
dotnet workload install aspire
# Update
dotnet workload update
# Check The Installed Version
dotnet workload list

Note

Mode in-depth information is available here: https://learn.microsoft.com/en-gb/dotnet/aspire/fundamentals/setup-tooling.


Debug HTTP Traffic With Fiddler

  1. launch Project KONGOR in development mode, by using the ASPIRE.AppHost Development profile
  2. start the HoN client with the following command line parameters: -masterserver 127.0.0.1:8888 -webserver 127.0.0.1:8888 -messageserver 127.0.0.1:8888; to proxy the the HoN server through Fiddler, set the master server to 127.0.0.1:8888 in the COMPEL configuration file
  3. in Fiddler, in the bottom-left corner, make sure that the application type filter is set to All Processes
  4. in Fiddler, click in the bottom-left corner to disable traffic capturing, which removes the noise from implicitly captured traffic; anything explicitly sent to the Fiddler proxy with default port 8888 will still be captured
  5. in Fiddler, go to Rules > Customize Rules, then Go > to OnBeforeRequest, and add oSession.url = oSession.url.Replace("127.0.0.1:8888", "127.0.0.1:55555"); and oSession.url = oSession.url.Replace("0.0.0.0:8888", "127.0.0.1:55555"); to forward traffic to the Project KONGOR development server once it's been captured

Comprehensive Instructions For Non-Developers

  1. ??? (coming soon™)
  2. Play HoN !