# mesuttekgoz0/printer_tracer architecture

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

- Interactive diagram: https://gitdiagram.com/mesuttekgoz0/printer_tracer
- Repository: https://github.com/mesuttekgoz0/printer_tracer

## Overview

Printer_Tracer is an internal printer-counter tracking system: users manage printers, trigger manual SNMP readings, review usage reports, and generate frozen, priced supplier settlement documents. The Next.js interface calls an ASP.NET JSON API; its services coordinate SNMP and repository access to SQL Server. The README documents the broader feature set, while sampled source confirms the reading/discovery orchestration and stored-procedure data layer. Some controller-to-repository and frontend route details are documented only at subsystem level, so those links cite the README.

Main entry points: [`Data/Repositories/SqlRepositoryBase.cs`](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/SqlRepositoryBase.cs) (Stored-procedure access), [`Services/PrinterReadingService.cs`](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Services/PrinterReadingService.cs) (Manual readings), [`Services/SnmpService.cs`](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Services/SnmpService.cs) (SNMP operations), [`Data/Repositories/PrinterRepository.cs`](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/PrinterRepository.cs) (Printer repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web interface"]
  node_printer_ui["Printer management<br/>[PrintersClient.tsx]"]
  node_reading_ui["Counter reading<br/>[ReadingsClient.tsx]"]
  node_report_ui["Usage reports<br/>[ReportClient.tsx]"]
  node_supplier_ui["Supplier management"]
  node_settlement_ui["Settlement documents"]
  node_diagnostics_ui["SNMP diagnostics"]
end

subgraph group_api["JSON API"]
  node_printers_api["Printers API"]
  node_readings_api["Readings API"]
  node_reports_api["Reports API"]
  node_suppliers_api["Suppliers API"]
  node_settlements_api["Settlements API"]
  node_discovery_api["Discovery API"]
  node_diagnostics_api["Diagnostics API"]
end

subgraph group_domain["Printer operations"]
  node_printer_ops["Printer discovery"]
  node_reading_ops["Manual readings"]
  node_snmp["SNMP operations<br/>[SnmpService.cs]"]
end

subgraph group_data["Data access"]
  node_printer_repo["Printer repository"]
  node_reading_repo["Reading repository"]
  node_supplier_repo["Supplier and pricing data<br/>[FiyatRepository.cs]"]
  node_settlement_repo["Settlement repository"]
  node_sql_layer["Stored-procedure access"]
end

subgraph group_infra["External systems"]
  node_sqlserver[("SQL Server")]
end

node_user(("Operator"))
node_network_printers(("Network printers"))

node_user -->|"manages"| node_printer_ui
node_user -->|"requests readings"| node_reading_ui
node_user -->|"reviews usage"| node_report_ui
node_user -->|"maintains suppliers"| node_supplier_ui
node_user -->|"creates documents"| node_settlement_ui
node_user -->|"diagnoses devices"| node_diagnostics_ui
node_printer_ui -->|"calls API"| node_printers_api
node_reading_ui -->|"calls API"| node_readings_api
node_report_ui -->|"calls API"| node_reports_api
node_supplier_ui -->|"calls API"| node_suppliers_api
node_settlement_ui -->|"calls API"| node_settlements_api
node_diagnostics_ui -->|"calls API"| node_diagnostics_api
node_printers_api -->|"uses repository"| node_printer_repo
node_readings_api -->|"invokes"| node_reading_ops
node_reports_api -.->|"queries readings"| node_reading_repo
node_suppliers_api -->|"uses repository"| node_supplier_repo
node_settlements_api -->|"uses repository"| node_settlement_repo
node_discovery_api -->|"invokes"| node_printer_ops
node_diagnostics_api -.->|"diagnoses via"| node_snmp
node_reading_ops -->|"loads printers"| node_printer_repo
node_reading_ops -->|"loads and saves readings"| node_reading_repo
node_reading_ops -->|"reads counters"| node_snmp
node_printer_ops -->|"probes hosts"| node_snmp
node_snmp -->|"queries SNMP"| node_network_printers
node_printer_repo -->|"uses"| node_sql_layer
node_reading_repo -.->|"uses"| node_sql_layer
node_supplier_repo -->|"uses"| node_sql_layer
node_settlement_repo -.->|"uses"| node_sql_layer
node_sql_layer -->|"executes procedures"| node_sqlserver

click node_printer_ui "https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/PrintersClient.tsx"
click node_reading_ui "https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/ReadingsClient.tsx"
click node_report_ui "https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/ReportClient.tsx"
click node_supplier_ui "https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/TedarikciDetailClient.tsx"
click node_settlement_ui "https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/HakedisYeniClient.tsx"
click node_diagnostics_ui "https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/DiagnosticsClient.tsx"
click node_printers_api "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/PrintersApiController.cs"
click node_readings_api "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/ReadingsApiController.cs"
click node_reports_api "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/ReportApiController.cs"
click node_suppliers_api "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/TedarikcilerApiController.cs"
click node_settlements_api "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/HakedislerApiController.cs"
click node_discovery_api "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/DiscoveryApiController.cs"
click node_diagnostics_api "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/DiagnosticsApiController.cs"
click node_printer_ops "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Services/PrinterDiscoveryService.cs"
click node_reading_ops "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Services/PrinterReadingService.cs"
click node_snmp "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Services/SnmpService.cs"
click node_printer_repo "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/PrinterRepository.cs"
click node_reading_repo "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/PrintReadingRepository.cs"
click node_supplier_repo "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/FiyatRepository.cs"
click node_settlement_repo "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/HakedisRepository.cs"
click node_sql_layer "https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/SqlRepositoryBase.cs"

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_printer_ui,node_reading_ui,node_report_ui,node_supplier_ui,node_settlement_ui,node_diagnostics_ui toneBlue
class node_printers_api,node_readings_api,node_reports_api,node_suppliers_api,node_settlements_api,node_discovery_api,node_diagnostics_api toneAmber
class node_printer_ops,node_reading_ops,node_snmp toneMint
class node_printer_repo,node_reading_repo,node_supplier_repo,node_settlement_repo,node_sql_layer toneRose
class node_sqlserver,node_user,node_network_printers toneIndigo
```

## Components

### Web interface

- [Printer management](https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/PrintersClient.tsx): `web/components/PrintersClient.tsx`
- [Counter reading](https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/ReadingsClient.tsx): `web/components/ReadingsClient.tsx`
- [Usage reports](https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/ReportClient.tsx): `web/components/ReportClient.tsx`
- [Supplier management](https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/TedarikciDetailClient.tsx): `web/components/TedarikciDetailClient.tsx`
- [Settlement documents](https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/HakedisYeniClient.tsx): `web/components/HakedisYeniClient.tsx`
- [SNMP diagnostics](https://github.com/mesuttekgoz0/printer_tracer/blob/main/web/components/DiagnosticsClient.tsx): `web/components/DiagnosticsClient.tsx`

### JSON API

- [Printers API](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/PrintersApiController.cs): `Controllers/Api/PrintersApiController.cs`
- [Readings API](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/ReadingsApiController.cs): `Controllers/Api/ReadingsApiController.cs`
- [Reports API](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/ReportApiController.cs): `Controllers/Api/ReportApiController.cs`
- [Suppliers API](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/TedarikcilerApiController.cs): `Controllers/Api/TedarikcilerApiController.cs`
- [Settlements API](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/HakedislerApiController.cs): `Controllers/Api/HakedislerApiController.cs`
- [Discovery API](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/DiscoveryApiController.cs): `Controllers/Api/DiscoveryApiController.cs`
- [Diagnostics API](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Controllers/Api/DiagnosticsApiController.cs): `Controllers/Api/DiagnosticsApiController.cs`

### Printer operations

- [Printer discovery](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Services/PrinterDiscoveryService.cs): `Services/PrinterDiscoveryService.cs`
- [Manual readings](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Services/PrinterReadingService.cs): `Services/PrinterReadingService.cs`
- [SNMP operations](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Services/SnmpService.cs): `Services/SnmpService.cs`

### Data access

- [Printer repository](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/PrinterRepository.cs): `Data/Repositories/PrinterRepository.cs`
- [Reading repository](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/PrintReadingRepository.cs): `Data/Repositories/PrintReadingRepository.cs`
- [Supplier and pricing data](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/FiyatRepository.cs): `Data/Repositories/FiyatRepository.cs`
- [Settlement repository](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/HakedisRepository.cs): `Data/Repositories/HakedisRepository.cs`
- [Stored-procedure access](https://github.com/mesuttekgoz0/printer_tracer/blob/main/Data/Repositories/SqlRepositoryBase.cs): `Data/Repositories/SqlRepositoryBase.cs`

### External systems

- **SQL Server**

### Other components

- **Operator**
- **Network printers**

## Connections

- Operator → Printer management: manages
- Operator → Counter reading: requests readings
- Operator → Usage reports: reviews usage
- Operator → Supplier management: maintains suppliers
- Operator → Settlement documents: creates documents
- Operator → SNMP diagnostics: diagnoses devices
- Printer management → Printers API: calls API
- Counter reading → Readings API: calls API
- Usage reports → Reports API: calls API
- Supplier management → Suppliers API: calls API
- Settlement documents → Settlements API: calls API
- SNMP diagnostics → Diagnostics API: calls API
- Printers API → Printer repository: uses repository
- Readings API → Manual readings: invokes (evidence: `Controllers/Api/ReadingsApiController.cs`)
- Reports API → Reading repository: queries readings
- Suppliers API → Supplier and pricing data: uses repository
- Settlements API → Settlement repository: uses repository
- Discovery API → Printer discovery: invokes (evidence: `Controllers/Api/DiscoveryApiController.cs`)
- Diagnostics API → SNMP operations: diagnoses via
- Manual readings → Printer repository: loads printers (evidence: `Services/PrinterReadingService.cs`)
- Manual readings → Reading repository: loads and saves readings (evidence: `Services/PrinterReadingService.cs`)
- Manual readings → SNMP operations: reads counters (evidence: `Services/PrinterReadingService.cs`)
- Printer discovery → SNMP operations: probes hosts (evidence: `Services/PrinterDiscoveryService.cs`)
- SNMP operations → Network printers: queries SNMP (evidence: `Services/SnmpService.cs`)
- Printer repository → Stored-procedure access: uses (evidence: `Data/Repositories/PrinterRepository.cs`)
- Reading repository → Stored-procedure access: uses (evidence: `Data/Repositories/PrintReadingRepository.cs`)
- Supplier and pricing data → Stored-procedure access: uses (evidence: `Data/Repositories/FiyatRepository.cs`)
- Settlement repository → Stored-procedure access: uses (evidence: `Data/Repositories/HakedisRepository.cs`)
- Stored-procedure access → SQL Server: executes procedures (evidence: `Data/Repositories/SqlRepositoryBase.cs`)
