# nahiyanasir/shastho_mart architecture

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

- Interactive diagram: https://gitdiagram.com/nahiyanasir/shastho_mart
- Repository: https://github.com/nahiyanasir/shastho_mart

## Overview

ShasthoMart is a medicine marketplace API. Users authenticate and then browse medicines and categories, place and track orders, and submit reviews; sellers manage medicines and seller orders, while admins manage users and marketplace data. The graph follows the Express entry point through routes, controllers, and services to PostgreSQL. Service behavior for several modules is not included in the excerpts, so their internal database operations are shown only where supported by the bundled source.

Main entry points: [`src/app.ts`](https://github.com/nahiyanasir/shastho_mart/blob/main/src/app.ts) (Express API), [`src/lib/prisma.ts`](https://github.com/nahiyanasir/shastho_mart/blob/main/src/lib/prisma.ts) (Prisma client), [`src/middleware/middleware.ts`](https://github.com/nahiyanasir/shastho_mart/blob/main/src/middleware/middleware.ts) (Session middleware), [`src/modules/medicine/medicineRoute.ts`](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/medicine/medicineRoute.ts) (Medicine routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["API and auth"]
  node_api["Express API<br/>[app.ts]"]
  node_auth["Better Auth<br/>[auth.ts]"]
  node_access["Session middleware<br/>[middleware.ts]"]
  node_prisma["Prisma client<br/>[prisma.ts]"]
end

subgraph group_catalog["Medicine catalog"]
  node_medicine_routes["Medicine routes<br/>[medicineRoute.ts]"]
  node_medicine_controller["Medicine controller"]
  node_medicine_service["Medicine service<br/>[medicineService.ts]"]
  node_category_routes["Category routes<br/>[categoriesRoute.ts]"]
  node_category_controller["Category controller"]
  node_category_service["Category service"]
end

subgraph group_commerce["Orders and reviews"]
  node_order_routes["Order routes<br/>[ordersRoute.ts]"]
  node_order_controller["Order controller"]
  node_order_service["Order service<br/>[ordersService.ts]"]
  node_review_routes["Review routes<br/>[reviewRoute.ts]"]
  node_review_controller["Review controller"]
  node_review_service["Review service<br/>[reviewService.ts]"]
end

subgraph group_management["Users and statistics"]
  node_user_routes["User routes<br/>[user.route.ts]"]
  node_user_controller["User controller<br/>[user.controller.ts]"]
  node_user_service["User service<br/>[user.service.ts]"]
  node_stats_routes["Stats routes<br/>[stats.route.ts]"]
  node_stats_controller["Stats controller"]
  node_stats_service["Stats service<br/>[stats.service.ts]"]
end

node_user(("Customer, seller, admin"))
node_postgres[("PostgreSQL")]

node_user -->|"sends requests"| node_api
node_api -->|"mounts routes"| node_medicine_routes
node_api -->|"mounts routes"| node_category_routes
node_api -->|"mounts routes"| node_order_routes
node_api -->|"mounts routes"| node_review_routes
node_api -->|"mounts routes"| node_user_routes
node_api -->|"mounts routes"| node_stats_routes
node_api -->|"dispatches auth"| node_auth
node_medicine_routes -->|"checks session"| node_access
node_order_routes -->|"checks session"| node_access
node_review_routes -->|"checks session"| node_access
node_user_routes -->|"checks session"| node_access
node_access -->|"gets session"| node_auth
node_medicine_routes -->|"dispatches requests"| node_medicine_controller
node_medicine_controller -->|"calls"| node_medicine_service
node_category_routes -->|"dispatches requests"| node_category_controller
node_category_controller -->|"calls"| node_category_service
node_order_routes -->|"dispatches requests"| node_order_controller
node_order_controller -->|"calls"| node_order_service
node_review_routes -->|"dispatches requests"| node_review_controller
node_review_controller -->|"calls"| node_review_service
node_user_routes -->|"dispatches requests"| node_user_controller
node_user_controller -->|"calls"| node_user_service
node_stats_routes -->|"dispatches requests"| node_stats_controller
node_stats_controller -->|"calls"| node_stats_service
node_medicine_service -->|"queries"| node_prisma
node_category_service -->|"queries"| node_prisma
node_order_service -->|"queries"| node_prisma
node_review_service -->|"queries"| node_prisma
node_user_service -->|"queries"| node_prisma
node_stats_service -->|"counts records"| node_prisma
node_auth -->|"uses adapter"| node_prisma
node_prisma -->|"reads and writes"| node_postgres

click node_api "https://github.com/nahiyanasir/shastho_mart/blob/main/src/app.ts"
click node_auth "https://github.com/nahiyanasir/shastho_mart/blob/main/src/lib/auth.ts"
click node_access "https://github.com/nahiyanasir/shastho_mart/blob/main/src/middleware/middleware.ts"
click node_medicine_routes "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/medicine/medicineRoute.ts"
click node_medicine_controller "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/medicine/medicineController.ts"
click node_medicine_service "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/medicine/medicineService.ts"
click node_category_routes "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/categories/categoriesRoute.ts"
click node_category_controller "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/categories/categoriesController.ts"
click node_category_service "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/categories/categoriesService.ts"
click node_order_routes "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/orders/ordersRoute.ts"
click node_order_controller "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/orders/ordersController.ts"
click node_order_service "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/orders/ordersService.ts"
click node_review_routes "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/review/reviewRoute.ts"
click node_review_controller "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/review/reviewController.ts"
click node_review_service "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/review/reviewService.ts"
click node_user_routes "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/users/user.route.ts"
click node_user_controller "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/users/user.controller.ts"
click node_user_service "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/users/user.service.ts"
click node_stats_routes "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/stats/stats.route.ts"
click node_stats_controller "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/stats/stats.controller.ts"
click node_stats_service "https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/stats/stats.service.ts"
click node_prisma "https://github.com/nahiyanasir/shastho_mart/blob/main/src/lib/prisma.ts"

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_api,node_auth,node_access,node_prisma toneBlue
class node_medicine_routes,node_medicine_controller,node_medicine_service,node_category_routes,node_category_controller,node_category_service,node_postgres toneAmber
class node_order_routes,node_order_controller,node_order_service,node_review_routes,node_review_controller,node_review_service toneMint
class node_user_routes,node_user_controller,node_user_service,node_stats_routes,node_stats_controller,node_stats_service toneRose
class node_user toneIndigo
```

## Components

### API and auth

- [Express API](https://github.com/nahiyanasir/shastho_mart/blob/main/src/app.ts): `src/app.ts`
- [Better Auth](https://github.com/nahiyanasir/shastho_mart/blob/main/src/lib/auth.ts): `src/lib/auth.ts`
- [Session middleware](https://github.com/nahiyanasir/shastho_mart/blob/main/src/middleware/middleware.ts): `src/middleware/middleware.ts`
- [Prisma client](https://github.com/nahiyanasir/shastho_mart/blob/main/src/lib/prisma.ts): `src/lib/prisma.ts`

### Medicine catalog

- [Medicine routes](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/medicine/medicineRoute.ts): `src/modules/medicine/medicineRoute.ts`
- [Medicine controller](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/medicine/medicineController.ts): `src/modules/medicine/medicineController.ts`
- [Medicine service](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/medicine/medicineService.ts): `src/modules/medicine/medicineService.ts`
- [Category routes](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/categories/categoriesRoute.ts): `src/modules/categories/categoriesRoute.ts`
- [Category controller](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/categories/categoriesController.ts): `src/modules/categories/categoriesController.ts`
- [Category service](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/categories/categoriesService.ts): `src/modules/categories/categoriesService.ts`

### Orders and reviews

- [Order routes](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/orders/ordersRoute.ts): `src/modules/orders/ordersRoute.ts`
- [Order controller](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/orders/ordersController.ts): `src/modules/orders/ordersController.ts`
- [Order service](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/orders/ordersService.ts): `src/modules/orders/ordersService.ts`
- [Review routes](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/review/reviewRoute.ts): `src/modules/review/reviewRoute.ts`
- [Review controller](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/review/reviewController.ts): `src/modules/review/reviewController.ts`
- [Review service](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/review/reviewService.ts): `src/modules/review/reviewService.ts`

### Users and statistics

- [User routes](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/users/user.route.ts): `src/modules/users/user.route.ts`
- [User controller](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/users/user.controller.ts): `src/modules/users/user.controller.ts`
- [User service](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/users/user.service.ts): `src/modules/users/user.service.ts`
- [Stats routes](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/stats/stats.route.ts): `src/modules/stats/stats.route.ts`
- [Stats controller](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/stats/stats.controller.ts): `src/modules/stats/stats.controller.ts`
- [Stats service](https://github.com/nahiyanasir/shastho_mart/blob/main/src/modules/stats/stats.service.ts): `src/modules/stats/stats.service.ts`

### Other components

- **Customer, seller, admin**
- **PostgreSQL**

## Connections

- Customer, seller, admin → Express API: sends requests
- Express API → Medicine routes: mounts routes
- Express API → Category routes: mounts routes
- Express API → Order routes: mounts routes
- Express API → Review routes: mounts routes
- Express API → User routes: mounts routes
- Express API → Stats routes: mounts routes
- Express API → Better Auth: dispatches auth
- Medicine routes → Session middleware: checks session
- Order routes → Session middleware: checks session
- Review routes → Session middleware: checks session
- User routes → Session middleware: checks session
- Session middleware → Better Auth: gets session
- Medicine routes → Medicine controller: dispatches requests
- Medicine controller → Medicine service: calls
- Category routes → Category controller: dispatches requests
- Category controller → Category service: calls
- Order routes → Order controller: dispatches requests
- Order controller → Order service: calls
- Review routes → Review controller: dispatches requests
- Review controller → Review service: calls
- User routes → User controller: dispatches requests
- User controller → User service: calls
- Stats routes → Stats controller: dispatches requests
- Stats controller → Stats service: calls
- Medicine service → Prisma client: queries
- Category service → Prisma client: queries
- Order service → Prisma client: queries
- Review service → Prisma client: queries
- User service → Prisma client: queries
- Stats service → Prisma client: counts records
- Better Auth → Prisma client: uses adapter
- Prisma client → PostgreSQL: reads and writes
