Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ti-infinite/GSMApplication/llms.txt

Use this file to discover all available pages before exploring further.

GSM Application uses environment variables as the single configuration surface for secrets, connection strings, and service-discovery addresses. Variables are injected at container start time from the root .env file (for Docker Compose deployments) or from the CI/CD environment secrets (for cloud deployments). Build-time variables for the React frontend are baked into the compiled bundle by Vite and cannot be changed without rebuilding the image.
JWT_SECRET must be identical in the gateway, gsmauth, gsmapplication, and gsmoperations services. If any service uses a different value, JWT validation will fail with 401 Unauthorized for requests routed to that service. There is no runtime error at startup — the mismatch only manifests on the first authenticated request.

Shared Secrets

These variables are consumed by multiple services and must have the same value in each.
JWT_SECRET
string
required
Shared HMAC signing secret used to sign and validate JWTs. Must be identical across gateway, gsmauth, gsmapplication, and gsmoperations. Use a cryptographically random string of at least 32 characters.Default (insecure placeholder): gsm-auth-secret-key-change-in-production-2026Example:
JWT_SECRET=s3cur3-gsm-jwt-s3cr3t-key-change-this-2026!
DB_MASTER_URL
string
required
ADO.NET connection string for the central TenantRegistryDb SQL Server database. Used by gsmauth, gsmapplication, and gsmoperations to look up per-tenant connection details. The Database field should be TenantRegistryDb.Format: Server=<host>;User ID=<user>;Password=<password>;Database=TenantRegistryDb;TrustServerCertificate=TrueExample:
DB_MASTER_URL=Server=192.168.1.50,1433;User ID=sa;Password=MyP@ss!;Database=TenantRegistryDb;TrustServerCertificate=True
TrustServerCertificate=True is required when the SQL Server instance uses a self-signed TLS certificate. For production deployments with a CA-signed certificate, you can omit this flag or set it to False.

JWT Settings

These variables configure the JWT token parameters. They are set as environment variables in docker-compose.yml for gsmauth, gsmapplication, and gsmoperations. The gateway reads JwtSettings.Issuer and JwtSettings.Audience from its own appsettings.json (hardcoded to GSMAuth and GSMClients), so those two variables are not passed to the gateway container via the environment.
JwtSettings__Issuer
string
The iss claim written into every JWT by gsmauth and validated by gsmapplication and gsmoperations. The double-underscore (__) is the ASP.NET Core convention for nested configuration keys.
The gateway does not consume this as an environment variable. Its issuer value is read from appsettings.json ("Issuer": "GSMAuth"). Only the three microservices receive this variable via docker-compose.yml.
Default: GSMAuthExample:
JwtSettings__Issuer=GSMAuth
JwtSettings__Audience
string
The aud claim written into every JWT by gsmauth and validated by gsmapplication and gsmoperations.
The gateway does not consume this as an environment variable. Its audience value is read from appsettings.json ("Audience": "GSMClients"). Only the three microservices receive this variable via docker-compose.yml.
Default: GSMClientsExample:
JwtSettings__Audience=GSMClients
JwtSettings__ExpirationMinutes
integer
Token lifetime in minutes from the moment of issuance. After expiry, the gateway will reject requests with 401 Unauthorized and the client must re-authenticate.Default: 240 (4 hours)Example:
JwtSettings__ExpirationMinutes=240

ASP.NET Core Runtime Settings

ASPNETCORE_ENVIRONMENT
string
Controls the ASP.NET Core runtime behaviour. Use Production for deployed environments (disables detailed error pages, enables performance optimisations) and Development for local debugging (enables Swagger UI, detailed exceptions).Allowed values: Production, Development, StagingDefault in docker-compose.yml: Production
ASPNETCORE_URLS
string
The HTTP listen address for each ASP.NET Core service. The + wildcard binds to all network interfaces inside the container.
ServiceValue
gatewayhttp://+:80
gsmauthhttp://+:8081
gsmapplicationhttp://+:8082
gsmoperationshttp://+:8083
Example:
ASPNETCORE_URLS=http://+:8081

Frontend Build Variables

These variables are resolved by Vite at image build time and embedded in the compiled JavaScript bundle. Changing them requires rebuilding the frontend Docker image.
VITE_TENANT_DEFAULT
string
The CompanyId pre-filled in the tenant field on the login page. Useful for single-tenant deployments or demo environments where users should not need to know their company code.Default: IH001Example:
VITE_TENANT_DEFAULT=IH001
VITE_TENANT_IDS
string
Comma-separated list of all valid CompanyId values known to the frontend. Used to populate tenant selection dropdowns and validate user input before making an API call.Default: IH001,AG001Example:
VITE_TENANT_IDS=IH001,AG001,GSM001

YARP Cluster Destination Addresses

The gateway uses YARP’s environment variable override pattern to configure the addresses of downstream microservice clusters at runtime. These override the values in appsettings.json and follow the ASP.NET Core hierarchical key syntax with __ as the section separator.
ReverseProxy__Clusters__gsmAuthCluster__Destinations__authDestination__Address
string
Full base URL of the gsmauth microservice as reachable from the gateway container. In Docker Compose, this is the Docker service name and internal port.Docker Compose value: http://gsmauth:8081/
ReverseProxy__Clusters__gsmApplicationCluster__Destinations__applicationDestination__Address
string
Full base URL of the gsmapplication microservice as reachable from the gateway container.Docker Compose value: http://gsmapplication:8082/
ReverseProxy__Clusters__gsmOperationsCluster__Destinations__operationsDestination__Address
string
Full base URL of the gsmoperations microservice as reachable from the gateway container.Docker Compose value: http://gsmoperations:8083/

Summary Table

The following table shows which variables are required by each service:
Variablegatewaygsmauthgsmapplicationgsmoperationsfrontend
JWT_SECRET
DB_MASTER_URL
JwtSettings__Issuer
JwtSettings__Audience
JwtSettings__ExpirationMinutes
ASPNETCORE_ENVIRONMENT
ASPNETCORE_URLS
ReverseProxy__Clusters__*
VITE_TENANT_DEFAULT✅ (build)
VITE_TENANT_IDS✅ (build)

Build docs developers (and LLMs) love