# salekmasudparvez1/bik-server-a8l2 architecture

> Architecture diagram of the GitHub repository salekmasudparvez1/bik-server-a8l2, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-12). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/salekmasudparvez1/bik-server-a8l2
- Repository: https://github.com/salekmasudparvez1/bik-server-a8l2

## Overview

This is a Bike Servicing Management API. Clients send HTTP requests to an Express app, which dispatches customer, bike, and service operations; controllers invoke domain services, which persist records through Prisma. The API also validates requests and formats responses, with shared error handling for failures. The README documents CRUD and service-completion capabilities; sampled service code additionally exposes pending/in-progress service lookup. Some route and schema internals were not excerpted, so edges are limited to indexed references or documented behavior.

Main entry points: [`src/app/routes/index.ts`](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/routes/index.ts) (API Router), [`src/app/module/customer/customer.route.ts`](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.route.ts) (Customer Routes), [`src/app/module/bike/bike.route.ts`](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.route.ts) (Bike Routes), [`src/app/module/service/bikeservice.route.ts`](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.route.ts) (Service Routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["HTTP API"]
  node_app["Express App<br/>[app.ts]"]
  node_router["API Router<br/>[index.ts]"]
  node_customer_routes["Customer Routes<br/>[customer.route.ts]"]
  node_bike_routes["Bike Routes<br/>[bike.route.ts]"]
  node_service_routes["Service Routes"]
end

subgraph group_domains["Management Domains"]
  node_customer_controller["Customer Controller"]
  node_customer_service["Customer Operations"]
  node_customer_validation["Customer Validation"]
  node_bike_controller["Bike Controller<br/>[bike.controller.ts]"]
  node_bike_service["Bike Operations<br/>[bike.service.ts]"]
  node_bike_validation["Bike Validation<br/>[bike.validation.ts]"]
  node_service_controller["Service Controller"]
  node_service_operations["Service Operations"]
  node_service_validation["Service Validation"]
end

subgraph group_infra["Persistence"]
  node_prisma_client["Prisma Client<br/>[prisma.ts]"]
  node_database[("PostgreSQL Database")]
end

subgraph group_shared["Shared Handling"]
  node_validate["Request Validation<br/>[ValidateRequest.ts]"]
  node_responses["Response Formatter<br/>[sendResponse.ts]"]
  node_async_errors["Async Error Wrapper<br/>[catchAsync.ts]"]
  node_error_handler["Global Error Handler"]
  node_api_errors["Application Errors<br/>[ApiErrors.ts]"]
end

node_client(("API Client"))

node_client -->|"sends requests"| node_app
node_app -->|"mounts API"| node_router
node_app -->|"handles errors"| node_error_handler
node_router -->|"dispatches"| node_customer_routes
node_router -->|"dispatches"| node_bike_routes
node_router -->|"dispatches"| node_service_routes
node_customer_routes -->|"validates requests"| node_validate
node_bike_routes -->|"validates requests"| node_validate
node_service_routes -->|"validates requests"| node_validate
node_customer_routes -->|"routes to"| node_customer_controller
node_bike_routes -->|"routes to"| node_bike_controller
node_service_routes -->|"routes to"| node_service_controller
node_customer_controller -->|"invokes"| node_customer_service
node_bike_controller -->|"invokes"| node_bike_service
node_service_controller -->|"invokes"| node_service_operations
node_customer_controller -->|"formats response"| node_responses
node_bike_controller -->|"formats response"| node_responses
node_service_controller -->|"formats response"| node_responses
node_customer_service -->|"queries through"| node_prisma_client
node_bike_service -->|"queries through"| node_prisma_client
node_service_operations -->|"queries through"| node_prisma_client
node_prisma_client -->|"connects to"| node_database
node_customer_controller -->|"wraps handlers"| node_async_errors
node_bike_controller -->|"wraps handlers"| node_async_errors
node_service_controller -->|"wraps handlers"| node_async_errors
node_async_errors -->|"forwards errors"| node_error_handler
node_customer_service -->|"raises errors"| node_api_errors
node_bike_service -->|"raises errors"| node_api_errors
node_service_operations -->|"raises errors"| node_api_errors
node_error_handler -.->|"formats failures"| node_api_errors
node_customer_routes -->|"uses schema"| node_customer_validation
node_bike_routes -->|"uses schema"| node_bike_validation
node_service_routes -->|"uses schema"| node_service_validation

click node_app "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app.ts"
click node_router "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/routes/index.ts"
click node_customer_routes "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.route.ts"
click node_bike_routes "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.route.ts"
click node_service_routes "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.route.ts"
click node_customer_controller "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.controller.ts"
click node_customer_service "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.service.ts"
click node_customer_validation "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.validation.ts"
click node_bike_controller "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.controller.ts"
click node_bike_service "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.service.ts"
click node_bike_validation "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.validation.ts"
click node_service_controller "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.controller.ts"
click node_service_operations "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.service.ts"
click node_service_validation "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.validation.ts"
click node_prisma_client "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/shared/prisma.ts"
click node_validate "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/middlewares/ValidateRequest.ts"
click node_responses "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/shared/sendResponse.ts"
click node_async_errors "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/shared/catchAsync.ts"
click node_error_handler "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/middlewares/globalErrorHandler.ts"
click node_api_errors "https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/errors/ApiErrors.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_app,node_router,node_customer_routes,node_bike_routes,node_service_routes,node_client toneBlue
class node_customer_controller,node_customer_service,node_customer_validation,node_bike_controller,node_bike_service,node_bike_validation,node_service_controller,node_service_operations,node_service_validation toneAmber
class node_prisma_client,node_database toneMint
class node_validate,node_responses,node_async_errors,node_error_handler,node_api_errors toneRose
```

## Components

### HTTP API

- [Express App](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app.ts): `src/app.ts`
- [API Router](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/routes/index.ts): `src/app/routes/index.ts`
- [Customer Routes](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.route.ts): `src/app/module/customer/customer.route.ts`
- [Bike Routes](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.route.ts): `src/app/module/bike/bike.route.ts`
- [Service Routes](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.route.ts): `src/app/module/service/bikeservice.route.ts`

### Management Domains

- [Customer Controller](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.controller.ts): `src/app/module/customer/customer.controller.ts`
- [Customer Operations](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.service.ts): `src/app/module/customer/customer.service.ts`
- [Customer Validation](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/customer/customer.validation.ts): `src/app/module/customer/customer.validation.ts`
- [Bike Controller](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.controller.ts): `src/app/module/bike/bike.controller.ts`
- [Bike Operations](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.service.ts): `src/app/module/bike/bike.service.ts`
- [Bike Validation](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/bike/bike.validation.ts): `src/app/module/bike/bike.validation.ts`
- [Service Controller](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.controller.ts): `src/app/module/service/bikeservice.controller.ts`
- [Service Operations](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.service.ts): `src/app/module/service/bikeservice.service.ts`
- [Service Validation](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/module/service/bikeservice.validation.ts): `src/app/module/service/bikeservice.validation.ts`

### Persistence

- [Prisma Client](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/shared/prisma.ts): `src/shared/prisma.ts`
- **PostgreSQL Database**

### Shared Handling

- [Request Validation](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/middlewares/ValidateRequest.ts): `src/app/middlewares/ValidateRequest.ts`
- [Response Formatter](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/shared/sendResponse.ts): `src/shared/sendResponse.ts`
- [Async Error Wrapper](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/shared/catchAsync.ts): `src/shared/catchAsync.ts`
- [Global Error Handler](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/middlewares/globalErrorHandler.ts): `src/app/middlewares/globalErrorHandler.ts`
- [Application Errors](https://github.com/salekmasudparvez1/bik-server-a8l2/blob/main/src/app/errors/ApiErrors.ts): `src/app/errors/ApiErrors.ts`

### Other components

- **API Client**

## Connections

- API Client → Express App: sends requests (evidence: `README.md`)
- Express App → API Router: mounts API (evidence: `src/app.ts`)
- Express App → Global Error Handler: handles errors (evidence: `src/app.ts`)
- API Router → Customer Routes: dispatches (evidence: `src/app/routes/index.ts`)
- API Router → Bike Routes: dispatches (evidence: `src/app/routes/index.ts`)
- API Router → Service Routes: dispatches (evidence: `src/app/routes/index.ts`)
- Customer Routes → Request Validation: validates requests (evidence: `src/app/module/customer/customer.route.ts`)
- Bike Routes → Request Validation: validates requests (evidence: `src/app/module/bike/bike.route.ts`)
- Service Routes → Request Validation: validates requests (evidence: `src/app/module/service/bikeservice.route.ts`)
- Customer Routes → Customer Controller: routes to (evidence: `src/app/module/customer/customer.route.ts`)
- Bike Routes → Bike Controller: routes to (evidence: `src/app/module/bike/bike.route.ts`)
- Service Routes → Service Controller: routes to (evidence: `src/app/module/service/bikeservice.route.ts`)
- Customer Controller → Customer Operations: invokes (evidence: `src/app/module/customer/customer.controller.ts`)
- Bike Controller → Bike Operations: invokes (evidence: `src/app/module/bike/bike.controller.ts`)
- Service Controller → Service Operations: invokes (evidence: `src/app/module/service/bikeservice.controller.ts`)
- Customer Controller → Response Formatter: formats response (evidence: `src/app/module/customer/customer.controller.ts`)
- Bike Controller → Response Formatter: formats response (evidence: `src/app/module/bike/bike.controller.ts`)
- Service Controller → Response Formatter: formats response (evidence: `src/app/module/service/bikeservice.controller.ts`)
- Customer Operations → Prisma Client: queries through (evidence: `src/app/module/customer/customer.service.ts`)
- Bike Operations → Prisma Client: queries through (evidence: `src/app/module/bike/bike.service.ts`)
- Service Operations → Prisma Client: queries through (evidence: `src/app/module/service/bikeservice.service.ts`)
- Prisma Client → PostgreSQL Database: connects to (evidence: `README.md`)
- Customer Controller → Async Error Wrapper: wraps handlers (evidence: `src/app/module/customer/customer.controller.ts`)
- Bike Controller → Async Error Wrapper: wraps handlers (evidence: `src/app/module/bike/bike.controller.ts`)
- Service Controller → Async Error Wrapper: wraps handlers (evidence: `src/app/module/service/bikeservice.controller.ts`)
- Async Error Wrapper → Global Error Handler: forwards errors (evidence: `src/shared/catchAsync.ts`)
- Customer Operations → Application Errors: raises errors (evidence: `src/app/module/customer/customer.service.ts`)
- Bike Operations → Application Errors: raises errors (evidence: `src/app/module/bike/bike.service.ts`)
- Service Operations → Application Errors: raises errors (evidence: `src/app/module/service/bikeservice.service.ts`)
- Global Error Handler → Application Errors: formats failures
- Customer Routes → Customer Validation: uses schema (evidence: `src/app/module/customer/customer.route.ts`)
- Bike Routes → Bike Validation: uses schema (evidence: `src/app/module/bike/bike.route.ts`)
- Service Routes → Service Validation: uses schema (evidence: `src/app/module/service/bikeservice.route.ts`)
