Running GSM Application locally requires Docker, an accessible SQL Server instance, and about ten minutes for the initial image build. The full stack — frontend, gateway, and three microservices — is defined in a singleDocumentation 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.
docker-compose.yml at the repository root, so a single command brings everything up once the environment and databases are ready.
Prerequisites
Before you begin, make sure the following are available on your machine:- Docker Desktop 4.x or later (includes Docker Compose v2). Verify with
docker compose version. - SQL Server — either a local SQL Server instance, SQL Server Express, Azure SQL, or a Docker-hosted SQL Server container accessible from your machine. The services use
TrustServerCertificate=Trueso a self-signed certificate is fine. - Git to clone the repository.
Setup Steps
Clone the repository
Clone the GSM Application monorepo and navigate to the root directory where
docker-compose.yml lives.Create and configure your .env file
Copy the provided example file to Open Fill in the two required values:
.env. This file is read by Docker Compose at startup to inject secrets into each container..env in your editor. The file looks like this out of the box:JWT_SECRET— choose a long random string (at least 32 characters). Every service shares this secret to sign and validate JWTs, so it must be identical across all containers.DB_MASTER_URL— replaceYOUR_SERVER,YOUR_USER, andYOUR_PASSWORDwith your SQL Server connection details. TheDatabasefield should beTenantRegistryDb(the registry database you will create in the next step).
Provision the tenant registry and tenant databases
Before the microservices can start, the
TenantRegistryDb database must exist and contain at least one active tenant row. Follow the Database Setup guide to:- Create
TenantRegistryDband theTenantstable. - Create at least one tenant database (e.g.,
Auth_IH001_Db) with theUserstable. - Insert a row into
Tenantspointing to that tenant database.
gsmauth service will fail its health check and the gateway will not start if TenantRegistryDb does not exist or DB_MASTER_URL is incorrect.Build images and start all services
From the repository root, run:Docker Compose will build all five images in parallel and then start them in dependency order:
gsmauth,gsmapplication, andgsmoperationsstart first.gatewaystarts only after all three microservices report healthy.frontendstarts only aftergatewayreports healthy.
Verify all services are healthy
Once the stack is running, confirm each service is reachable:Frontend SPAYou should see the GSM Application login page. The locale prefix (Expected response: All five services should show
/en/ or /es/) will be applied automatically based on browser language.Gateway health endpoint200 OK with a health status body.Check individual microservice health through the gatewayThe microservices are not directly exposed, but you can verify them via Docker:healthy in the STATUS column. If any show starting or unhealthy, check logs:Service URLs at a Glance
| Service | URL | Notes |
|---|---|---|
| Frontend | http://localhost:3000 | React SPA, served by Nginx |
| Gateway | http://localhost:80 | Single entry point for all API calls |
| Gateway health | http://localhost/api/health | |
| Login endpoint | http://localhost/api/security/v1/auth/login | Proxied to gsmauth |
| Application API | http://localhost/api/application/v1/application/getMenu | Requires Bearer token |
| Operations API | http://localhost/api/operations/... | Requires Bearer token |
The microservices (
gsmauth:8081, gsmapplication:8082, gsmoperations:8083) are only accessible within the gsm-network Docker bridge. They are not bound to any host port intentionally — all traffic must flow through the gateway.