# vijeemani/book_application architecture

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

- Interactive diagram: https://gitdiagram.com/vijeemani/book_application
- Repository: https://github.com/vijeemani/book_application

## Overview

Pubhub is a small Spring Boot book application. Users can reach a welcome page, register or submit login credentials, and request a book list. The book-list controller obtains records through a service and repository, then renders them in a view; user actions call the user repository directly. The models represent persisted books and users, and the repository interfaces use Spring Data JPA. Email sending and LocalDate conversion exist as runtime utilities, but the excerpts do not show them connected to a user workflow.

Main entry points: [`src/main/java/com/rev/pubhub/controller/UserController.java`](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/UserController.java) (User Controller), [`src/main/java/com/rev/pubhub/controller/BookController.java`](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/BookController.java) (Book Controller), [`src/main/java/com/rev/pubhub/jsp/UserRepository.java`](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/jsp/UserRepository.java) (User Repository), [`src/main/java/com/rev/pubhub/controller/HomeController.java`](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/HomeController.java) (Home Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web and Views"]
  node_home["Home Controller"]
  node_welcome["Welcome View<br/>[welcome.jsp]"]
  node_user_controller["User Controller"]
  node_register_view["Registration View<br/>[register.jsp]"]
  node_login_view["Login View<br/>[login.jsp]"]
  node_board_view["Board View<br/>[board.jsp]"]
  node_book_controller["Book Controller"]
  node_book_view["Book List View<br/>[user_view.jsp]"]
  node_app["Spring Boot App"]
end

subgraph group_domain["Domain and Persistence"]
  node_book_service["Book Service<br/>[BookService.java]"]
  node_book_repo["Book Repository"]
  node_book_model["Book Model<br/>[Book.java]"]
  node_user_repo["User Repository"]
  node_user_model["User Model<br/>[User.java]"]
end

subgraph group_integration["Runtime Utilities"]
  node_date_converter["Date Converter"]
  node_email_util["Email Utility<br/>[EmailUtil.java]"]
end

node_visitor(("Visitor"))
node_mail_sender["Mail Sender"]

node_visitor -->|"requests home"| node_home
node_home -->|"renders"| node_welcome
node_visitor -->|"submits user actions"| node_user_controller
node_user_controller -->|"renders"| node_register_view
node_user_controller -->|"renders"| node_login_view
node_user_controller -->|"renders"| node_board_view
node_user_controller -->|"saves user"| node_user_repo
node_user_controller -->|"checks credentials"| node_user_repo
node_user_repo -->|"persists"| node_user_model
node_visitor -->|"requests book list"| node_book_controller
node_book_controller -->|"fetches books"| node_book_service
node_book_service -->|"loads all"| node_book_repo
node_book_repo -->|"persists"| node_book_model
node_book_controller -->|"renders list"| node_book_view
node_email_util -->|"sends mail"| node_mail_sender

click node_home "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/HomeController.java"
click node_welcome "https://github.com/vijeemani/book_application/blob/master/src/main/webapp/welcome.jsp"
click node_user_controller "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/UserController.java"
click node_register_view "https://github.com/vijeemani/book_application/blob/master/src/main/webapp/register.jsp"
click node_login_view "https://github.com/vijeemani/book_application/blob/master/src/main/webapp/login.jsp"
click node_board_view "https://github.com/vijeemani/book_application/blob/master/src/main/webapp/board.jsp"
click node_book_controller "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/BookController.java"
click node_book_view "https://github.com/vijeemani/book_application/blob/master/src/main/webapp/user_view.jsp"
click node_app "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/PubhubApplication.java"
click node_book_service "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/service/BookService.java"
click node_book_repo "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/jsp/BookRepository.java"
click node_book_model "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/model/Book.java"
click node_user_repo "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/jsp/UserRepository.java"
click node_user_model "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/model/User.java"
click node_date_converter "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/convertor/LocalDateConvertor.java"
click node_email_util "https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/util/EmailUtil.java"

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_home,node_welcome,node_user_controller,node_register_view,node_login_view,node_board_view,node_book_controller,node_book_view,node_app toneBlue
class node_book_service,node_book_repo,node_book_model,node_user_repo,node_user_model toneAmber
class node_date_converter,node_email_util toneMint
class node_visitor,node_mail_sender toneIndigo
```

## Components

### Web and Views

- [Home Controller](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/HomeController.java): `src/main/java/com/rev/pubhub/controller/HomeController.java`
- [Welcome View](https://github.com/vijeemani/book_application/blob/master/src/main/webapp/welcome.jsp): `src/main/webapp/welcome.jsp`
- [User Controller](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/UserController.java): `src/main/java/com/rev/pubhub/controller/UserController.java`
- [Registration View](https://github.com/vijeemani/book_application/blob/master/src/main/webapp/register.jsp): `src/main/webapp/register.jsp`
- [Login View](https://github.com/vijeemani/book_application/blob/master/src/main/webapp/login.jsp): `src/main/webapp/login.jsp`
- [Board View](https://github.com/vijeemani/book_application/blob/master/src/main/webapp/board.jsp): `src/main/webapp/board.jsp`
- [Book Controller](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/controller/BookController.java): `src/main/java/com/rev/pubhub/controller/BookController.java`
- [Book List View](https://github.com/vijeemani/book_application/blob/master/src/main/webapp/user_view.jsp): `src/main/webapp/user_view.jsp`
- [Spring Boot App](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/PubhubApplication.java): `src/main/java/com/rev/pubhub/PubhubApplication.java`

### Domain and Persistence

- [Book Service](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/service/BookService.java): `src/main/java/com/rev/pubhub/service/BookService.java`
- [Book Repository](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/jsp/BookRepository.java): `src/main/java/com/rev/pubhub/jsp/BookRepository.java`
- [Book Model](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/model/Book.java): `src/main/java/com/rev/pubhub/model/Book.java`
- [User Repository](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/jsp/UserRepository.java): `src/main/java/com/rev/pubhub/jsp/UserRepository.java`
- [User Model](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/model/User.java): `src/main/java/com/rev/pubhub/model/User.java`

### Runtime Utilities

- [Date Converter](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/convertor/LocalDateConvertor.java): `src/main/java/com/rev/pubhub/convertor/LocalDateConvertor.java`
- [Email Utility](https://github.com/vijeemani/book_application/blob/master/src/main/java/com/rev/pubhub/util/EmailUtil.java): `src/main/java/com/rev/pubhub/util/EmailUtil.java`

### Other components

- **Visitor**
- **Mail Sender**

## Connections

- Visitor → Home Controller: requests home (evidence: `src/main/java/com/rev/pubhub/controller/HomeController.java`)
- Home Controller → Welcome View: renders (evidence: `src/main/java/com/rev/pubhub/controller/HomeController.java`)
- Visitor → User Controller: submits user actions (evidence: `src/main/java/com/rev/pubhub/controller/UserController.java`)
- User Controller → Registration View: renders (evidence: `src/main/java/com/rev/pubhub/controller/UserController.java`)
- User Controller → Login View: renders (evidence: `src/main/java/com/rev/pubhub/controller/UserController.java`)
- User Controller → Board View: renders (evidence: `src/main/java/com/rev/pubhub/controller/UserController.java`)
- User Controller → User Repository: saves user (evidence: `src/main/java/com/rev/pubhub/controller/UserController.java`)
- User Controller → User Repository: checks credentials (evidence: `src/main/java/com/rev/pubhub/controller/UserController.java`)
- User Repository → User Model: persists (evidence: `src/main/java/com/rev/pubhub/jsp/UserRepository.java`)
- Visitor → Book Controller: requests book list (evidence: `src/main/java/com/rev/pubhub/controller/BookController.java`)
- Book Controller → Book Service: fetches books (evidence: `src/main/java/com/rev/pubhub/controller/BookController.java`)
- Book Service → Book Repository: loads all (evidence: `src/main/java/com/rev/pubhub/service/BookService.java`)
- Book Repository → Book Model: persists (evidence: `src/main/java/com/rev/pubhub/jsp/BookRepository.java`)
- Book Controller → Book List View: renders list (evidence: `src/main/java/com/rev/pubhub/controller/BookController.java`)
- Email Utility → Mail Sender: sends mail (evidence: `src/main/java/com/rev/pubhub/util/EmailUtil.java`)
