# gkemeza/humanregistrationsystem architecture

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

- Interactive diagram: https://gitdiagram.com/gkemeza/humanregistrationsystem
- Repository: https://github.com/gkemeza/humanregistrationsystem

## Overview

This is a human-registration and management application: users register with personal, residence, and photo details, log in to receive a token, and retrieve or update profiles; admins can delete accounts. The backend separates HTTP endpoints, application services/mapping, and persistence. README capabilities include validation, authorization, and a responsive JavaScript frontend. The frontend-to-API wiring and several service implementations were not excerpted, so those relationships are left unverified rather than asserted.

Main entry points: [`Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs) (User endpoints), [`Egzaminas_ZmogausRegistravimoSistema/Controllers/ProfileController.cs`](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Controllers/ProfileController.cs) (Profile endpoints), [`Egzaminas_ZmogausRegistravimoSistema/Services`](https://github.com/gkemeza/humanregistrationsystem/tree/master/Egzaminas_ZmogausRegistravimoSistema/Services) (User operations), [`Egzaminas_ZmogausRegistravimoSistema/Repositories/UserRepository.cs`](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Repositories/UserRepository.cs) (User repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["Web client"]
  node_signup_ui["Sign-up interface<br/>[script.js]"]
  node_login_ui["Login interface<br/>[script.js]"]
  node_profile_ui["Profile interface<br/>[script.js]"]
end

subgraph group_api["API endpoints"]
  node_user_api["User endpoints<br/>[UserController.cs]"]
  node_profile_api["Profile endpoints"]
end

subgraph group_app["Application services"]
  node_signup_login["Registration and login"]
  node_user_service["User operations"]
  node_auth["Password authentication<br/>[AuthService.cs]"]
  node_jwt["JWT service<br/>[JwtService.cs]"]
  node_photo["Photo processing<br/>[PhotoService.cs]"]
  node_mapper["User mapping<br/>[UserMapper.cs]"]
  node_validation["Request validation"]
end

subgraph group_data["Registration data"]
  node_repository["User repository<br/>[UserRepository.cs]"]
  node_context["EF context"]
  node_sql[("SQL Server")]
  node_records["Registration records<br/>[User.cs]"]
end

node_person(("User"))

node_person -->|"uses"| node_signup_ui
node_person -->|"uses"| node_login_ui
node_person -->|"uses"| node_profile_ui
node_signup_ui -.->|"submits registration"| node_user_api
node_login_ui -.->|"submits login"| node_user_api
node_profile_ui -.->|"updates profile"| node_profile_api
node_user_api -->|"registers user"| node_signup_login
node_user_api -->|"signs up"| node_user_service
node_user_api -->|"reads users"| node_repository
node_user_api -->|"checks password"| node_auth
node_user_api -->|"creates token"| node_jwt
node_user_api -->|"maps profile"| node_mapper
node_user_api -->|"loads photo"| node_photo
node_profile_api -->|"updates user"| node_repository
node_profile_api -->|"hashes password"| node_auth
node_profile_api -->|"updates photo"| node_photo
node_repository -->|"queries and saves"| node_context
node_context -->|"maps records"| node_records
node_context -->|"uses provider"| node_sql
node_user_api -.->|"validates requests"| node_validation
node_user_service -.->|"maps registration"| node_mapper
node_user_service -.->|"persists registration"| node_repository
node_user_service -.->|"handles upload"| node_photo

click node_signup_ui "https://github.com/gkemeza/humanregistrationsystem/blob/master/FrontEnd/signUp-form/script.js"
click node_login_ui "https://github.com/gkemeza/humanregistrationsystem/blob/master/FrontEnd/login-form/script.js"
click node_profile_ui "https://github.com/gkemeza/humanregistrationsystem/blob/master/FrontEnd/profile-page/script.js"
click node_user_api "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs"
click node_profile_api "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Controllers/ProfileController.cs"
click node_signup_login "https://github.com/gkemeza/humanregistrationsystem/tree/master/Egzaminas_ZmogausRegistravimoSistema/Services"
click node_user_service "https://github.com/gkemeza/humanregistrationsystem/tree/master/Egzaminas_ZmogausRegistravimoSistema/Services"
click node_auth "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Services/AuthService.cs"
click node_jwt "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Services/JwtService.cs"
click node_photo "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Services/PhotoService.cs"
click node_mapper "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Mappers/UserMapper.cs"
click node_validation "https://github.com/gkemeza/humanregistrationsystem/tree/master/Egzaminas_ZmogausRegistravimoSistema/Validators"
click node_repository "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Repositories/UserRepository.cs"
click node_context "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Database/PersonRegistrationContext.cs"
click node_records "https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Entities/User.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_signup_ui,node_login_ui,node_profile_ui,node_person toneBlue
class node_user_api,node_profile_api toneAmber
class node_signup_login,node_user_service,node_auth,node_jwt,node_photo,node_mapper,node_validation toneMint
class node_repository,node_context,node_sql,node_records toneRose
```

## Components

### Web client

- [Sign-up interface](https://github.com/gkemeza/humanregistrationsystem/blob/master/FrontEnd/signUp-form/script.js): `FrontEnd/signUp-form/script.js`
- [Login interface](https://github.com/gkemeza/humanregistrationsystem/blob/master/FrontEnd/login-form/script.js): `FrontEnd/login-form/script.js`
- [Profile interface](https://github.com/gkemeza/humanregistrationsystem/blob/master/FrontEnd/profile-page/script.js): `FrontEnd/profile-page/script.js`

### API endpoints

- [User endpoints](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs): `Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`
- [Profile endpoints](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Controllers/ProfileController.cs): `Egzaminas_ZmogausRegistravimoSistema/Controllers/ProfileController.cs`

### Application services

- [Registration and login](https://github.com/gkemeza/humanregistrationsystem/tree/master/Egzaminas_ZmogausRegistravimoSistema/Services): `Egzaminas_ZmogausRegistravimoSistema/Services`
- [User operations](https://github.com/gkemeza/humanregistrationsystem/tree/master/Egzaminas_ZmogausRegistravimoSistema/Services): `Egzaminas_ZmogausRegistravimoSistema/Services`
- [Password authentication](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Services/AuthService.cs): `Egzaminas_ZmogausRegistravimoSistema/Services/AuthService.cs`
- [JWT service](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Services/JwtService.cs): `Egzaminas_ZmogausRegistravimoSistema/Services/JwtService.cs`
- [Photo processing](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Services/PhotoService.cs): `Egzaminas_ZmogausRegistravimoSistema/Services/PhotoService.cs`
- [User mapping](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Mappers/UserMapper.cs): `Egzaminas_ZmogausRegistravimoSistema/Mappers/UserMapper.cs`
- [Request validation](https://github.com/gkemeza/humanregistrationsystem/tree/master/Egzaminas_ZmogausRegistravimoSistema/Validators): `Egzaminas_ZmogausRegistravimoSistema/Validators`

### Registration data

- [User repository](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Repositories/UserRepository.cs): `Egzaminas_ZmogausRegistravimoSistema/Repositories/UserRepository.cs`
- [EF context](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Database/PersonRegistrationContext.cs): `Egzaminas_ZmogausRegistravimoSistema/Database/PersonRegistrationContext.cs`
- **SQL Server**
- [Registration records](https://github.com/gkemeza/humanregistrationsystem/blob/master/Egzaminas_ZmogausRegistravimoSistema/Entities/User.cs): `Egzaminas_ZmogausRegistravimoSistema/Entities/User.cs`

### Other components

- **User**

## Connections

- User → Sign-up interface: uses
- User → Login interface: uses
- User → Profile interface: uses
- Sign-up interface → User endpoints: submits registration
- Login interface → User endpoints: submits login
- Profile interface → Profile endpoints: updates profile
- User endpoints → Registration and login: registers user (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`)
- User endpoints → User operations: signs up (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`)
- User endpoints → User repository: reads users (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`)
- User endpoints → Password authentication: checks password (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`)
- User endpoints → JWT service: creates token (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`)
- User endpoints → User mapping: maps profile (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`)
- User endpoints → Photo processing: loads photo (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/UserController.cs`)
- Profile endpoints → User repository: updates user (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/ProfileController.cs`)
- Profile endpoints → Password authentication: hashes password (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/ProfileController.cs`)
- Profile endpoints → Photo processing: updates photo (evidence: `Egzaminas_ZmogausRegistravimoSistema/Controllers/ProfileController.cs`)
- User repository → EF context: queries and saves (evidence: `Egzaminas_ZmogausRegistravimoSistema/Repositories/UserRepository.cs`)
- EF context → Registration records: maps records (evidence: `Egzaminas_ZmogausRegistravimoSistema/Database/PersonRegistrationContext.cs`)
- EF context → SQL Server: uses provider (evidence: `Egzaminas_ZmogausRegistravimoSistema/Database/PersonRegistrationContext.cs`)
- User endpoints → Request validation: validates requests
- User operations → User mapping: maps registration (evidence: `Egzaminas_ZmogausRegistravimoSistema/Mappers/UserMapper.cs`)
- User operations → User repository: persists registration
- User operations → Photo processing: handles upload (evidence: `Egzaminas_ZmogausRegistravimoSistema/Services/PhotoService.cs`)
