# yashmerino/ecommerce-platform architecture

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

- Interactive diagram: https://gitdiagram.com/yashmerino/ecommerce-platform
- Repository: https://github.com/yashmerino/ecommerce-platform

## Overview

This is a Spring Boot/React ecommerce platform. Users enter through the UI to authenticate and use product browsing/search, cart, order, profile, and seller-product features; the server owns core commerce and coordinates payment and notification services. The README also documents MySQL, Kafka, Redis, JWT authentication, and three UI languages. Sampled code verifies selected product, registration, payment, and notification behavior; other subsystem links are shown only where documented or marked unverified because their wiring was not sampled.

Main entry points: [`ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers`](https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers) (Commerce API), [`ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/PaymentServiceImpl.java`](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/PaymentServiceImpl.java) (Payment processing), [`ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/NotificationServiceImpl.java`](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/NotificationServiceImpl.java) (Notification delivery), [`ecommerce-platform-ui/src/app/Main.tsx`](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/Main.tsx) (Storefront routes)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Web storefront"]
  node_ui_entry["UI shell<br/>[App.tsx]"]
  node_ui_routes["Storefront routes<br/>[Main.tsx]"]
  node_ui_pages["Storefront pages"]
  node_ui_api["API requests"]
  node_ui_auth["Auth interceptor<br/>[AuthInterceptor.ts]"]
  node_ui_state["App state<br/>[hooks.ts]"]
end

subgraph group_commerce["Commerce server"]
  node_server_api["Commerce API"]
  node_product_controller["Product endpoints"]
  node_commerce_services["Commerce services"]
  node_auth_service["Registration and auth"]
  node_security["JWT security"]
  node_commerce_data["Commerce entities"]
end

subgraph group_payment["Payment service"]
  node_payment_listener["Payment event listener"]
  node_payment_service["Payment processing"]
  node_stripe["Stripe integration"]
  node_payment_data["Payment records<br/>[Payment.java]"]
  node_payment_producer["Payment result producer"]
end

subgraph group_notify["Notification service"]
  node_notification_listener["Notification listener"]
  node_notification_service["Notification delivery"]
  node_notification_templates["Message templates"]
  node_notification_senders["Delivery senders"]
  node_notification_data["Notification records<br/>[Notification.java]"]
end

node_shopper(("Shopper"))
node_mysql[("MySQL")]
node_redis[("Redis cache")]
node_smtp["SMTP mail"]
node_kafka["Kafka"]

node_shopper -->|"uses"| node_ui_entry
node_ui_entry -->|"renders"| node_ui_routes
node_ui_routes -->|"routes to"| node_ui_pages
node_ui_routes -->|"reads auth state"| node_ui_state
node_ui_pages -.->|"requests data"| node_ui_api
node_ui_api -.->|"uses auth"| node_ui_auth
node_ui_api -.->|"calls"| node_server_api
node_server_api -.->|"secured by"| node_security
node_server_api -.->|"routes product requests"| node_product_controller
node_product_controller -->|"calls product service"| node_commerce_services
node_auth_service -->|"creates users and carts"| node_commerce_data
node_commerce_services -.->|"persists commerce data"| node_mysql
node_server_api -.->|"uses caching"| node_redis
node_server_api -.->|"publishes service events"| node_kafka
node_kafka -.->|"delivers payment requests"| node_payment_listener
node_payment_listener -.->|"dispatches event"| node_payment_service
node_payment_service -->|"charges through"| node_stripe
node_payment_service -->|"saves payment"| node_payment_data
node_payment_service -->|"publishes result"| node_payment_producer
node_payment_producer -.->|"sends result event"| node_kafka
node_kafka -.->|"delivers notification events"| node_notification_listener
node_notification_listener -.->|"dispatches event"| node_notification_service
node_notification_service -->|"saves status"| node_notification_data
node_notification_service -->|"builds content"| node_notification_templates
node_notification_service -->|"selects sender"| node_notification_senders
node_notification_senders -.->|"sends email"| node_smtp

