# mikailakar/backend-project architecture

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

- Interactive diagram: https://gitdiagram.com/mikailakar/backend-project
- Repository: https://github.com/mikailakar/backend-project

## Overview

This is an ASP.NET Core API for user and role management. The main workflow is an HTTP request to a controller, through the user-service abstraction for user operations, into SQL-backed state, and back as an API response. Login verifies a password and issues a role-bearing JWT; later requests pass through JWT middleware, which validates the token and loads user and role context. The README also documents soft deletion, role-aware user queries, and date ordering. Those capabilities are represented from documentation where source detail was not sampled.

Main entry points: [`backendProjesi/Implements/UserService.cs`](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Implements/UserService.cs) (User service), [`backendProjesi/Models/UsersContext.cs`](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/UsersContext.cs) (EF data context), [`backendProjesi/Program.cs`](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Program.cs) (API host), [`backendProjesi/Controllers/UsersController.cs`](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Controllers/UsersController.cs) (User endpoints)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API runtime"]
  node_host["API host<br/>[Program.cs]"]
  node_user_api["User endpoints<br/>[UsersController.cs]"]
  node_role_api["Role endpoints<br/>[RolController.cs]"]
end

subgraph group_auth["Authentication"]
  node_password["Password hashing<br/>[PasswordService.cs]"]
  node_jwt["JWT middleware<br/>[JwtMiddleware.cs]"]
  node_authorization["Role authorization"]
  node_auth_request["Login request"]
  node_auth_response["Token response"]
end

subgraph group_users["User services"]
  node_user_service["User service<br/>[UserService.cs]"]
  node_user_contract["User service contract<br/>[IUserService.cs]"]
  node_mapping["DTO mapping<br/>[MappingProfile.cs]"]
  node_user_model["User model<br/>[Users.cs]"]
end

subgraph group_state["Roles and storage"]
  node_role_model["Role model<br/>[Rol.cs]"]
  node_role_results["Users with roles<br/>[UserWithRoleDto.cs]"]
  node_context["EF data context<br/>[UsersContext.cs]"]
  node_database[("SQL Server")]
end

node_client(("HTTP client"))

node_client -->|"sends requests"| node_host
node_host -->|"routes requests"| node_user_api
node_host -->|"routes requests"| node_role_api
node_host -->|"runs middleware"| node_jwt
node_user_api -->|"calls"| node_user_contract
node_user_contract -->|"implemented by"| node_user_service
node_jwt -->|"loads user roles"| node_user_contract
node_user_api -->|"protects actions"| node_authorization
node_user_service -->|"queries and saves"| node_context
node_role_api -->|"queries and saves"| node_context
node_context -->|"reads and writes"| node_database
node_user_service -->|"maps user data"| node_mapping
node_user_service -->|"hashes and verifies"| node_password
node_user_service -->|"accepts credentials"| node_auth_request
node_user_service -->|"returns token result"| node_auth_response
node_context -->|"stores users"| node_user_model
node_context -->|"stores roles"| node_role_model
node_context -->|"projects role queries"| node_role_results

click node_host "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Program.cs"
click node_user_api "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Controllers/UsersController.cs"
click node_role_api "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Controllers/RolController.cs"
click node_user_service "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Implements/UserService.cs"
click node_user_contract "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Interfaces/IUserService.cs"
click node_mapping "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/MappingProfile.cs"
click node_password "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/PasswordService.cs"
click node_jwt "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Helpers/JwtMiddleware.cs"
click node_authorization "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Helpers/AuthorizeAttribute.cs"
click node_auth_request "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/AuthenticateRequest.cs"
click node_auth_response "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/AuthenticateResponse.cs"
click node_user_model "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/Users.cs"
click node_role_model "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/Rol.cs"
click node_role_results "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/UserWithRoleDto.cs"
click node_context "https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/UsersContext.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_host,node_user_api,node_role_api,node_client toneBlue
class node_password,node_jwt,node_authorization,node_auth_request,node_auth_response toneAmber
class node_user_service,node_user_contract,node_mapping,node_user_model toneMint
class node_role_model,node_role_results,node_context,node_database toneRose
```

## Components

### API runtime

- [API host](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Program.cs): `backendProjesi/Program.cs`
- [User endpoints](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Controllers/UsersController.cs): `backendProjesi/Controllers/UsersController.cs`
- [Role endpoints](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Controllers/RolController.cs): `backendProjesi/Controllers/RolController.cs`

### Authentication

- [Password hashing](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/PasswordService.cs): `backendProjesi/Models/PasswordService.cs`
- [JWT middleware](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Helpers/JwtMiddleware.cs): `backendProjesi/Helpers/JwtMiddleware.cs`
- [Role authorization](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Helpers/AuthorizeAttribute.cs): `backendProjesi/Helpers/AuthorizeAttribute.cs`
- [Login request](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/AuthenticateRequest.cs): `backendProjesi/Models/AuthenticateRequest.cs`
- [Token response](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/AuthenticateResponse.cs): `backendProjesi/Models/AuthenticateResponse.cs`

### User services

- [User service](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Implements/UserService.cs): `backendProjesi/Implements/UserService.cs`
- [User service contract](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Interfaces/IUserService.cs): `backendProjesi/Interfaces/IUserService.cs`
- [DTO mapping](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/MappingProfile.cs): `backendProjesi/Models/MappingProfile.cs`
- [User model](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/Users.cs): `backendProjesi/Models/Users.cs`

### Roles and storage

- [Role model](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/Rol.cs): `backendProjesi/Models/Rol.cs`
- [Users with roles](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/UserWithRoleDto.cs): `backendProjesi/Models/UserWithRoleDto.cs`
- [EF data context](https://github.com/mikailakar/backend-project/blob/main/backendProjesi/Models/UsersContext.cs): `backendProjesi/Models/UsersContext.cs`
- **SQL Server**

### Other components

- **HTTP client**

## Connections

- HTTP client → API host: sends requests
- API host → User endpoints: routes requests
- API host → Role endpoints: routes requests
- API host → JWT middleware: runs middleware
- User endpoints → User service contract: calls
- User service contract → User service: implemented by
- JWT middleware → User service contract: loads user roles
- User endpoints → Role authorization: protects actions
- User service → EF data context: queries and saves
- Role endpoints → EF data context: queries and saves
- EF data context → SQL Server: reads and writes
- User service → DTO mapping: maps user data
- User service → Password hashing: hashes and verifies
- User service → Login request: accepts credentials
- User service → Token response: returns token result
- EF data context → User model: stores users
- EF data context → Role model: stores roles
- EF data context → Users with roles: projects role queries
