# ashrafyawar/book-worm-web-application architecture

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

- Interactive diagram: https://gitdiagram.com/ashrafyawar/book-worm-web-application
- Repository: https://github.com/ashrafyawar/book-worm-web-application

## Overview

Book Worm is a Django book-recommendation web app. A visitor can browse random picks, submit genre preferences for recommendations, or search by genre; Django routes requests to view functions, which use the book dataset and render results. The sampled views also call genre conversion and a KNN module referenced by the source index, but that module is absent from the supplied tree, so it is not represented separately. Firebase supplies book records. The graph reflects the sampled routes and source; templates and the full project-level URL wiring were not provided.

Main entry points: [`pages_app/views.py`](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/views.py) (Views), [`pages_app/readFromFirebase.py`](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/readFromFirebase.py) (Firebase reader), [`pages_app/urls.py`](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/urls.py) (App routes), [`pages_app/models.py`](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/models.py) (Book records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web request handling"]
  node_app_routes["App routes<br/>[urls.py]"]
  node_views["Views<br/>[views.py]"]
end

subgraph group_recommend["Recommendation logic"]
  node_genre_convert["Genre conversion<br/>[convert_gen.py]"]
end

subgraph group_catalog["Book catalog"]
  node_book_records["Book records<br/>[models.py]"]
  node_firebase_reader["Firebase reader"]
end

node_visitor(("Visitor"))
node_firebase_db[("Firebase database")]

node_visitor -->|"requests pages"| node_app_routes
node_app_routes -->|"routes requests"| node_views
node_views -->|"loads catalog"| node_firebase_reader
node_views -->|"converts genres"| node_genre_convert
node_views -->|"creates records"| node_book_records
node_firebase_reader -->|"fetches records"| node_firebase_db
node_firebase_reader -->|"builds records"| node_book_records

click node_app_routes "https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/urls.py"
click node_views "https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/views.py"
click node_genre_convert "https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/convert_gen.py"
click node_book_records "https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/models.py"
click node_firebase_reader "https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/readFromFirebase.py"

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_app_routes,node_views toneBlue
class node_genre_convert,node_firebase_db toneAmber
class node_book_records,node_firebase_reader toneMint
class node_visitor toneIndigo
```

## Components

### Web request handling

- [App routes](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/urls.py): `pages_app/urls.py`
- [Views](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/views.py): `pages_app/views.py`

### Recommendation logic

- [Genre conversion](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/convert_gen.py): `pages_app/convert_gen.py`

### Book catalog

- [Book records](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/models.py): `pages_app/models.py`
- [Firebase reader](https://github.com/ashrafyawar/book-worm-web-application/blob/master/pages_app/readFromFirebase.py): `pages_app/readFromFirebase.py`

### Other components

- **Visitor**
- **Firebase database**

## Connections

- Visitor → App routes: requests pages
- App routes → Views: routes requests (evidence: `pages_app/urls.py`)
- Views → Firebase reader: loads catalog (evidence: `pages_app/views.py`)
- Views → Genre conversion: converts genres (evidence: `pages_app/views.py`)
- Views → Book records: creates records (evidence: `pages_app/views.py`)
- Firebase reader → Firebase database: fetches records (evidence: `pages_app/readFromFirebase.py`)
- Firebase reader → Book records: builds records (evidence: `pages_app/readFromFirebase.py`)
