GSM Application is a production-ready, multi-tenant platform designed for agricultural operations — managing herb products, employee assignments, supplier relationships, and harvest transactions. It is built on a database-per-tenant architecture where each company (tenant) has its own isolated SQL Server database, resolved dynamically at runtime through a central tenant registry.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.
Local Setup
Get the full stack running locally with Docker Compose in minutes
Architecture
Understand the gateway, microservices, and tenant isolation model
API Reference
Explore all REST endpoints across Auth, Application, and Operations services
Multi-Tenancy
Learn how tenant resolution, per-tenant databases, and theming work
Platform Overview
GSM Application consists of four independently deployable services that work together:GSM Gateway
YARP-based reverse proxy that validates JWT tokens and injects the tenant identity header into every upstream request
GSM Auth
Authentication microservice handling login, logout, and tenant resolution with per-tenant database lookup
GSM Application
Menu, multimedia resources, user management, and configurable API integration rules
GSM Operations
Master products, employees, suppliers, categories, SKU definitions, and transaction management
Get Running in 3 Steps
Clone and configure
Copy
.env.example to .env and fill in your SQL Server connection string and JWT secret.Provision the database
Create the
TenantRegistryDb database and at least one tenant record. SQL scripts are included in the repository under each service’s readme/ folder.Start all services
Docker Compose builds and starts all five containers — frontend, gateway, and three microservices.The frontend is available at http://localhost:3000.
Each tenant must have its own database pre-created and registered in
TenantRegistryDb.Tenants before users can log in. See Database Setup for details.