# islambek996/teksher-api architecture

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

- Interactive diagram: https://gitdiagram.com/islambek996/teksher-api
- Repository: https://github.com/islambek996/teksher-api

## Overview

Teksher MZKM is a Spring API for login and barcode scan management. A client can submit credentials and receive a JWT after user lookup and password verification, or manage scans through the scan controller; listing scans parses GS1 fields, and export returns CSV. The scan controller accesses its repository directly; the separate ScanService is not shown in the sampled controller’s request path. The README gives no further product detail, and security configuration and the admin page were not sampled, so their wiring is not inferred.

Main entry points: [`src/main/java/kg/teksher/api/service/AuthService.java`](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/service/AuthService.java) (Auth service), [`src/main/java/kg/teksher/api/controller/ScanController.java`](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/controller/ScanController.java) (Scan controller), [`src/main/java/kg/teksher/api/repository/ScanRepository.java`](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/repository/ScanRepository.java) (Scan repository), [`src/main/java/kg/teksher/api/controller/AuthController.java`](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/controller/AuthController.java) (Auth controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Authentication"]
  node_auth_controller["Auth controller"]
  node_auth_service["Auth service<br/>[AuthService.java]"]
  node_jwt["JWT service<br/>[JwtService.java]"]
end

subgraph group_scans["Scan management"]
  node_scan_controller["Scan controller"]
  node_gs1["GS1 parser<br/>[Gs1Parser.java]"]
  node_scan_service["Scan service<br/>[ScanService.java]"]
  node_admin_page["Admin page<br/>[index.html]"]
end

subgraph group_data["Data access"]
  node_scan_repo["Scan repository"]
  node_user_repo["User repository"]
  node_scan_entity["Scan entity<br/>[Scan.java]"]
  node_user_entity["User entity<br/>[User.java]"]
  node_database[("Application database")]
end

node_client(("API client"))

node_client -->|"submits login"| node_auth_controller
node_auth_controller -->|"delegates login"| node_auth_service
node_auth_service -->|"looks up user"| node_user_repo
node_auth_service -->|"generates token"| node_jwt
node_client -->|"manages scans"| node_scan_controller
node_scan_controller -->|"reads and writes"| node_scan_repo
node_scan_controller -->|"parses scans"| node_gs1
node_scan_service -->|"reads and writes"| node_scan_repo
node_user_repo -->|"persists users"| node_database
node_scan_repo -->|"persists scans"| node_database

click node_auth_controller "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/controller/AuthController.java"
click node_auth_service "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/service/AuthService.java"
click node_jwt "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/security/JwtService.java"
click node_scan_controller "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/controller/ScanController.java"
click node_gs1 "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/util/Gs1Parser.java"
click node_scan_service "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/service/ScanService.java"
click node_scan_repo "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/repository/ScanRepository.java"
click node_user_repo "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/repository/UserRepository.java"
click node_scan_entity "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/entity/Scan.java"
click node_user_entity "https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/entity/User.java"
click node_admin_page "https://github.com/islambek996/teksher-api/blob/main/src/main/resources/static/admin/index.html"

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_auth_controller,node_auth_service,node_jwt,node_client toneBlue
class node_scan_controller,node_gs1,node_scan_service,node_admin_page toneAmber
class node_scan_repo,node_user_repo,node_scan_entity,node_user_entity,node_database toneMint
```

## Components

### Authentication

- [Auth controller](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/controller/AuthController.java): `src/main/java/kg/teksher/api/controller/AuthController.java`
- [Auth service](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/service/AuthService.java): `src/main/java/kg/teksher/api/service/AuthService.java`
- [JWT service](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/security/JwtService.java): `src/main/java/kg/teksher/api/security/JwtService.java`

### Scan management

- [Scan controller](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/controller/ScanController.java): `src/main/java/kg/teksher/api/controller/ScanController.java`
- [GS1 parser](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/util/Gs1Parser.java): `src/main/java/kg/teksher/api/util/Gs1Parser.java`
- [Scan service](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/service/ScanService.java): `src/main/java/kg/teksher/api/service/ScanService.java`
- [Admin page](https://github.com/islambek996/teksher-api/blob/main/src/main/resources/static/admin/index.html): `src/main/resources/static/admin/index.html`

### Data access

- [Scan repository](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/repository/ScanRepository.java): `src/main/java/kg/teksher/api/repository/ScanRepository.java`
- [User repository](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/repository/UserRepository.java): `src/main/java/kg/teksher/api/repository/UserRepository.java`
- [Scan entity](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/entity/Scan.java): `src/main/java/kg/teksher/api/entity/Scan.java`
- [User entity](https://github.com/islambek996/teksher-api/blob/main/src/main/java/kg/teksher/api/entity/User.java): `src/main/java/kg/teksher/api/entity/User.java`
- **Application database**

### Other components

- **API client**

## Connections

- API client → Auth controller: submits login
- Auth controller → Auth service: delegates login
- Auth service → User repository: looks up user
- Auth service → JWT service: generates token
- API client → Scan controller: manages scans
- Scan controller → Scan repository: reads and writes
- Scan controller → GS1 parser: parses scans
- Scan service → Scan repository: reads and writes
- User repository → Application database: persists users
- Scan repository → Application database: persists scans
