# karanei-kimutai/findurdrugs architecture

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

- Interactive diagram: https://gitdiagram.com/karanei-kimutai/findurdrugs
- Repository: https://github.com/karanei-kimutai/findurdrugs

## Overview

FindUrDrugs supports medicine discovery and pharmacy operations through a Node.js/TypeScript API backed by PostgreSQL, with an Android client described in the README but absent from the supplied tree. Customers search stocked medicines by location and price, then place delivery orders or pickup reservations; pharmacies manage inventory and advance those requests. Authentication and premium-entitlement checks support these flows. The graph reflects sampled backend handlers and documented database setup; Android implementation details are unavailable.

Main entry points: [`backend/src/server.ts`](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/server.ts) (Express API), [`backend/src/config/db.ts`](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/config/db.ts) (Database connection), [`backend/src/middleware/authMiddleware.ts`](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/middleware/authMiddleware.ts) (JWT and roles), [`backend/src/routes/authRoutes.ts`](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/authRoutes.ts) (Auth routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API and access"]
  node_server["Express API<br/>[server.ts]"]
  node_auth_routes["Auth routes<br/>[authRoutes.ts]"]
  node_auth_controller["Authentication<br/>[authController.ts]"]
  node_auth_middleware["JWT and roles<br/>[authMiddleware.ts]"]
end

subgraph group_discovery["Medicine discovery"]
  node_search_routes["Search routes<br/>[searchRoutes.ts]"]
  node_search_controller["Medicine search"]
end

subgraph group_operations["Pharmacy operations"]
  node_inventory_routes["Inventory routes<br/>[inventoryRoutes.ts]"]
  node_inventory_controller["Inventory management"]
  node_order_routes["Order routes<br/>[orderRoutes.ts]"]
  node_order_controller["Delivery orders<br/>[orderController.ts]"]
  node_reservation_routes["Reservation routes"]
  node_reservation_controller["Pickup reservations"]
end

subgraph group_persistence["Persistence and benefits"]
  node_subscription_routes["Subscription routes"]
  node_subscription_controller["Premium status"]
  node_db_config["Database connection<br/>[db.ts]"]
  node_schema["Relational schema<br/>[01_init.sql]"]
  node_postgres[("PostgreSQL")]
end

node_client(("Android client"))
node_pharmacy(("Pharmacy user"))
node_revenuecat["RevenueCat"]

node_client -->|"sends API requests"| node_server
node_pharmacy -->|"sends API requests"| node_server
node_server -->|"mounts routes"| node_auth_routes
node_server -->|"mounts routes"| node_search_routes
node_server -->|"mounts routes"| node_inventory_routes
node_server -->|"mounts routes"| node_order_routes
node_server -->|"mounts routes"| node_reservation_routes
node_server -->|"mounts routes"| node_subscription_routes
node_auth_routes -->|"checks access"| node_auth_middleware
node_auth_routes -->|"dispatches to"| node_auth_controller
node_search_routes -->|"dispatches to"| node_search_controller
node_inventory_routes -->|"checks access"| node_auth_middleware
node_inventory_routes -->|"dispatches to"| node_inventory_controller
node_order_routes -->|"checks access"| node_auth_middleware
node_order_routes -->|"dispatches to"| node_order_controller
node_reservation_routes -->|"checks access"| node_auth_middleware
node_reservation_routes -->|"dispatches to"| node_reservation_controller
node_subscription_routes -->|"checks access"| node_auth_middleware
node_subscription_routes -->|"dispatches to"| node_subscription_controller
node_auth_controller -->|"queries users"| node_db_config
node_search_controller -->|"queries medicines"| node_db_config
node_inventory_controller -->|"manages stock"| node_db_config
node_order_controller -->|"queries and updates"| node_db_config
node_order_controller -->|"checks premium"| node_subscription_controller
node_reservation_controller -->|"queries and updates"| node_db_config
node_subscription_controller -.->|"verifies entitlement"| node_revenuecat
node_db_config -->|"connects to"| node_postgres
node_schema -->|"defines tables"| node_postgres
node_server -->|"checks health"| node_db_config

click node_server "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/server.ts"
click node_auth_routes "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/authRoutes.ts"
click node_auth_controller "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/authController.ts"
click node_auth_middleware "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/middleware/authMiddleware.ts"
click node_search_routes "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/searchRoutes.ts"
click node_search_controller "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/searchController.ts"
click node_inventory_routes "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/inventoryRoutes.ts"
click node_inventory_controller "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/inventoryController.ts"
click node_order_routes "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/orderRoutes.ts"
click node_order_controller "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/orderController.ts"
click node_reservation_routes "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/reservationRoutes.ts"
click node_reservation_controller "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/reservationController.ts"
click node_subscription_routes "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/subscriptionRoutes.ts"
click node_subscription_controller "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/subscriptionController.ts"
click node_db_config "https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/config/db.ts"
click node_schema "https://github.com/karanei-kimutai/findurdrugs/blob/main/database/schema/01_init.sql"

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,node_auth_routes,node_auth_controller,node_auth_middleware,node_client,node_pharmacy toneBlue
class node_search_routes,node_search_controller toneAmber
class node_inventory_routes,node_inventory_controller,node_order_routes,node_order_controller,node_reservation_routes,node_reservation_controller toneMint
class node_subscription_routes,node_subscription_controller,node_db_config,node_schema,node_postgres toneRose
class node_revenuecat toneIndigo
```

## Components

### API and access

- [Express API](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/server.ts): `backend/src/server.ts`
- [Auth routes](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/authRoutes.ts): `backend/src/routes/authRoutes.ts`
- [Authentication](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/authController.ts): `backend/src/controllers/authController.ts`
- [JWT and roles](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/middleware/authMiddleware.ts): `backend/src/middleware/authMiddleware.ts`

### Medicine discovery

- [Search routes](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/searchRoutes.ts): `backend/src/routes/searchRoutes.ts`
- [Medicine search](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/searchController.ts): `backend/src/controllers/searchController.ts`

### Pharmacy operations

- [Inventory routes](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/inventoryRoutes.ts): `backend/src/routes/inventoryRoutes.ts`
- [Inventory management](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/inventoryController.ts): `backend/src/controllers/inventoryController.ts`
- [Order routes](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/orderRoutes.ts): `backend/src/routes/orderRoutes.ts`
- [Delivery orders](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/orderController.ts): `backend/src/controllers/orderController.ts`
- [Reservation routes](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/reservationRoutes.ts): `backend/src/routes/reservationRoutes.ts`
- [Pickup reservations](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/reservationController.ts): `backend/src/controllers/reservationController.ts`

### Persistence and benefits

- [Subscription routes](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/routes/subscriptionRoutes.ts): `backend/src/routes/subscriptionRoutes.ts`
- [Premium status](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/controllers/subscriptionController.ts): `backend/src/controllers/subscriptionController.ts`
- [Database connection](https://github.com/karanei-kimutai/findurdrugs/blob/main/backend/src/config/db.ts): `backend/src/config/db.ts`
- [Relational schema](https://github.com/karanei-kimutai/findurdrugs/blob/main/database/schema/01_init.sql): `database/schema/01_init.sql`
- **PostgreSQL**

### Other components

- **Android client**
- **Pharmacy user**
- **RevenueCat**

## Connections

- Android client → Express API: sends API requests
- Pharmacy user → Express API: sends API requests
- Express API → Auth routes: mounts routes
- Express API → Search routes: mounts routes
- Express API → Inventory routes: mounts routes
- Express API → Order routes: mounts routes
- Express API → Reservation routes: mounts routes
- Express API → Subscription routes: mounts routes
- Auth routes → JWT and roles: checks access
- Auth routes → Authentication: dispatches to
- Search routes → Medicine search: dispatches to
- Inventory routes → JWT and roles: checks access
- Inventory routes → Inventory management: dispatches to
- Order routes → JWT and roles: checks access
- Order routes → Delivery orders: dispatches to
- Reservation routes → JWT and roles: checks access
- Reservation routes → Pickup reservations: dispatches to
- Subscription routes → JWT and roles: checks access
- Subscription routes → Premium status: dispatches to
- Authentication → Database connection: queries users
- Medicine search → Database connection: queries medicines
- Inventory management → Database connection: manages stock
- Delivery orders → Database connection: queries and updates
- Delivery orders → Premium status: checks premium
- Pickup reservations → Database connection: queries and updates
- Premium status → RevenueCat: verifies entitlement
- Database connection → PostgreSQL: connects to
- Relational schema → PostgreSQL: defines tables
- Express API → Database connection: checks health
