# siyam1809/pet-shop-management-system architecture

> Architecture diagram of the GitHub repository siyam1809/pet-shop-management-system, 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/siyam1809/pet-shop-management-system
- Repository: https://github.com/siyam1809/pet-shop-management-system

## Overview

This is a full-stack pet-shop management system: customers browse pets and accessories, submit inquiries or appointments, place and track orders, while staff and administrators manage shop operations and deliveries. The React client routes users into public, admin, and rider experiences; its centralized API layer communicates with an Express REST API backed by MongoDB models. The README documents additional capabilities such as reviews, newsletter subscriptions, analytics, and email notifications. Some page and controller implementations were not sampled, so those branches are represented at their documented subsystem level; uncertain wiring is omitted.

Main entry points: [`server/server.js`](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/server.js) (Express API), [`client/src/App.jsx`](https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/App.jsx) (Route application), [`server/config/db.js`](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/config/db.js) (MongoDB), [`server/controllers/orderController.js`](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/orderController.js) (Order workflow)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["React client"]
  node_app["Route application<br/>[App.jsx]"]
  node_storefront["Public storefront"]
  node_adminui["Admin workspace"]
  node_riderui["Rider workspace"]
  node_authctx["Auth state<br/>[AuthContext.jsx]"]
  node_cartctx["Cart state<br/>[CartContext.jsx]"]
  node_api_client["API client<br/>[api.js]"]
end

subgraph group_api["API and workflows"]
  node_express["Express API<br/>[server.js]"]
  node_auth_routes["Authentication routes<br/>[authRoutes.js]"]
  node_pet_routes["Pet routes<br/>[petRoutes.js]"]
  node_order_routes["Order routes<br/>[orderRoutes.js]"]
  node_review_routes["Review routes<br/>[reviewRoutes.js]"]
  node_rider_routes["Rider routes<br/>[riderRoutes.js]"]
  node_inquiry_routes["Inquiry routes<br/>[inquiryRoutes.js]"]
  node_auth_controller["Auth workflow<br/>[authController.js]"]
  node_order_controller["Order workflow<br/>[orderController.js]"]
  node_inquiry_controller["Inquiry and booking"]
  node_rider_controller["Delivery workflow<br/>[riderController.js]"]
end

subgraph group_data["MongoDB domain"]
  node_mongo[("MongoDB<br/>[db.js]")]
  node_user_model["User records<br/>[User.js]"]
  node_pet_model["Pet records<br/>[Pet.js]"]
  node_order_model["Order records<br/>[Order.js]"]
  node_customer_model["Customer records<br/>[Customer.js]"]
  node_delivery_model["Delivery records<br/>[Delivery.js]"]
  node_review_model["Review records<br/>[Review.js]"]
end

subgraph group_integrations["External services"]
  node_email["Email notifications<br/>[sendEmail.js]"]
end

node_visitor(("Shop visitor"))
node_staff(("Admin or staff"))
node_rider(("Delivery rider"))

node_visitor -->|"opens"| node_app
node_staff -->|"opens"| node_app
node_rider -->|"opens"| node_app
node_app -->|"routes to"| node_storefront
node_app -->|"routes to"| node_adminui
node_app -->|"routes to"| node_riderui
node_app -->|"provides state"| node_authctx
node_app -->|"provides state"| node_cartctx
node_storefront -.->|"requests data"| node_api_client
node_adminui -.->|"manages records"| node_api_client
node_riderui -.->|"updates deliveries"| node_api_client
node_authctx -->|"calls"| node_api_client
node_api_client -.->|"calls REST API"| node_express
node_express -->|"mounts"| node_auth_routes
node_express -->|"mounts"| node_pet_routes
node_express -->|"mounts"| node_order_routes
node_express -->|"mounts"| node_review_routes
node_express -->|"mounts"| node_rider_routes
node_express -->|"mounts"| node_inquiry_routes
node_auth_routes -->|"dispatches"| node_auth_controller
node_order_routes -->|"dispatches"| node_order_controller
node_inquiry_routes -->|"dispatches"| node_inquiry_controller
node_rider_routes -->|"dispatches"| node_rider_controller
node_auth_controller -->|"reads and writes"| node_user_model
node_order_controller -->|"reads and writes"| node_order_model
node_order_controller -->|"reads"| node_pet_model
node_order_controller -->|"reads and writes"| node_customer_model
node_order_controller -->|"reads and writes"| node_delivery_model
node_inquiry_controller -->|"creates"| node_order_model
node_inquiry_controller -->|"reads"| node_pet_model
node_inquiry_controller -->|"reads and writes"| node_customer_model
node_inquiry_controller -->|"sends notices"| node_email
node_order_controller -->|"sends notices"| node_email
node_rider_controller -->|"reads and writes"| node_delivery_model
node_rider_controller -->|"reads"| node_order_model
node_rider_controller -->|"reads"| node_user_model
node_review_routes -->|"reads and writes"| node_review_model
node_express -->|"connects"| node_mongo
node_mongo -.->|"stores"| node_user_model
node_mongo -.->|"stores"| node_pet_model
node_mongo -.->|"stores"| node_order_model
node_mongo -.->|"stores"| node_customer_model
node_mongo -.->|"stores"| node_delivery_model
node_mongo -.->|"stores"| node_review_model

