# gncyyldz/mini-e-ticaret-api architecture

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

- Interactive diagram: https://gitdiagram.com/gncyyldz/mini-e-ticaret-api
- Repository: https://github.com/gncyyldz/mini-e-ticaret-api

## Overview

ETicaretAPI is a multi-layer e-commerce API covering catalog and product imagery, baskets and orders, user authentication and administration, endpoint authorization, and real-time product/order updates. The intended user workflow is to browse products, manage a basket, and place and track orders; administrators also manage products, users, roles, and authorization. Sampled query handlers confirm several application-to-service and application-to-repository calls. Controller dispatch, write-side wiring, persistence implementation details, and real-time event flow were not sampled, so those links are not asserted.

Main entry points: [`ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Product`](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Product) (Product queries), [`ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/AppUser`](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/AppUser) (User administration), [`ETicaretAPI/Presentation/ETicaretAPI.API/Controllers`](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Presentation/ETicaretAPI.API/Controllers) (HTTP API), [`ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/UserService.cs`](https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/UserService.cs) (User service)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_presentation["API entry"]
  node_api["HTTP API<br/>[Controllers]"]
end

subgraph group_commerce["Commerce workflows"]
  node_product_queries["Product queries<br/>[Product]"]
  node_product_commands["Product commands<br/>[Product]"]
  node_image_workflows["Product images<br/>[ProductImageFile]"]
  node_basket_workflows["Basket workflows<br/>[Basket]"]
  node_basket_queries["Basket queries<br/>[Basket]"]
  node_order_commands["Order workflows<br/>[Order]"]
  node_order_queries["Order queries<br/>[Order]"]
end

subgraph group_identity["Identity and access"]
  node_auth_workflows["Authentication<br/>[AppUser]"]
  node_user_admin["User administration<br/>[AppUser]"]
  node_role_admin["Role administration<br/>[Role]"]
  node_endpoint_access["Endpoint access"]
end

subgraph group_platform["Persistence and integrations"]
  node_product_service["Product service<br/>[ProductService.cs]"]
  node_basket_service["Basket service<br/>[BasketService.cs]"]
  node_order_service["Order service<br/>[OrderService.cs]"]
  node_user_service["User service<br/>[UserService.cs]"]
  node_role_service["Role service<br/>[RoleService.cs]"]
  node_access_service["Authorization service"]
  node_product_repo["Product repository<br/>[Product]"]
  node_database[("Application database")]
  node_file_storage["File storage<br/>[Storage]"]
end

subgraph group_realtime["Live updates"]
  node_signalr["SignalR hubs<br/>[Hubs]"]
end

node_shopper(("Shopper"))
node_admin(("Administrator"))
node_live_client(("Live-update client"))

node_shopper -->|"sends requests"| node_api
node_admin -->|"sends requests"| node_api
node_product_queries -->|"queries products"| node_product_repo
node_product_queries -->|"loads images"| node_product_repo
node_basket_queries -->|"gets basket"| node_basket_service
node_order_queries -->|"gets orders"| node_order_service
node_user_admin -->|"gets users"| node_user_service
node_user_admin -->|"gets user roles"| node_user_service
node_role_admin -->|"gets roles"| node_role_service
node_endpoint_access -->|"gets endpoint roles"| node_access_service

click node_api "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Presentation/ETicaretAPI.API/Controllers"
click node_product_queries "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Product"
click node_product_commands "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Product"
click node_image_workflows "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/ProductImageFile"
click node_basket_workflows "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Basket"
click node_basket_queries "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Basket"
click node_order_commands "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Order"
click node_order_queries "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Order"
click node_auth_workflows "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/AppUser"
click node_user_admin "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/AppUser"
click node_role_admin "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Role"
click node_endpoint_access "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/AuthorizationEndpoint"
click node_product_service "https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/ProductService.cs"
click node_basket_service "https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/BasketService.cs"
click node_order_service "https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/OrderService.cs"
click node_user_service "https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/UserService.cs"
click node_role_service "https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/RoleService.cs"
click node_access_service "https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/AuthorizationEndpointService.cs"
click node_product_repo "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Repositories/Product"
click node_database "https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Contexts/ETicaretAPIDbContext.cs"
click node_file_storage "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Infrastructure/ETicaretAPI.Infrastructure/Services/Storage"
click node_signalr "https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Infrastructure/ETicaretAPI.SignalR/Hubs"

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,node_live_client toneBlue
class node_product_queries,node_product_commands,node_image_workflows,node_basket_workflows,node_basket_queries,node_order_commands,node_order_queries toneAmber
class node_auth_workflows,node_user_admin,node_role_admin,node_endpoint_access toneMint
class node_product_service,node_basket_service,node_order_service,node_user_service,node_role_service,node_access_service,node_product_repo,node_database,node_file_storage toneRose
class node_signalr,node_shopper,node_admin toneIndigo
```

## Components

### API entry

- [HTTP API](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Presentation/ETicaretAPI.API/Controllers): `ETicaretAPI/Presentation/ETicaretAPI.API/Controllers`

### Commerce workflows

- [Product queries](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Product): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Product`
- [Product commands](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Product): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Product`
- [Product images](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/ProductImageFile): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/ProductImageFile`
- [Basket workflows](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Basket): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Basket`
- [Basket queries](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Basket): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Basket`
- [Order workflows](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Order): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Order`
- [Order queries](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Order): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/Order`

### Identity and access

- [Authentication](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/AppUser): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/AppUser`
- [User administration](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/AppUser): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/AppUser`
- [Role administration](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Role): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Commands/Role`
- [Endpoint access](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/AuthorizationEndpoint): `ETicaretAPI/Core/ETicaretAPI.Application/Features/Queries/AuthorizationEndpoint`

### Persistence and integrations

- [Product service](https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/ProductService.cs): `ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/ProductService.cs`
- [Basket service](https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/BasketService.cs): `ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/BasketService.cs`
- [Order service](https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/OrderService.cs): `ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/OrderService.cs`
- [User service](https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/UserService.cs): `ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/UserService.cs`
- [Role service](https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/RoleService.cs): `ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/RoleService.cs`
- [Authorization service](https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/AuthorizationEndpointService.cs): `ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Services/AuthorizationEndpointService.cs`
- [Product repository](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Repositories/Product): `ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Repositories/Product`
- [Application database](https://github.com/gncyyldz/mini-e-ticaret-api/blob/master/ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Contexts/ETicaretAPIDbContext.cs): `ETicaretAPI/Infrastructure/ETicaretAPI.Persistence/Contexts/ETicaretAPIDbContext.cs`
- [File storage](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Infrastructure/ETicaretAPI.Infrastructure/Services/Storage): `ETicaretAPI/Infrastructure/ETicaretAPI.Infrastructure/Services/Storage`

### Live updates

- [SignalR hubs](https://github.com/gncyyldz/mini-e-ticaret-api/tree/master/ETicaretAPI/Infrastructure/ETicaretAPI.SignalR/Hubs): `ETicaretAPI/Infrastructure/ETicaretAPI.SignalR/Hubs`

### Other components

- **Shopper**
- **Administrator**
- **Live-update client**

## Connections

- Shopper → HTTP API: sends requests
- Administrator → HTTP API: sends requests
- Product queries → Product repository: queries products
- Product queries → Product repository: loads images
- Basket queries → Basket service: gets basket
- Order queries → Order service: gets orders
- User administration → User service: gets users
- User administration → User service: gets user roles
- Role administration → Role service: gets roles
- Endpoint access → Authorization service: gets endpoint roles
