# sayandutta07/bachatbasket architecture

> Architecture diagram of the GitHub repository sayandutta07/bachatbasket, 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/sayandutta07/bachatbasket
- Repository: https://github.com/sayandutta07/bachatbasket

## Overview

Bachatbasket is a quick-commerce comparison and basket-optimization application. Its API serves product prices and platform details, checks delivery serviceability, compares single-store and split-store basket totals, and supports user profiles and saved orders. The documented workflow is sparse, so the map follows the sampled Express routes and their actual calls: the server dispatches requests, the basket route invokes the optimizer, and routes and optimizer access SQLite. The server also serves the frontend files. Frontend behavior is not sampled; reverse-geocoding’s external service is explicit in source.

Main entry points: [`server.js`](https://github.com/sayandutta07/bachatbasket/blob/main/server.js) (Express server), [`db.js`](https://github.com/sayandutta07/bachatbasket/blob/main/db.js) (Platform and product data), [`routes/serviceability.js`](https://github.com/sayandutta07/bachatbasket/blob/main/routes/serviceability.js) (Serviceability), [`index.html`](https://github.com/sayandutta07/bachatbasket/blob/main/index.html) (Web interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API routing"]
  node_server["Express server<br/>[server.js]"]
end

subgraph group_comparison["Comparison and location"]
  node_products["Product comparison<br/>[products.js]"]
  node_platforms["Platform details<br/>[platforms.js]"]
  node_basket["Basket endpoint<br/>[basket.js]"]
  node_optimizer["Basket optimizer<br/>[optimizer.js]"]
  node_serviceability["Serviceability<br/>[serviceability.js]"]
end

subgraph group_accounts["Accounts and orders"]
  node_auth["User profiles<br/>[auth.js]"]
  node_orders["Order history<br/>[orders.js]"]
end

subgraph group_storage["Persistent data"]
  node_platformdb[("Platform and product data<br/>[db.js]")]
  node_sqlitedb[("SQLite database<br/>[bachatbasket.db]")]
end

node_shopper(("Shopper"))
node_web["Web interface<br/>[index.html]"]
node_geocoder["Nominatim"]

node_shopper -.->|"uses"| node_web
node_web -.->|"API requests"| node_server
node_server -->|"routes requests"| node_products
node_server -->|"routes requests"| node_platforms
node_server -->|"routes requests"| node_basket
node_server -->|"routes requests"| node_serviceability
node_server -->|"routes requests"| node_auth
node_server -->|"routes requests"| node_orders
node_server -->|"serves files"| node_web
node_basket -->|"calls"| node_optimizer
node_products -->|"reads and writes"| node_platformdb
node_platforms -->|"reads and writes"| node_platformdb
node_optimizer -->|"reads"| node_platformdb
node_serviceability -->|"reads"| node_platformdb
node_auth -->|"reads and writes"| node_platformdb
node_orders -->|"reads and writes"| node_platformdb
node_server -->|"initializes"| node_platformdb
node_platformdb -->|"opens"| node_sqlitedb
node_serviceability -->|"reverse geocodes"| node_geocoder

click node_web "https://github.com/sayandutta07/bachatbasket/blob/main/index.html"
click node_server "https://github.com/sayandutta07/bachatbasket/blob/main/server.js"
click node_products "https://github.com/sayandutta07/bachatbasket/blob/main/routes/products.js"
click node_platforms "https://github.com/sayandutta07/bachatbasket/blob/main/routes/platforms.js"
click node_basket "https://github.com/sayandutta07/bachatbasket/blob/main/routes/basket.js"
click node_optimizer "https://github.com/sayandutta07/bachatbasket/blob/main/optimizer.js"
click node_serviceability "https://github.com/sayandutta07/bachatbasket/blob/main/routes/serviceability.js"
click node_auth "https://github.com/sayandutta07/bachatbasket/blob/main/routes/auth.js"
click node_orders "https://github.com/sayandutta07/bachatbasket/blob/main/routes/orders.js"
click node_platformdb "https://github.com/sayandutta07/bachatbasket/blob/main/db.js"
click node_sqlitedb "https://github.com/sayandutta07/bachatbasket/blob/main/bachatbasket.db"

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_server toneBlue
class node_products,node_platforms,node_basket,node_optimizer,node_serviceability toneAmber
class node_auth,node_orders toneMint
class node_platformdb,node_sqlitedb toneRose
class node_shopper,node_geocoder toneIndigo
class node_web toneTeal
```

## Components

### API routing

- [Express server](https://github.com/sayandutta07/bachatbasket/blob/main/server.js): `server.js`

### Comparison and location

- [Product comparison](https://github.com/sayandutta07/bachatbasket/blob/main/routes/products.js): `routes/products.js`
- [Platform details](https://github.com/sayandutta07/bachatbasket/blob/main/routes/platforms.js): `routes/platforms.js`
- [Basket endpoint](https://github.com/sayandutta07/bachatbasket/blob/main/routes/basket.js): `routes/basket.js`
- [Basket optimizer](https://github.com/sayandutta07/bachatbasket/blob/main/optimizer.js): `optimizer.js`
- [Serviceability](https://github.com/sayandutta07/bachatbasket/blob/main/routes/serviceability.js): `routes/serviceability.js`

### Accounts and orders

- [User profiles](https://github.com/sayandutta07/bachatbasket/blob/main/routes/auth.js): `routes/auth.js`
- [Order history](https://github.com/sayandutta07/bachatbasket/blob/main/routes/orders.js): `routes/orders.js`

### Persistent data

- [Platform and product data](https://github.com/sayandutta07/bachatbasket/blob/main/db.js): `db.js`
- [SQLite database](https://github.com/sayandutta07/bachatbasket/blob/main/bachatbasket.db): `bachatbasket.db`

### Other components

- **Shopper**
- [Web interface](https://github.com/sayandutta07/bachatbasket/blob/main/index.html): `index.html`
- **Nominatim**

## Connections

- Shopper → Web interface: uses
- Web interface → Express server: API requests
- Express server → Product comparison: routes requests (evidence: `server.js`)
- Express server → Platform details: routes requests (evidence: `server.js`)
- Express server → Basket endpoint: routes requests (evidence: `server.js`)
- Express server → Serviceability: routes requests (evidence: `server.js`)
- Express server → User profiles: routes requests (evidence: `server.js`)
- Express server → Order history: routes requests (evidence: `server.js`)
- Express server → Web interface: serves files (evidence: `server.js`)
- Basket endpoint → Basket optimizer: calls (evidence: `routes/basket.js`)
- Product comparison → Platform and product data: reads and writes (evidence: `routes/products.js`)
- Platform details → Platform and product data: reads and writes (evidence: `routes/platforms.js`)
- Basket optimizer → Platform and product data: reads (evidence: `optimizer.js`)
- Serviceability → Platform and product data: reads (evidence: `routes/serviceability.js`)
- User profiles → Platform and product data: reads and writes (evidence: `routes/auth.js`)
- Order history → Platform and product data: reads and writes (evidence: `routes/orders.js`)
- Express server → Platform and product data: initializes (evidence: `server.js`)
- Platform and product data → SQLite database: opens (evidence: `db.js`)
- Serviceability → Nominatim: reverse geocodes (evidence: `routes/serviceability.js`)