click node_ui_entry "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/App.tsx"
click node_ui_routes "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/Main.tsx"
click node_ui_pages "https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-ui/src/app/components/pages"
click node_ui_api "https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-ui/src/app/api"
click node_ui_auth "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/api/AuthInterceptor.ts"
click node_ui_state "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/hooks.ts"
click node_server_api "https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers"
click node_product_controller "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers/ProductController.java"
click node_commerce_services "https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/services"
click node_auth_service "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/services/AuthServiceImpl.java"
click node_security "https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/security"
click node_commerce_data "https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/model"
click node_payment_listener "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/kafka/PaymentEventListener.java"
click node_payment_service "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/PaymentServiceImpl.java"
click node_stripe "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/StripePaymentServiceImpl.java"
click node_payment_data "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/model/Payment.java"
click node_payment_producer "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/kafka/PaymentResultProducer.java"
click node_notification_listener "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/kafka/NotificationEventListener.java"
click node_notification_service "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/NotificationServiceImpl.java"
click node_notification_templates "https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl"
click node_notification_senders "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/EmailNotificationSender.java"
click node_notification_data "https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/model/Notification.java"

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_ui_entry,node_ui_routes,node_ui_pages,node_ui_api,node_ui_auth,node_ui_state toneBlue
class node_server_api,node_product_controller,node_commerce_services,node_auth_service,node_security,node_commerce_data,node_mysql,node_redis toneAmber
class node_payment_listener,node_payment_service,node_stripe,node_payment_data,node_payment_producer toneMint
class node_notification_listener,node_notification_service,node_notification_templates,node_notification_senders,node_notification_data toneRose
class node_shopper,node_smtp,node_kafka toneIndigo
```

## Components

### Web storefront

- [UI shell](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/App.tsx): `ecommerce-platform-ui/src/app/App.tsx`
- [Storefront routes](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/Main.tsx): `ecommerce-platform-ui/src/app/Main.tsx`
- [Storefront pages](https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-ui/src/app/components/pages): `ecommerce-platform-ui/src/app/components/pages`
- [API requests](https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-ui/src/app/api): `ecommerce-platform-ui/src/app/api`
- [Auth interceptor](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/api/AuthInterceptor.ts): `ecommerce-platform-ui/src/app/api/AuthInterceptor.ts`
- [App state](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-ui/src/app/hooks.ts): `ecommerce-platform-ui/src/app/hooks.ts`

### Commerce server

- [Commerce API](https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers): `ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers`
- [Product endpoints](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers/ProductController.java): `ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers/ProductController.java`
- [Commerce services](https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/services): `ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/services`
- [Registration and auth](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/services/AuthServiceImpl.java): `ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/services/AuthServiceImpl.java`
- [JWT security](https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/security): `ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/security`
- [Commerce entities](https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/model): `ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/model`

### Payment service

- [Payment event listener](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/kafka/PaymentEventListener.java): `ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/kafka/PaymentEventListener.java`
- [Payment processing](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/PaymentServiceImpl.java): `ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/PaymentServiceImpl.java`
- [Stripe integration](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/StripePaymentServiceImpl.java): `ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/StripePaymentServiceImpl.java`
- [Payment records](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/model/Payment.java): `ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/model/Payment.java`
- [Payment result producer](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/kafka/PaymentResultProducer.java): `ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/kafka/PaymentResultProducer.java`

### Notification service

- [Notification listener](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/kafka/NotificationEventListener.java): `ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/kafka/NotificationEventListener.java`
- [Notification delivery](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/NotificationServiceImpl.java): `ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/NotificationServiceImpl.java`
- [Message templates](https://github.com/yashmerino/ecommerce-platform/tree/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl): `ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl`
- [Delivery senders](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/EmailNotificationSender.java): `ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/EmailNotificationSender.java`
- [Notification records](https://github.com/yashmerino/ecommerce-platform/blob/master/ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/model/Notification.java): `ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/model/Notification.java`

### Other components

- **Shopper**
- **MySQL**
- **Redis cache**
- **SMTP mail**
- **Kafka**

## Connections

- Shopper → UI shell: uses (evidence: `README.md`)
- UI shell → Storefront routes: renders (evidence: `ecommerce-platform-ui/src/app/App.tsx`)
- Storefront routes → Storefront pages: routes to (evidence: `ecommerce-platform-ui/src/app/Main.tsx`)
- Storefront routes → App state: reads auth state (evidence: `ecommerce-platform-ui/src/app/Main.tsx`)
- Storefront pages → API requests: requests data (evidence: `ecommerce-platform-ui/src/app/components/pages/search/SearchHit.tsx`)
- API requests → Auth interceptor: uses auth (evidence: `ecommerce-platform-ui/src/app/api/AuthInterceptor.ts`)
- API requests → Commerce API: calls
- Commerce API → JWT security: secured by
- Commerce API → Product endpoints: routes product requests
- Product endpoints → Commerce services: calls product service (evidence: `ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/controllers/ProductController.java`)
- Registration and auth → Commerce entities: creates users and carts (evidence: `ecommerce-platform-server/src/main/java/com/yashmerino/ecommerce/services/AuthServiceImpl.java`)
- Commerce services → MySQL: persists commerce data (evidence: `README.md`)
- Commerce API → Redis cache: uses caching (evidence: `README.md`)
- Commerce API → Kafka: publishes service events (evidence: `README.md`)
- Kafka → Payment event listener: delivers payment requests (evidence: `README.md`)
- Payment event listener → Payment processing: dispatches event
- Payment processing → Stripe integration: charges through (evidence: `ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/PaymentServiceImpl.java`)
- Payment processing → Payment records: saves payment (evidence: `ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/PaymentServiceImpl.java`)
- Payment processing → Payment result producer: publishes result (evidence: `ecommerce-platform-payment-service/src/main/java/com/yashmerino/ecommerce/service/impl/PaymentServiceImpl.java`)
- Payment result producer → Kafka: sends result event (evidence: `README.md`)
- Kafka → Notification listener: delivers notification events (evidence: `README.md`)
- Notification listener → Notification delivery: dispatches event
- Notification delivery → Notification records: saves status (evidence: `ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/NotificationServiceImpl.java`)
- Notification delivery → Message templates: builds content (evidence: `ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/NotificationServiceImpl.java`)
- Notification delivery → Delivery senders: selects sender (evidence: `ecommerce-platform-notification-service/src/main/java/com/yashmerino/ecommerce/service/impl/NotificationServiceImpl.java`)
- Delivery senders → SMTP mail: sends email (evidence: `README.md`)
