# salmawaleed-dev/book-nest-app architecture

> Architecture diagram of the GitHub repository salmawaleed-dev/book-nest-app, 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/salmawaleed-dev/book-nest-app
- Repository: https://github.com/salmawaleed-dev/book-nest-app

## Overview

BookNest is a Laravel digital library combining catalog discovery and borrowing/purchase-cart actions with personalized recommendations, profile management, and an AI assistant. Its principal user flow runs from web routes to library controllers and catalog data, with Blade views presenting results; separate authentication and admin workflows manage access and library content. The README documents recommendations, statistics, and AI capabilities beyond the sampled source. Their wiring is shown only where supported; the AI controller/service adapter and recommendation invocation were not sampled.

Main entry points: [`routes/web.php`](https://github.com/salmawaleed-dev/book-nest-app/blob/main/routes/web.php) (Web routes), [`resources/views`](https://github.com/salmawaleed-dev/book-nest-app/tree/main/resources/views) (Blade interface), [`app/Models/Book.php`](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Models/Book.php) (Books), [`app/Models/Category.php`](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Models/Category.php) (Categories)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_routes["Web routes<br/>[web.php]"]
  node_views["Blade interface"]
  node_browser["Chat browser client<br/>[app.js]"]
end

subgraph group_identity["Identity and access"]
  node_auth["Authentication"]
  node_rbac["Admin access gate"]
end

subgraph group_catalog["Library catalog"]
  node_bookctl["Book discovery<br/>[BookController.php]"]
  node_categoryctl["Category browsing"]
  node_cartctl["Cart and borrowing<br/>[CartController.php]"]
  node_books["Books<br/>[Book.php]"]
  node_categories["Categories<br/>[Category.php]"]
  node_db[("Application database<br/>[database.php]")]
end

subgraph group_personal["Personal discovery"]
  node_profilectl["Profile management"]
  node_profile["User profile<br/>[Profile.php]"]
  node_recommend["Recommendations"]
  node_aichat["AI chat endpoint"]
  node_aiservice["AI service layer<br/>[AIService.php]"]
  node_llm["Catalog AI adapter<br/>[LlmAIService.php]"]
end

subgraph group_operations["Administration"]
  node_adminbooks["Book administration<br/>[BookController.php]"]
  node_admincats["Category administration"]
  node_adminusers["User administration<br/>[UserController.php]"]
  node_dashboard["Dashboard and statistics"]
  node_stats["Statistics"]
end

node_visitor(("Reader / admin"))
node_gemini{{"Generative AI API"}}

node_visitor -->|"requests pages"| node_routes
node_routes -->|"dispatches auth"| node_auth
node_routes -->|"dispatches books"| node_bookctl
node_routes -->|"dispatches categories"| node_categoryctl
node_routes -->|"dispatches cart"| node_cartctl
node_routes -->|"dispatches profile"| node_profilectl
node_routes -->|"dispatches chat"| node_aichat
node_routes -->|"dispatches admin books"| node_adminbooks
node_routes -->|"dispatches admin categories"| node_admincats
node_routes -->|"dispatches admin users"| node_adminusers
node_routes -->|"dispatches dashboard"| node_dashboard
node_routes -->|"dispatches statistics"| node_stats
node_routes -->|"gates admin routes"| node_rbac
node_auth -->|"renders auth pages"| node_views
node_bookctl -->|"queries catalog"| node_books
node_bookctl -->|"queries categories"| node_categories
node_bookctl -->|"renders book results"| node_views
node_categoryctl -->|"queries categories"| node_categories
node_categoryctl -->|"renders category results"| node_views
node_cartctl -->|"checks and updates copies"| node_books
node_cartctl -->|"renders cart"| node_views
node_profilectl -->|"reads and updates"| node_profile
node_profilectl -->|"renders profile"| node_views
node_browser -->|"posts chat"| node_aichat
node_aichat -->|"requests response"| node_aiservice
node_llm -->|"queries book tools"| node_books
node_llm -->|"queries category tools"| node_categories
node_llm -->|"sends prompts"| node_gemini
node_adminbooks -->|"manages catalog"| node_books
node_adminbooks -->|"loads categories"| node_categories
node_admincats -->|"manages categories"| node_categories
node_adminusers -->|"renders user pages"| node_views
node_dashboard -->|"renders dashboard"| node_views
node_stats -->|"renders statistics"| node_views
node_books -->|"persists records"| node_db
node_categories -->|"persists records"| node_db
node_profile -->|"persists profile"| node_db
node_recommend -->|"matches book data"| node_books
node_recommend -->|"uses preferences"| node_profile

click node_routes "https://github.com/salmawaleed-dev/book-nest-app/blob/main/routes/web.php"
click node_views "https://github.com/salmawaleed-dev/book-nest-app/tree/main/resources/views"
click node_browser "https://github.com/salmawaleed-dev/book-nest-app/blob/main/public/js/app.js"
click node_auth "https://github.com/salmawaleed-dev/book-nest-app/tree/main/app/Http/Controllers/Auth"
click node_rbac "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Middleware/EnsureUserIsAdmin.php"
click node_bookctl "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/BookController.php"
click node_categoryctl "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/CategoryController.php"
click node_cartctl "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/CartController.php"
click node_books "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Models/Book.php"
click node_categories "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Models/Category.php"
click node_db "https://github.com/salmawaleed-dev/book-nest-app/blob/main/config/database.php"
click node_profilectl "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/ProfileController.php"
click node_profile "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Models/Profile.php"
click node_recommend "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Services/RecommendationService.php"
click node_aichat "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/AIChatController.php"
click node_aiservice "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Services/AIService.php"
click node_llm "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Services/LlmAIService.php"
click node_adminbooks "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/BookController.php"
click node_admincats "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/CategoryController.php"
click node_adminusers "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/UserController.php"
click node_dashboard "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/DashboardController.php"
click node_stats "https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/StatisticsController.php"

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_routes,node_views,node_browser toneBlue
class node_auth,node_rbac toneAmber
class node_bookctl,node_categoryctl,node_cartctl,node_books,node_categories,node_db,node_gemini toneMint
class node_profilectl,node_profile,node_recommend,node_aichat,node_aiservice,node_llm toneRose
class node_adminbooks,node_admincats,node_adminusers,node_dashboard,node_stats,node_visitor toneIndigo
```

## Components

### Web experience

- [Web routes](https://github.com/salmawaleed-dev/book-nest-app/blob/main/routes/web.php): `routes/web.php`
- [Blade interface](https://github.com/salmawaleed-dev/book-nest-app/tree/main/resources/views): `resources/views`
- [Chat browser client](https://github.com/salmawaleed-dev/book-nest-app/blob/main/public/js/app.js): `public/js/app.js`

### Identity and access

- [Authentication](https://github.com/salmawaleed-dev/book-nest-app/tree/main/app/Http/Controllers/Auth): `app/Http/Controllers/Auth`
- [Admin access gate](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Middleware/EnsureUserIsAdmin.php): `app/Http/Middleware/EnsureUserIsAdmin.php`

### Library catalog

- [Book discovery](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/BookController.php): `app/Http/Controllers/BookController.php`
- [Category browsing](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/CategoryController.php): `app/Http/Controllers/CategoryController.php`
- [Cart and borrowing](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/CartController.php): `app/Http/Controllers/CartController.php`
- [Books](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Models/Book.php): `app/Models/Book.php`
- [Categories](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Models/Category.php): `app/Models/Category.php`
- [Application database](https://github.com/salmawaleed-dev/book-nest-app/blob/main/config/database.php): `config/database.php`

### Personal discovery

- [Profile management](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/ProfileController.php): `app/Http/Controllers/ProfileController.php`
- [User profile](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Models/Profile.php): `app/Models/Profile.php`
- [Recommendations](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Services/RecommendationService.php): `app/Services/RecommendationService.php`
- [AI chat endpoint](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/AIChatController.php): `app/Http/Controllers/AIChatController.php`
- [AI service layer](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Services/AIService.php): `app/Services/AIService.php`
- [Catalog AI adapter](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Services/LlmAIService.php): `app/Services/LlmAIService.php`

### Administration

- [Book administration](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/BookController.php): `app/Http/Controllers/Admin/BookController.php`
- [Category administration](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/CategoryController.php): `app/Http/Controllers/Admin/CategoryController.php`
- [User administration](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/UserController.php): `app/Http/Controllers/Admin/UserController.php`
- [Dashboard and statistics](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/DashboardController.php): `app/Http/Controllers/Admin/DashboardController.php`
- [Statistics](https://github.com/salmawaleed-dev/book-nest-app/blob/main/app/Http/Controllers/Admin/StatisticsController.php): `app/Http/Controllers/Admin/StatisticsController.php`

### Other components

- **Reader / admin**
- **Generative AI API**

## Connections

- Reader / admin → Web routes: requests pages
- Web routes → Authentication: dispatches auth
- Web routes → Book discovery: dispatches books
- Web routes → Category browsing: dispatches categories
- Web routes → Cart and borrowing: dispatches cart
- Web routes → Profile management: dispatches profile
- Web routes → AI chat endpoint: dispatches chat
- Web routes → Book administration: dispatches admin books
- Web routes → Category administration: dispatches admin categories
- Web routes → User administration: dispatches admin users
- Web routes → Dashboard and statistics: dispatches dashboard
- Web routes → Statistics: dispatches statistics
- Web routes → Admin access gate: gates admin routes
- Authentication → Blade interface: renders auth pages
- Book discovery → Books: queries catalog
- Book discovery → Categories: queries categories
- Book discovery → Blade interface: renders book results
- Category browsing → Categories: queries categories
- Category browsing → Blade interface: renders category results
- Cart and borrowing → Books: checks and updates copies
- Cart and borrowing → Blade interface: renders cart
- Profile management → User profile: reads and updates
- Profile management → Blade interface: renders profile
- Chat browser client → AI chat endpoint: posts chat
- AI chat endpoint → AI service layer: requests response
- Catalog AI adapter → Books: queries book tools
- Catalog AI adapter → Categories: queries category tools
- Catalog AI adapter → Generative AI API: sends prompts
- Book administration → Books: manages catalog
- Book administration → Categories: loads categories
- Category administration → Categories: manages categories
- User administration → Blade interface: renders user pages
- Dashboard and statistics → Blade interface: renders dashboard
- Statistics → Blade interface: renders statistics
- Books → Application database: persists records
- Categories → Application database: persists records
- User profile → Application database: persists profile
- Recommendations → Books: matches book data
- Recommendations → User profile: uses preferences
