# oscarg10101/bibliotech architecture

> Architecture diagram of the GitHub repository oscarg10101/bibliotech, 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/oscarg10101/bibliotech
- Repository: https://github.com/oscarg10101/bibliotech

## Overview

Biblioteca is an ASP.NET MVC library-circulation application. Visitors register or sign in, browse the catalog, and authenticated users can request loans; administrators manage books and process returns. Controllers coordinate these actions with the EF Core context, which persists users, catalog entities, and loans in SQL Server. The tree and excerpts support the main workflows and data model; other view details and any additional behavior in unsampled controller code are not inferred.

Main entry points: [`Data/BibliotecaContext.cs`](https://github.com/oscarg10101/bibliotech/blob/main/Data/BibliotecaContext.cs) (EF Core context), [`Features/User/UserController.cs`](https://github.com/oscarg10101/bibliotech/blob/main/Features/User/UserController.cs) (User actions), [`Features/Admin/AdminController.cs`](https://github.com/oscarg10101/bibliotech/blob/main/Features/Admin/AdminController.cs) (Admin actions), [`Features/Home/HomeController.cs`](https://github.com/oscarg10101/bibliotech/blob/main/Features/Home/HomeController.cs) (Home routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web entry and views"]
  node_browser["Browser views"]
  node_home["Home routes<br/>[HomeController.cs]"]
  node_adminviews["Admin views"]
  node_userviews["User views"]
end

subgraph group_accounts["Accounts and access"]
  node_auth["Cookie authentication<br/>[Program.cs]"]
  node_admin["Admin actions<br/>[AdminController.cs]"]
  node_user["User actions<br/>[UserController.cs]"]
  node_password["Password hasher"]
end

subgraph group_circulation["Catalog and circulation"]
  node_catalog["Catalog management<br/>[AdminController.cs]"]
  node_loansadmin["Loan administration<br/>[AdminController.cs]"]
  node_cataloguser["Browse catalog<br/>[UserController.cs]"]
  node_loanrequest["Loan requests<br/>[UserController.cs]"]
end

subgraph group_persistence["Domain and persistence"]
  node_context["EF Core context"]
  node_sql[("SQL Server")]
  node_book["Book entity<br/>[Libro.cs]"]
  node_loan["Loan entity<br/>[Prestamos.cs]"]
  node_userentity["User entity<br/>[Usuario.cs]"]
  node_author["Author entity<br/>[Autor.cs]"]
  node_category["Category entity<br/>[Categoria.cs]"]
  node_role["Role entity<br/>[Rol.cs]"]
end

node_visitor(("Visitor / user"))

node_visitor -->|"uses"| node_browser
node_browser -->|"requests routes"| node_home
node_home -->|"redirects admins"| node_admin
node_home -->|"redirects users"| node_user
node_admin -->|"renders"| node_adminviews
node_user -->|"renders"| node_userviews
node_admin -->|"queries and saves"| node_context
node_user -->|"queries and saves"| node_context
node_admin -->|"signs in and out"| node_auth
node_user -->|"signs in and out"| node_auth
node_user -->|"hashes and verifies"| node_password
node_context -->|"reads and writes"| node_sql
node_context -->|"maps"| node_book
node_context -->|"maps"| node_loan
node_context -->|"maps"| node_userentity
node_context -->|"maps"| node_author
node_context -->|"maps"| node_category
node_context -->|"maps"| node_role
node_admin -->|"dispatches"| node_catalog
node_admin -->|"dispatches"| node_loansadmin
node_user -->|"dispatches"| node_cataloguser
node_user -->|"dispatches"| node_loanrequest
node_catalog -->|"loads and updates"| node_context
node_loansadmin -->|"lists and returns"| node_context
node_cataloguser -->|"loads books"| node_context
node_loanrequest -->|"creates loan and marks unavailable"| node_context

click node_browser "https://github.com/oscarg10101/bibliotech/tree/main/Features"
click node_home "https://github.com/oscarg10101/bibliotech/blob/main/Features/Home/HomeController.cs"
click node_adminviews "https://github.com/oscarg10101/bibliotech/tree/main/Features/Admin"
click node_userviews "https://github.com/oscarg10101/bibliotech/tree/main/Features/User"
click node_auth "https://github.com/oscarg10101/bibliotech/blob/main/Program.cs"
click node_admin "https://github.com/oscarg10101/bibliotech/blob/main/Features/Admin/AdminController.cs"
click node_user "https://github.com/oscarg10101/bibliotech/blob/main/Features/User/UserController.cs"
click node_catalog "https://github.com/oscarg10101/bibliotech/blob/main/Features/Admin/AdminController.cs"
click node_loansadmin "https://github.com/oscarg10101/bibliotech/blob/main/Features/Admin/AdminController.cs"
click node_cataloguser "https://github.com/oscarg10101/bibliotech/blob/main/Features/User/UserController.cs"
click node_loanrequest "https://github.com/oscarg10101/bibliotech/blob/main/Features/User/UserController.cs"
click node_context "https://github.com/oscarg10101/bibliotech/blob/main/Data/BibliotecaContext.cs"
click node_book "https://github.com/oscarg10101/bibliotech/blob/main/Models/Libro.cs"
click node_loan "https://github.com/oscarg10101/bibliotech/blob/main/Models/Prestamos.cs"
click node_userentity "https://github.com/oscarg10101/bibliotech/blob/main/Models/Usuario.cs"
click node_author "https://github.com/oscarg10101/bibliotech/blob/main/Models/Autor.cs"
click node_category "https://github.com/oscarg10101/bibliotech/blob/main/Models/Categoria.cs"
click node_role "https://github.com/oscarg10101/bibliotech/blob/main/Models/Rol.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_browser,node_home,node_adminviews,node_userviews,node_visitor toneBlue
class node_auth,node_admin,node_user,node_password toneAmber
class node_catalog,node_loansadmin,node_cataloguser,node_loanrequest toneMint
class node_context,node_sql,node_book,node_loan,node_userentity,node_author,node_category,node_role toneRose
```

## Components

### Web entry and views

- [Browser views](https://github.com/oscarg10101/bibliotech/tree/main/Features): `Features`
- [Home routes](https://github.com/oscarg10101/bibliotech/blob/main/Features/Home/HomeController.cs): `Features/Home/HomeController.cs`
- [Admin views](https://github.com/oscarg10101/bibliotech/tree/main/Features/Admin): `Features/Admin`
- [User views](https://github.com/oscarg10101/bibliotech/tree/main/Features/User): `Features/User`

### Accounts and access

- [Cookie authentication](https://github.com/oscarg10101/bibliotech/blob/main/Program.cs): `Program.cs`
- [Admin actions](https://github.com/oscarg10101/bibliotech/blob/main/Features/Admin/AdminController.cs): `Features/Admin/AdminController.cs`
- [User actions](https://github.com/oscarg10101/bibliotech/blob/main/Features/User/UserController.cs): `Features/User/UserController.cs`
- **Password hasher**

### Catalog and circulation

- [Catalog management](https://github.com/oscarg10101/bibliotech/blob/main/Features/Admin/AdminController.cs): `Features/Admin/AdminController.cs`
- [Loan administration](https://github.com/oscarg10101/bibliotech/blob/main/Features/Admin/AdminController.cs): `Features/Admin/AdminController.cs`
- [Browse catalog](https://github.com/oscarg10101/bibliotech/blob/main/Features/User/UserController.cs): `Features/User/UserController.cs`
- [Loan requests](https://github.com/oscarg10101/bibliotech/blob/main/Features/User/UserController.cs): `Features/User/UserController.cs`

### Domain and persistence

- [EF Core context](https://github.com/oscarg10101/bibliotech/blob/main/Data/BibliotecaContext.cs): `Data/BibliotecaContext.cs`
- **SQL Server**
- [Book entity](https://github.com/oscarg10101/bibliotech/blob/main/Models/Libro.cs): `Models/Libro.cs`
- [Loan entity](https://github.com/oscarg10101/bibliotech/blob/main/Models/Prestamos.cs): `Models/Prestamos.cs`
- [User entity](https://github.com/oscarg10101/bibliotech/blob/main/Models/Usuario.cs): `Models/Usuario.cs`
- [Author entity](https://github.com/oscarg10101/bibliotech/blob/main/Models/Autor.cs): `Models/Autor.cs`
- [Category entity](https://github.com/oscarg10101/bibliotech/blob/main/Models/Categoria.cs): `Models/Categoria.cs`
- [Role entity](https://github.com/oscarg10101/bibliotech/blob/main/Models/Rol.cs): `Models/Rol.cs`

### Other components

- **Visitor / user**

## Connections

- Visitor / user → Browser views: uses
- Browser views → Home routes: requests routes
- Home routes → Admin actions: redirects admins
- Home routes → User actions: redirects users
- Admin actions → Admin views: renders
- User actions → User views: renders
- Admin actions → EF Core context: queries and saves
- User actions → EF Core context: queries and saves
- Admin actions → Cookie authentication: signs in and out
- User actions → Cookie authentication: signs in and out
- User actions → Password hasher: hashes and verifies
- EF Core context → SQL Server: reads and writes
- EF Core context → Book entity: maps
- EF Core context → Loan entity: maps
- EF Core context → User entity: maps
- EF Core context → Author entity: maps
- EF Core context → Category entity: maps
- EF Core context → Role entity: maps
- Admin actions → Catalog management: dispatches
- Admin actions → Loan administration: dispatches
- User actions → Browse catalog: dispatches
- User actions → Loan requests: dispatches
- Catalog management → EF Core context: loads and updates
- Loan administration → EF Core context: lists and returns
- Browse catalog → EF Core context: loads books
- Loan requests → EF Core context: creates loan and marks unavailable
