# ayushmancodes2004/finroute architecture

> Architecture diagram of the GitHub repository ayushmancodes2004/finroute, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-15). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ayushmancodes2004/finroute
- Repository: https://github.com/ayushmancodes2004/finroute

## Overview

This repository contains two Spring services: an API-management service for platform organizations, tenant administrators, and management-user authentication, plus a smart-gateway service with a health endpoint and authenticated access policy. The main workflow is platform administration creating or changing an organization and provisioning its tenant administrator; users can separately log in to receive a JWT. Source excerpts show the management controllers, services, and repository calls. Gateway routing behavior and API-management security wiring were not sampled, so they are not inferred here.

Main entry points: [`api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java`](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java) (Organization service), [`api-management-service/src/main/java/in/finroute/apigateway/management/service/AuthenticationService.java`](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/service/AuthenticationService.java) (Authentication service), [`api-management-service/src/main/java/in/finroute/apigateway/management/controller/PlatformOrganizationController.java`](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/controller/PlatformOrganizationController.java) (Organization API), [`api-management-service/src/main/java/in/finroute/apigateway/management/controller/AuthenticationController.java`](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/controller/AuthenticationController.java) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_management["API management"]
  node_api_controller["Organization API"]
  node_org_service["Organization service"]
  node_auth_controller["Authentication API"]
  node_auth_service["Authentication service"]
  node_api_health["Management health<br/>[HealthService.java]"]
end

subgraph group_domain["Management domain"]
  node_org_store[("Organizations")]
  node_user_store[("Management users")]
  node_role_store[("Roles")]
  node_domain_models["Domain entities"]
  node_org_dtos["Organization DTOs"]
  node_login_dtos["Login DTOs"]
  node_sql_database[("Management database")]
end

subgraph group_gateway["Smart gateway"]
  node_gateway_security["Gateway security"]
  node_gateway_health["Gateway health API"]
  node_health_response["Health response"]
end

node_platform_admin(("Platform operator"))
node_login_actor(("Management user"))
node_password_encoder["Password encoder"]
node_jwt_encoder["JWT encoder"]
node_gateway_client(("Gateway client"))

node_platform_admin -->|"manages"| node_api_controller
node_api_controller -->|"dispatches"| node_org_service
node_org_service -->|"reads/writes"| node_org_store
node_org_service -->|"reads/writes"| node_user_store
node_org_service -->|"looks up"| node_role_store
node_org_service -->|"encodes password"| node_password_encoder
node_login_actor -->|"logs in"| node_auth_controller
node_auth_controller -->|"dispatches"| node_auth_service
node_auth_service -->|"loads user"| node_user_store
node_auth_service -->|"checks password"| node_password_encoder
node_auth_service -->|"signs token"| node_jwt_encoder
node_api_health -->|"checks connection"| node_sql_database
node_gateway_client -->|"requests health"| node_gateway_health
node_gateway_health -->|"returns"| node_health_response

