# davidmovsisyann/barbershopp architecture

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

- Interactive diagram: https://gitdiagram.com/davidmovsisyann/barbershopp
- Repository: https://github.com/davidmovsisyann/barbershopp
- Video tour (about a minute): https://gitdiagram.com/davidmovsisyann/barbershopp/video

## Overview

Barbershopp is an ASP.NET MVC barber-shop site: visitors can browse barbers and services, register or log in, and submit a booking. PagesController assembles page data and handles booking and availability requests; application services use a unit of work and repositories for domain data. The user-management controller also queries the database context directly. The README is empty, and several service, repository, and view implementations were not sampled, so uncertain internal wiring is omitted.

Main entry points: [`Controllers/PagesController.cs`](https://github.com/davidmovsisyann/barbershopp/blob/master/Controllers/PagesController.cs) (Pages controller), [`Repositories/UnitOfWork.cs`](https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/UnitOfWork.cs) (Unit of work), [`Data/DataBaseContext.cs`](https://github.com/davidmovsisyann/barbershopp/blob/master/Data/DataBaseContext.cs) (EF database context), [`Repositories/GenericRepository.cs`](https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/GenericRepository.cs) (Generic repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_pages["Pages controller<br/>[PagesController.cs]"]
  node_users["Users controller<br/>[UsersController.cs]"]
  node_pageviews["Site pages"]
  node_userviews["User pages"]
end

subgraph group_application["Application services"]
  node_user_service["User service<br/>[UserService.cs]"]
  node_booking_service["Booking service"]
  node_employee_service["Employee service<br/>[EmployeeService.cs]"]
  node_service_service["Shop service<br/>[ServiceService.cs]"]
end

subgraph group_persistence["Persistence"]
  node_uow["Unit of work<br/>[UnitOfWork.cs]"]
  node_generic_repo["Generic repository"]
  node_booking_repo["Booking repository"]
  node_employee_repo["Employee repository"]
  node_service_repo["Service repository"]
  node_user_repo["User repository<br/>[UserRepository.cs]"]
  node_dbcontext["EF database context<br/>[DataBaseContext.cs]"]
end

subgraph group_domain["Domain data"]
  node_user["User account<br/>[UserEntity.cs]"]
  node_booking["Booking history"]
  node_employee["Barber employee<br/>[EmployeeEntity.cs]"]
  node_service["Barber service"]
  node_homepage_model["Page view model<br/>[HomePageModels.cs]"]
end

node_visitor(("Visitor"))
node_sql[("SQL Server")]

node_visitor -->|"requests pages"| node_pages
node_visitor -->|"requests account"| node_users
node_pages -->|"renders"| node_pageviews
node_users -->|"renders"| node_userviews
node_pages -->|"assembles"| node_homepage_model
node_pages -->|"loads barbers"| node_employee_service
node_pages -->|"loads services"| node_service_service
node_pages -->|"submits booking"| node_booking_service
node_pages -->|"reads bookings"| node_booking_service
node_pages -->|"checks barber"| node_employee_service
node_users -->|"checks or changes account"| node_user_service
node_users -->|"queries users"| node_dbcontext
node_user_service -->|"uses"| node_uow
node_booking_service -->|"uses"| node_uow
node_employee_service -->|"uses"| node_uow
node_service_service -->|"uses"| node_uow
node_uow -->|"provides repository"| node_booking_repo
node_uow -->|"provides repository"| node_employee_repo
node_uow -->|"provides repository"| node_service_repo
node_uow -->|"provides repository"| node_user_repo
node_booking_repo -->|"inherits"| node_generic_repo
node_employee_repo -->|"inherits"| node_generic_repo
node_service_repo -->|"inherits"| node_generic_repo
node_user_repo -->|"inherits"| node_generic_repo
node_generic_repo -->|"queries and tracks"| node_dbcontext
node_dbcontext -->|"reads and writes"| node_sql
node_dbcontext -->|"maps"| node_user
node_dbcontext -->|"maps"| node_booking
node_dbcontext -->|"maps"| node_employee
node_dbcontext -->|"maps"| node_service

click node_pages "https://github.com/davidmovsisyann/barbershopp/blob/master/Controllers/PagesController.cs"
click node_users "https://github.com/davidmovsisyann/barbershopp/blob/master/Controllers/UsersController.cs"
click node_pageviews "https://github.com/davidmovsisyann/barbershopp/tree/master/Views/WebPages"
click node_userviews "https://github.com/davidmovsisyann/barbershopp/tree/master/Views/Users"
click node_user_service "https://github.com/davidmovsisyann/barbershopp/blob/master/Services/UserService.cs"
click node_booking_service "https://github.com/davidmovsisyann/barbershopp/blob/master/Services/BookingHistoryService.cs"
click node_employee_service "https://github.com/davidmovsisyann/barbershopp/blob/master/Services/EmployeeService.cs"
click node_service_service "https://github.com/davidmovsisyann/barbershopp/blob/master/Services/ServiceService.cs"
click node_uow "https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/UnitOfWork.cs"
click node_generic_repo "https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/GenericRepository.cs"
click node_booking_repo "https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/BookingHistoryRepository.cs"
click node_employee_repo "https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/EmployeeRepository.cs"
click node_service_repo "https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/ServiceRepository.cs"
click node_user_repo "https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/UserRepository.cs"
click node_dbcontext "https://github.com/davidmovsisyann/barbershopp/blob/master/Data/DataBaseContext.cs"
click node_user "https://github.com/davidmovsisyann/barbershopp/blob/master/Entities/UserEntity.cs"
click node_booking "https://github.com/davidmovsisyann/barbershopp/blob/master/Entities/BookingHistoryEntity.cs"
click node_employee "https://github.com/davidmovsisyann/barbershopp/blob/master/Entities/EmployeeEntity.cs"
click node_service "https://github.com/davidmovsisyann/barbershopp/blob/master/Entities/BarberServicesEntity.cs"
click node_homepage_model "https://github.com/davidmovsisyann/barbershopp/blob/master/Models/HomePageModels.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_pages,node_users,node_pageviews,node_userviews toneBlue
class node_user_service,node_booking_service,node_employee_service,node_service_service,node_sql toneAmber
class node_uow,node_generic_repo,node_booking_repo,node_employee_repo,node_service_repo,node_user_repo,node_dbcontext toneMint
class node_user,node_booking,node_employee,node_service,node_homepage_model toneRose
class node_visitor toneIndigo
```

## Components

### Web experience

- [Pages controller](https://github.com/davidmovsisyann/barbershopp/blob/master/Controllers/PagesController.cs): `Controllers/PagesController.cs`
- [Users controller](https://github.com/davidmovsisyann/barbershopp/blob/master/Controllers/UsersController.cs): `Controllers/UsersController.cs`
- [Site pages](https://github.com/davidmovsisyann/barbershopp/tree/master/Views/WebPages): `Views/WebPages`
- [User pages](https://github.com/davidmovsisyann/barbershopp/tree/master/Views/Users): `Views/Users`

### Application services

- [User service](https://github.com/davidmovsisyann/barbershopp/blob/master/Services/UserService.cs): `Services/UserService.cs`
- [Booking service](https://github.com/davidmovsisyann/barbershopp/blob/master/Services/BookingHistoryService.cs): `Services/BookingHistoryService.cs`
- [Employee service](https://github.com/davidmovsisyann/barbershopp/blob/master/Services/EmployeeService.cs): `Services/EmployeeService.cs`
- [Shop service](https://github.com/davidmovsisyann/barbershopp/blob/master/Services/ServiceService.cs): `Services/ServiceService.cs`

### Persistence

- [Unit of work](https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/UnitOfWork.cs): `Repositories/UnitOfWork.cs`
- [Generic repository](https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/GenericRepository.cs): `Repositories/GenericRepository.cs`
- [Booking repository](https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/BookingHistoryRepository.cs): `Repositories/BookingHistoryRepository.cs`
- [Employee repository](https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/EmployeeRepository.cs): `Repositories/EmployeeRepository.cs`
- [Service repository](https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/ServiceRepository.cs): `Repositories/ServiceRepository.cs`
- [User repository](https://github.com/davidmovsisyann/barbershopp/blob/master/Repositories/UserRepository.cs): `Repositories/UserRepository.cs`
- [EF database context](https://github.com/davidmovsisyann/barbershopp/blob/master/Data/DataBaseContext.cs): `Data/DataBaseContext.cs`

### Domain data

- [User account](https://github.com/davidmovsisyann/barbershopp/blob/master/Entities/UserEntity.cs): `Entities/UserEntity.cs`
- [Booking history](https://github.com/davidmovsisyann/barbershopp/blob/master/Entities/BookingHistoryEntity.cs): `Entities/BookingHistoryEntity.cs`
- [Barber employee](https://github.com/davidmovsisyann/barbershopp/blob/master/Entities/EmployeeEntity.cs): `Entities/EmployeeEntity.cs`
- [Barber service](https://github.com/davidmovsisyann/barbershopp/blob/master/Entities/BarberServicesEntity.cs): `Entities/BarberServicesEntity.cs`
- [Page view model](https://github.com/davidmovsisyann/barbershopp/blob/master/Models/HomePageModels.cs): `Models/HomePageModels.cs`

### Other components

- **Visitor**
- **SQL Server**

## Connections

- Visitor → Pages controller: requests pages
- Visitor → Users controller: requests account
- Pages controller → Site pages: renders
- Users controller → User pages: renders
- Pages controller → Page view model: assembles
- Pages controller → Employee service: loads barbers
- Pages controller → Shop service: loads services
- Pages controller → Booking service: submits booking
- Pages controller → Booking service: reads bookings
- Pages controller → Employee service: checks barber
- Users controller → User service: checks or changes account
- Users controller → EF database context: queries users
- User service → Unit of work: uses
- Booking service → Unit of work: uses
- Employee service → Unit of work: uses
- Shop service → Unit of work: uses
- Unit of work → Booking repository: provides repository
- Unit of work → Employee repository: provides repository
- Unit of work → Service repository: provides repository
- Unit of work → User repository: provides repository
- Booking repository → Generic repository: inherits
- Employee repository → Generic repository: inherits
- Service repository → Generic repository: inherits
- User repository → Generic repository: inherits
- Generic repository → EF database context: queries and tracks
- EF database context → SQL Server: reads and writes
- EF database context → User account: maps
- EF database context → Booking history: maps
- EF database context → Barber employee: maps
- EF database context → Barber service: maps