click node_app "https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/App.jsx"
click node_storefront "https://github.com/siyam1809/pet-shop-management-system/tree/main/client/src/pages/Public"
click node_adminui "https://github.com/siyam1809/pet-shop-management-system/tree/main/client/src/pages/Admin"
click node_riderui "https://github.com/siyam1809/pet-shop-management-system/tree/main/client/src/pages/Rider"
click node_authctx "https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/context/AuthContext.jsx"
click node_cartctx "https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/context/CartContext.jsx"
click node_api_client "https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/services/api.js"
click node_express "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/server.js"
click node_auth_routes "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/authRoutes.js"
click node_pet_routes "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/petRoutes.js"
click node_order_routes "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/orderRoutes.js"
click node_review_routes "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/reviewRoutes.js"
click node_rider_routes "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/riderRoutes.js"
click node_inquiry_routes "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/inquiryRoutes.js"
click node_auth_controller "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/authController.js"
click node_order_controller "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/orderController.js"
click node_inquiry_controller "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/inquiryController.js"
click node_rider_controller "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/riderController.js"
click node_email "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/utils/sendEmail.js"
click node_mongo "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/config/db.js"
click node_user_model "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/User.js"
click node_pet_model "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Pet.js"
click node_order_model "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Order.js"
click node_customer_model "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Customer.js"
click node_delivery_model "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Delivery.js"
click node_review_model "https://github.com/siyam1809/pet-shop-management-system/blob/main/server/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_app,node_storefront,node_adminui,node_riderui,node_authctx,node_cartctx,node_api_client toneBlue
class node_express,node_auth_routes,node_pet_routes,node_order_routes,node_review_routes,node_rider_routes,node_inquiry_routes,node_auth_controller,node_order_controller,node_inquiry_controller,node_rider_controller toneAmber
class node_mongo,node_user_model,node_pet_model,node_order_model,node_customer_model,node_delivery_model,node_review_model toneMint
class node_email toneRose
class node_visitor,node_staff,node_rider toneIndigo
```

## Components

### React client

- [Route application](https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/App.jsx): `client/src/App.jsx`
- [Public storefront](https://github.com/siyam1809/pet-shop-management-system/tree/main/client/src/pages/Public): `client/src/pages/Public`
- [Admin workspace](https://github.com/siyam1809/pet-shop-management-system/tree/main/client/src/pages/Admin): `client/src/pages/Admin`
- [Rider workspace](https://github.com/siyam1809/pet-shop-management-system/tree/main/client/src/pages/Rider): `client/src/pages/Rider`
- [Auth state](https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/context/AuthContext.jsx): `client/src/context/AuthContext.jsx`
- [Cart state](https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/context/CartContext.jsx): `client/src/context/CartContext.jsx`
- [API client](https://github.com/siyam1809/pet-shop-management-system/blob/main/client/src/services/api.js): `client/src/services/api.js`

### API and workflows

- [Express API](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/server.js): `server/server.js`
- [Authentication routes](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/authRoutes.js): `server/routes/authRoutes.js`
- [Pet routes](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/petRoutes.js): `server/routes/petRoutes.js`
- [Order routes](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/orderRoutes.js): `server/routes/orderRoutes.js`
- [Review routes](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/reviewRoutes.js): `server/routes/reviewRoutes.js`
- [Rider routes](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/riderRoutes.js): `server/routes/riderRoutes.js`
- [Inquiry routes](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/routes/inquiryRoutes.js): `server/routes/inquiryRoutes.js`
- [Auth workflow](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/authController.js): `server/controllers/authController.js`
- [Order workflow](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/orderController.js): `server/controllers/orderController.js`
- [Inquiry and booking](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/inquiryController.js): `server/controllers/inquiryController.js`
- [Delivery workflow](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/controllers/riderController.js): `server/controllers/riderController.js`

### MongoDB domain

- [MongoDB](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/config/db.js): `server/config/db.js`
- [User records](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/User.js): `server/models/User.js`
- [Pet records](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Pet.js): `server/models/Pet.js`
- [Order records](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Order.js): `server/models/Order.js`
- [Customer records](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Customer.js): `server/models/Customer.js`
- [Delivery records](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Delivery.js): `server/models/Delivery.js`
- [Review records](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/models/Review.js): `server/models/Review.js`

### External services

- [Email notifications](https://github.com/siyam1809/pet-shop-management-system/blob/main/server/utils/sendEmail.js): `server/utils/sendEmail.js`

### Other components

- **Shop visitor**
- **Admin or staff**
- **Delivery rider**

## Connections

- Shop visitor → Route application: opens (evidence: `client/src/App.jsx`)
- Admin or staff → Route application: opens (evidence: `client/src/App.jsx`)
- Delivery rider → Route application: opens (evidence: `client/src/App.jsx`)
- Route application → Public storefront: routes to (evidence: `client/src/App.jsx`)
- Route application → Admin workspace: routes to (evidence: `client/src/App.jsx`)
- Route application → Rider workspace: routes to (evidence: `client/src/App.jsx`)
- Route application → Auth state: provides state (evidence: `client/src/App.jsx`)
- Route application → Cart state: provides state (evidence: `client/src/App.jsx`)
- Public storefront → API client: requests data (evidence: `client/src/pages/Public/SubmitReview.jsx`)
- Admin workspace → API client: manages records (evidence: `client/src/pages/Admin/Reviews.jsx`)
- Rider workspace → API client: updates deliveries
- Auth state → API client: calls (evidence: `client/src/context/AuthContext.jsx`)
- API client → Express API: calls REST API (evidence: `README.md`)
- Express API → Authentication routes: mounts (evidence: `server/server.js`)
- Express API → Pet routes: mounts (evidence: `server/server.js`)
- Express API → Order routes: mounts (evidence: `server/server.js`)
- Express API → Review routes: mounts (evidence: `server/server.js`)
- Express API → Rider routes: mounts (evidence: `server/server.js`)
- Express API → Inquiry routes: mounts (evidence: `server/server.js`)
- Authentication routes → Auth workflow: dispatches (evidence: `server/routes/authRoutes.js`)
- Order routes → Order workflow: dispatches (evidence: `server/routes/orderRoutes.js`)
- Inquiry routes → Inquiry and booking: dispatches (evidence: `server/routes/inquiryRoutes.js`)
- Rider routes → Delivery workflow: dispatches (evidence: `server/routes/riderRoutes.js`)
- Auth workflow → User records: reads and writes (evidence: `server/controllers/authController.js`)
- Order workflow → Order records: reads and writes (evidence: `server/controllers/orderController.js`)
- Order workflow → Pet records: reads (evidence: `server/controllers/orderController.js`)
- Order workflow → Customer records: reads and writes (evidence: `server/controllers/orderController.js`)
- Order workflow → Delivery records: reads and writes (evidence: `server/controllers/orderController.js`)
- Inquiry and booking → Order records: creates (evidence: `server/controllers/inquiryController.js`)
- Inquiry and booking → Pet records: reads (evidence: `server/controllers/inquiryController.js`)
- Inquiry and booking → Customer records: reads and writes (evidence: `server/controllers/inquiryController.js`)
- Inquiry and booking → Email notifications: sends notices (evidence: `server/controllers/inquiryController.js`)
- Order workflow → Email notifications: sends notices (evidence: `server/controllers/orderController.js`)
- Delivery workflow → Delivery records: reads and writes (evidence: `server/controllers/riderController.js`)
- Delivery workflow → Order records: reads (evidence: `server/controllers/riderController.js`)
- Delivery workflow → User records: reads (evidence: `server/controllers/riderController.js`)
- Review routes → Review records: reads and writes (evidence: `server/routes/reviewRoutes.js`)
- Express API → MongoDB: connects (evidence: `server/server.js`)
- MongoDB → User records: stores
- MongoDB → Pet records: stores
- MongoDB → Order records: stores
- MongoDB → Customer records: stores
- MongoDB → Delivery records: stores
- MongoDB → Review records: stores