click node_api_controller "https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/controller/PlatformOrganizationController.java"
click node_org_service "https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java"
click node_org_store "https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/repository/OrganizationRepository.java"
click node_user_store "https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/repository/ManagementUserRepository.java"
click node_role_store "https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/repository/RoleRepository.java"
click node_domain_models "https://github.com/ayushmancodes2004/finroute/tree/main/api-management-service/src/main/java/in/finroute/apigateway/management/entity"
click node_org_dtos "https://github.com/ayushmancodes2004/finroute/tree/main/api-management-service/src/main/java/in/finroute/apigateway/management/dto"
click node_auth_controller "https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/controller/AuthenticationController.java"
click node_auth_service "https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/service/AuthenticationService.java"
click node_login_dtos "https://github.com/ayushmancodes2004/finroute/tree/main/api-management-service/src/main/java/in/finroute/apigateway/management/dto"
click node_api_health "https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/service/HealthService.java"
click node_gateway_security "https://github.com/ayushmancodes2004/finroute/blob/main/smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/config/SecurityConfig.java"
click node_gateway_health "https://github.com/ayushmancodes2004/finroute/blob/main/smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/controller/HealthController.java"
click node_health_response "https://github.com/ayushmancodes2004/finroute/blob/main/smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/dto/HealthResponse.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_api_controller,node_org_service,node_auth_controller,node_auth_service,node_api_health,node_login_actor,node_gateway_client toneBlue
class node_org_store,node_user_store,node_role_store,node_domain_models,node_org_dtos,node_login_dtos,node_sql_database toneAmber
class node_gateway_security,node_gateway_health,node_health_response toneMint
class node_platform_admin,node_password_encoder,node_jwt_encoder toneIndigo
```

## Components

### API management

- [Organization API](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/controller/PlatformOrganizationController.java): `api-management-service/src/main/java/in/finroute/apigateway/management/controller/PlatformOrganizationController.java`
- [Organization service](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java): `api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java`
- [Authentication API](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/controller/AuthenticationController.java): `api-management-service/src/main/java/in/finroute/apigateway/management/controller/AuthenticationController.java`
- [Authentication service](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/service/AuthenticationService.java): `api-management-service/src/main/java/in/finroute/apigateway/management/service/AuthenticationService.java`
- [Management health](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/service/HealthService.java): `api-management-service/src/main/java/in/finroute/apigateway/management/service/HealthService.java`

### Management domain

- [Organizations](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/repository/OrganizationRepository.java): `api-management-service/src/main/java/in/finroute/apigateway/management/repository/OrganizationRepository.java`
- [Management users](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/repository/ManagementUserRepository.java): `api-management-service/src/main/java/in/finroute/apigateway/management/repository/ManagementUserRepository.java`
- [Roles](https://github.com/ayushmancodes2004/finroute/blob/main/api-management-service/src/main/java/in/finroute/apigateway/management/repository/RoleRepository.java): `api-management-service/src/main/java/in/finroute/apigateway/management/repository/RoleRepository.java`
- [Domain entities](https://github.com/ayushmancodes2004/finroute/tree/main/api-management-service/src/main/java/in/finroute/apigateway/management/entity): `api-management-service/src/main/java/in/finroute/apigateway/management/entity`
- [Organization DTOs](https://github.com/ayushmancodes2004/finroute/tree/main/api-management-service/src/main/java/in/finroute/apigateway/management/dto): `api-management-service/src/main/java/in/finroute/apigateway/management/dto`
- [Login DTOs](https://github.com/ayushmancodes2004/finroute/tree/main/api-management-service/src/main/java/in/finroute/apigateway/management/dto): `api-management-service/src/main/java/in/finroute/apigateway/management/dto`
- **Management database**

### Smart gateway

- [Gateway security](https://github.com/ayushmancodes2004/finroute/blob/main/smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/config/SecurityConfig.java): `smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/config/SecurityConfig.java`
- [Gateway health API](https://github.com/ayushmancodes2004/finroute/blob/main/smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/controller/HealthController.java): `smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/controller/HealthController.java`
- [Health response](https://github.com/ayushmancodes2004/finroute/blob/main/smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/dto/HealthResponse.java): `smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/dto/HealthResponse.java`

### Other components

- **Platform operator**
- **Management user**
- **Password encoder**
- **JWT encoder**
- **Gateway client**

## Connections

- Platform operator → Organization API: manages (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/controller/PlatformOrganizationController.java`)
- Organization API → Organization service: dispatches (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/controller/PlatformOrganizationController.java`)
- Organization service → Organizations: reads/writes (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java`)
- Organization service → Management users: reads/writes (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java`)
- Organization service → Roles: looks up (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java`)
- Organization service → Password encoder: encodes password (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/service/OrganizationService.java`)
- Management user → Authentication API: logs in (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/controller/AuthenticationController.java`)
- Authentication API → Authentication service: dispatches (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/controller/AuthenticationController.java`)
- Authentication service → Management users: loads user (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/service/AuthenticationService.java`)
- Authentication service → Password encoder: checks password (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/service/AuthenticationService.java`)
- Authentication service → JWT encoder: signs token (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/service/AuthenticationService.java`)
- Management health → Management database: checks connection (evidence: `api-management-service/src/main/java/in/finroute/apigateway/management/service/HealthService.java`)
- Gateway client → Gateway health API: requests health (evidence: `smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/controller/HealthController.java`)
- Gateway health API → Health response: returns (evidence: `smart-gateway-service/src/main/java/in/finroute/apigateway/gateway/controller/HealthController.java`)
