# s-md-ahmed/productreview architecture

> Architecture diagram of the GitHub repository s-md-ahmed/productreview, 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/s-md-ahmed/productreview
- Repository: https://github.com/s-md-ahmed/productreview

## Overview

Product Review Portal supports account registration and login, product browsing and creation with image-URL title detection, and product reviews with create, update, and delete operations. The browser calls Express APIs; route handlers perform persistence through Mongoose models in MongoDB. The server also serves the frontend. Source excerpts confirm the product and account API behavior, but do not establish review ownership enforcement or session-backed authentication despite the README’s claims.

Main entry points: [`backend/server.js`](https://github.com/s-md-ahmed/productreview/blob/main/backend/server.js) (HTTP Server), [`backend/routes/products.js`](https://github.com/s-md-ahmed/productreview/blob/main/backend/routes/products.js) (Product Routes), [`frontend/script.js`](https://github.com/s-md-ahmed/productreview/blob/main/frontend/script.js) (UI Logic), [`frontend`](https://github.com/s-md-ahmed/productreview/tree/main/frontend) (Web Pages)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["Browser UI"]
  node_pages["Web Pages"]
  node_browser_logic["UI Logic<br/>[script.js]"]
end

subgraph group_api["Express API"]
  node_server["HTTP Server<br/>[server.js]"]
  node_user_routes["Account Routes<br/>[user.js]"]
  node_product_routes["Product Routes<br/>[products.js]"]
end

subgraph group_domain["Domain Models"]
  node_user_model["User Model<br/>[User.js]"]
  node_product_model["Product Model<br/>[Product.js]"]
  node_review_model["Review Model<br/>[Review.js]"]
end

subgraph group_persistence["Persistence"]
  node_mongo[("MongoDB")]
end

node_visitor(("Visitor"))

node_visitor -->|"uses"| node_pages
node_server -->|"serves"| node_pages
node_server -->|"mounts"| node_user_routes
node_server -->|"mounts"| node_product_routes
node_server -->|"connects"| node_mongo
node_pages -->|"runs"| node_browser_logic
node_browser_logic -->|"requests account"| node_user_routes
node_browser_logic -->|"requests products"| node_product_routes
node_user_routes -->|"queries"| node_user_model
node_product_routes -->|"queries"| node_product_model
node_product_routes -->|"queries"| node_review_model
node_user_model -->|"persists users"| node_mongo
node_product_model -->|"persists products"| node_mongo
node_review_model -->|"persists reviews"| node_mongo

click node_server "https://github.com/s-md-ahmed/productreview/blob/main/backend/server.js"
click node_pages "https://github.com/s-md-ahmed/productreview/tree/main/frontend"
click node_browser_logic "https://github.com/s-md-ahmed/productreview/blob/main/frontend/script.js"
click node_user_routes "https://github.com/s-md-ahmed/productreview/blob/main/backend/routes/user.js"
click node_product_routes "https://github.com/s-md-ahmed/productreview/blob/main/backend/routes/products.js"
click node_user_model "https://github.com/s-md-ahmed/productreview/blob/main/backend/models/User.js"
click node_product_model "https://github.com/s-md-ahmed/productreview/blob/main/backend/models/Product.js"
click node_review_model "https://github.com/s-md-ahmed/productreview/blob/main/backend/models/Review.js"

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_browser_logic toneBlue
class node_server,node_user_routes,node_product_routes toneAmber
class node_user_model,node_product_model,node_review_model toneMint
class node_mongo toneRose
class node_visitor toneIndigo
```

## Components

### Browser UI

- [Web Pages](https://github.com/s-md-ahmed/productreview/tree/main/frontend): `frontend`
- [UI Logic](https://github.com/s-md-ahmed/productreview/blob/main/frontend/script.js): `frontend/script.js`

### Express API

- [HTTP Server](https://github.com/s-md-ahmed/productreview/blob/main/backend/server.js): `backend/server.js`
- [Account Routes](https://github.com/s-md-ahmed/productreview/blob/main/backend/routes/user.js): `backend/routes/user.js`
- [Product Routes](https://github.com/s-md-ahmed/productreview/blob/main/backend/routes/products.js): `backend/routes/products.js`

### Domain Models

- [User Model](https://github.com/s-md-ahmed/productreview/blob/main/backend/models/User.js): `backend/models/User.js`
- [Product Model](https://github.com/s-md-ahmed/productreview/blob/main/backend/models/Product.js): `backend/models/Product.js`
- [Review Model](https://github.com/s-md-ahmed/productreview/blob/main/backend/models/Review.js): `backend/models/Review.js`

### Persistence

- **MongoDB**

### Other components

- **Visitor**

## Connections

- Visitor → Web Pages: uses
- HTTP Server → Web Pages: serves
- HTTP Server → Account Routes: mounts
- HTTP Server → Product Routes: mounts
- HTTP Server → MongoDB: connects
- Web Pages → UI Logic: runs
- UI Logic → Account Routes: requests account
- UI Logic → Product Routes: requests products
- Account Routes → User Model: queries
- Product Routes → Product Model: queries
- Product Routes → Review Model: queries
- User Model → MongoDB: persists users
- Product Model → MongoDB: persists products
- Review Model → MongoDB: persists reviews
