# duyaivy/handy_go architecture

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

- Interactive diagram: https://gitdiagram.com/duyaivy/handy_go
- Repository: https://github.com/duyaivy/handy_go

## Overview

PBL6 appears to be a home-services marketplace with customer and worker mobile experiences, public service/worker discovery, manager operations, and a multi-service backend. The README provides no workflow detail, and sampled source is sparse: backend links below are limited to controller-to-service calls visible in excerpts; frontend-to-backend and cross-service wiring are not established.

Main entry points: [`backend/apps/api-gateway/src/api-gateway.controller.ts`](https://github.com/duyaivy/handy_go/blob/main/backend/apps/api-gateway/src/api-gateway.controller.ts) (Gateway Controller), [`backend/apps/catalog-service/src/catalog-service.controller.ts`](https://github.com/duyaivy/handy_go/blob/main/backend/apps/catalog-service/src/catalog-service.controller.ts) (Catalog Controller), [`backend/apps/bidding-service/src/bidding-service.controller.ts`](https://github.com/duyaivy/handy_go/blob/main/backend/apps/bidding-service/src/bidding-service.controller.ts) (Bidding Controller), [`backend/apps/matching-service/src/matching-service.controller.ts`](https://github.com/duyaivy/handy_go/blob/main/backend/apps/matching-service/src/matching-service.controller.ts) (Matching Controller)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_discovery["Public Discovery"]
  node_public_pages["Discovery Pages"]
  node_service_discovery["Service Discovery"]
  node_worker_directory["Worker Directory"]
end

subgraph group_management["Manager Console"]
  node_manager_pages["Manager Pages"]
  node_manager_customers["Customer Management"]
  node_manager_workers["Worker Management"]
  node_manager_applications["Worker Applications"]
end

subgraph group_mobile["Mobile App"]
  node_mobile_customer["Customer App"]
  node_mobile_worker["Worker App"]
  node_mobile_api["API Client"]
end

subgraph group_backend["Backend Services"]
  node_gateway_controller["Gateway Controller"]
  node_gateway_service["Gateway Service"]
  node_auth_controller["Auth Controller"]
  node_catalog_controller["Catalog Controller"]
  node_catalog_service["Catalog Service"]
  node_bidding_controller["Bidding Controller"]
  node_bidding_service["Bidding Service"]
  node_matching_controller["Matching Controller"]
  node_matching_service["Matching Service"]
  node_order_service["Order Service"]
  node_payment_service["Payment Service"]
  node_tracking_service["Tracking Service"]
  node_notification_controller["Notification Controller"]
  node_notification_service["Notification Service"]
  node_trust_service["User Trust Service"]
end

node_visitor(("Visitor"))
node_manager(("Manager"))

node_visitor -->|"browses"| node_public_pages
node_manager -->|"uses"| node_manager_pages
node_gateway_controller -->|"calls"| node_gateway_service
node_catalog_controller -->|"calls"| node_catalog_service
node_bidding_controller -->|"calls"| node_bidding_service
node_matching_controller -->|"calls"| node_matching_service
node_notification_controller -->|"calls"| node_notification_service

click node_service_discovery "https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/public/service-discovery"
click node_worker_directory "https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/public/worker-directory"
click node_manager_pages "https://github.com/duyaivy/handy_go/tree/main/frontend/src/app/manager"
click node_manager_customers "https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/customers"
click node_manager_workers "https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/workers"
click node_manager_applications "https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/worker-applications"
click node_mobile_customer "https://github.com/duyaivy/handy_go/tree/main/mobile/src/features"
click node_mobile_worker "https://github.com/duyaivy/handy_go/tree/main/mobile/src/features"
click node_mobile_api "https://github.com/duyaivy/handy_go/tree/main/mobile/src/services/api"
click node_gateway_controller "https://github.com/duyaivy/handy_go/blob/main/backend/apps/api-gateway/src/api-gateway.controller.ts"
click node_gateway_service "https://github.com/duyaivy/handy_go/blob/main/backend/apps/api-gateway/src/api-gateway.service.ts"
click node_auth_controller "https://github.com/duyaivy/handy_go/blob/main/backend/apps/auth-service/src/auth-service.controller.ts"
click node_catalog_controller "https://github.com/duyaivy/handy_go/blob/main/backend/apps/catalog-service/src/catalog-service.controller.ts"
click node_catalog_service "https://github.com/duyaivy/handy_go/blob/main/backend/apps/catalog-service/src/catalog-service.service.ts"
click node_bidding_controller "https://github.com/duyaivy/handy_go/blob/main/backend/apps/bidding-service/src/bidding-service.controller.ts"
click node_bidding_service "https://github.com/duyaivy/handy_go/blob/main/backend/apps/bidding-service/src/bidding-service.service.ts"
click node_matching_controller "https://github.com/duyaivy/handy_go/blob/main/backend/apps/matching-service/src/matching-service.controller.ts"
click node_matching_service "https://github.com/duyaivy/handy_go/blob/main/backend/apps/matching-service/src/matching-service.service.ts"
click node_order_service "https://github.com/duyaivy/handy_go/tree/main/backend/apps/order-service/src"
click node_payment_service "https://github.com/duyaivy/handy_go/tree/main/backend/apps/payment-service/src"
click node_tracking_service "https://github.com/duyaivy/handy_go/blob/main/backend/apps/tracking-service/src/tracking-service.service.ts"
click node_notification_controller "https://github.com/duyaivy/handy_go/blob/main/backend/apps/notification-service/src/notification-service.controller.ts"
click node_notification_service "https://github.com/duyaivy/handy_go/blob/main/backend/apps/notification-service/src/notification-service.service.ts"
click node_trust_service "https://github.com/duyaivy/handy_go/tree/main/backend/apps/user-trust-service/src"

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_public_pages,node_service_discovery,node_worker_directory toneBlue
class node_manager_pages,node_manager_customers,node_manager_workers,node_manager_applications toneAmber
class node_mobile_customer,node_mobile_worker,node_mobile_api toneMint
class node_gateway_controller,node_gateway_service,node_auth_controller,node_catalog_controller,node_catalog_service,node_bidding_controller,node_bidding_service,node_matching_controller,node_matching_service,node_order_service,node_payment_service,node_tracking_service,node_notification_controller,node_notification_service,node_trust_service toneRose
class node_visitor,node_manager toneIndigo
```

## Components

### Public Discovery

- **Discovery Pages**
- [Service Discovery](https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/public/service-discovery): `frontend/src/feature/public/service-discovery`
- [Worker Directory](https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/public/worker-directory): `frontend/src/feature/public/worker-directory`

### Manager Console

- [Manager Pages](https://github.com/duyaivy/handy_go/tree/main/frontend/src/app/manager): `frontend/src/app/manager`
- [Customer Management](https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/customers): `frontend/src/feature/customers`
- [Worker Management](https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/workers): `frontend/src/feature/workers`
- [Worker Applications](https://github.com/duyaivy/handy_go/tree/main/frontend/src/feature/worker-applications): `frontend/src/feature/worker-applications`

### Mobile App

- [Customer App](https://github.com/duyaivy/handy_go/tree/main/mobile/src/features): `mobile/src/features`
- [Worker App](https://github.com/duyaivy/handy_go/tree/main/mobile/src/features): `mobile/src/features`
- [API Client](https://github.com/duyaivy/handy_go/tree/main/mobile/src/services/api): `mobile/src/services/api`

### Backend Services

- [Gateway Controller](https://github.com/duyaivy/handy_go/blob/main/backend/apps/api-gateway/src/api-gateway.controller.ts): `backend/apps/api-gateway/src/api-gateway.controller.ts`
- [Gateway Service](https://github.com/duyaivy/handy_go/blob/main/backend/apps/api-gateway/src/api-gateway.service.ts): `backend/apps/api-gateway/src/api-gateway.service.ts`
- [Auth Controller](https://github.com/duyaivy/handy_go/blob/main/backend/apps/auth-service/src/auth-service.controller.ts): `backend/apps/auth-service/src/auth-service.controller.ts`
- [Catalog Controller](https://github.com/duyaivy/handy_go/blob/main/backend/apps/catalog-service/src/catalog-service.controller.ts): `backend/apps/catalog-service/src/catalog-service.controller.ts`
- [Catalog Service](https://github.com/duyaivy/handy_go/blob/main/backend/apps/catalog-service/src/catalog-service.service.ts): `backend/apps/catalog-service/src/catalog-service.service.ts`
- [Bidding Controller](https://github.com/duyaivy/handy_go/blob/main/backend/apps/bidding-service/src/bidding-service.controller.ts): `backend/apps/bidding-service/src/bidding-service.controller.ts`
- [Bidding Service](https://github.com/duyaivy/handy_go/blob/main/backend/apps/bidding-service/src/bidding-service.service.ts): `backend/apps/bidding-service/src/bidding-service.service.ts`
- [Matching Controller](https://github.com/duyaivy/handy_go/blob/main/backend/apps/matching-service/src/matching-service.controller.ts): `backend/apps/matching-service/src/matching-service.controller.ts`
- [Matching Service](https://github.com/duyaivy/handy_go/blob/main/backend/apps/matching-service/src/matching-service.service.ts): `backend/apps/matching-service/src/matching-service.service.ts`
- [Order Service](https://github.com/duyaivy/handy_go/tree/main/backend/apps/order-service/src): `backend/apps/order-service/src`
- [Payment Service](https://github.com/duyaivy/handy_go/tree/main/backend/apps/payment-service/src): `backend/apps/payment-service/src`
- [Tracking Service](https://github.com/duyaivy/handy_go/blob/main/backend/apps/tracking-service/src/tracking-service.service.ts): `backend/apps/tracking-service/src/tracking-service.service.ts`
- [Notification Controller](https://github.com/duyaivy/handy_go/blob/main/backend/apps/notification-service/src/notification-service.controller.ts): `backend/apps/notification-service/src/notification-service.controller.ts`
- [Notification Service](https://github.com/duyaivy/handy_go/blob/main/backend/apps/notification-service/src/notification-service.service.ts): `backend/apps/notification-service/src/notification-service.service.ts`
- [User Trust Service](https://github.com/duyaivy/handy_go/tree/main/backend/apps/user-trust-service/src): `backend/apps/user-trust-service/src`

### Other components

- **Visitor**
- **Manager**

## Connections

- Visitor → Discovery Pages: browses
- Manager → Manager Pages: uses
- Gateway Controller → Gateway Service: calls
- Catalog Controller → Catalog Service: calls
- Bidding Controller → Bidding Service: calls
- Matching Controller → Matching Service: calls
- Notification Controller → Notification Service: calls
