# marcodev05/mystore architecture

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

## Overview

This is a Spring Boot ecommerce API. The main workflow is a client browsing products and categories, while administrators create, update, and delete catalog entries; authentication and file upload are separate API capabilities. The tree also indicates user registration, JWT security, messaging, and order-related domain types. Controller-to-service calls and file-storage behavior are supported by sampled source; wiring for unsampled services and persistence is not shown, so those relationships are omitted.

Main entry points: [`src/main/java/com/tsk/ecommerce/services/file/FileUploadService.java`](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/file/FileUploadService.java) (File Upload Service), [`src/main/java/com/tsk/ecommerce/controllers/CategoryController.java`](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/CategoryController.java) (Category API), [`src/main/java/com/tsk/ecommerce/controllers/ProductController.java`](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/ProductController.java) (Product API), [`src/main/java/com/tsk/ecommerce/controllers/FileController.java`](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/FileController.java) (File API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Product Catalog"]
  node_category_api["Category API"]
  node_product_api["Product API"]
  node_category_service["Category Service"]
  node_category_impl["Category Logic"]
  node_product_service["Product Service"]
  node_product_impl["Product Logic"]
  node_catalog_entities["Catalog Entities"]
  node_catalog_repos["Catalog Repositories"]
end

subgraph group_identity["Identity &amp; Security"]
  node_auth_api["Authentication API"]
  node_login_service["Login Service<br/>[LoginService.java]"]
  node_registration_service["Registration Service"]
  node_user_details["User Lookup"]
  node_jwt_filter["JWT Filter"]
  node_security_config["Web Security"]
  node_user_repo["User Repository"]
end

subgraph group_files["File Management"]
  node_file_api["File API"]
  node_file_service["File Upload Service"]
  node_file_ops["File Operations"]
  node_filesystem[("Local Filesystem")]
end

subgraph group_messaging["Notifications"]
  node_email_service["Email Notifications"]
  node_mail_provider(("Mail Provider"))
  node_sms_sender["SMS Sender<br/>[SmsSenderImpl.java]"]
  node_twilio(("Twilio"))
end

node_client(("API Client"))

node_client -->|"requests categories"| node_category_api
node_client -->|"requests products"| node_product_api
node_client -->|"authenticates"| node_auth_api
node_client -->|"uploads files"| node_file_api
node_category_api -->|"calls"| node_category_service
node_product_api -->|"calls"| node_product_service
node_file_api -->|"uses"| node_file_ops
node_file_service -->|"reads and writes"| node_filesystem
node_file_service -->|"implements"| node_file_ops
node_email_service -.->|"sends email"| node_mail_provider
node_sms_sender -.->|"sends SMS"| node_twilio

click node_category_api "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/CategoryController.java"
click node_product_api "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/ProductController.java"
click node_category_service "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/product/CategoryService.java"
click node_category_impl "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/product/impl/CategoryServiceImpl.java"
click node_product_service "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/product/ProductService.java"
click node_product_impl "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/product/impl/ProductServiceImpl.java"
click node_catalog_entities "https://github.com/marcodev05/mystore/tree/master/src/main/java/com/tsk/ecommerce/entities"
click node_catalog_repos "https://github.com/marcodev05/mystore/tree/master/src/main/java/com/tsk/ecommerce/repositories"
click node_auth_api "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/AuthenticationController.java"
click node_login_service "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/user/LoginService.java"
click node_registration_service "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/user/RegistrationService.java"
click node_user_details "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/security/CustomUserDetailsService.java"
click node_jwt_filter "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/security/jwt/JwtAuthorizationFilter.java"
click node_security_config "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/configs/security/WebSecurityConfig.java"
click node_user_repo "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/repositories/UserEntityRepository.java"
click node_file_api "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/FileController.java"
click node_file_service "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/file/FileUploadService.java"
click node_file_ops "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/file/FileOperations.java"
click node_email_service "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/messageries/email/NotificationEmailService.java"
click node_sms_sender "https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/messageries/sms/SmsSenderImpl.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_category_api,node_product_api,node_category_service,node_category_impl,node_product_service,node_product_impl,node_catalog_entities,node_catalog_repos,node_client toneBlue
class node_auth_api,node_login_service,node_registration_service,node_user_details,node_jwt_filter,node_security_config,node_user_repo toneAmber
class node_file_api,node_file_service,node_file_ops,node_filesystem toneMint
class node_email_service,node_mail_provider,node_sms_sender,node_twilio toneRose
```

## Components

### Product Catalog

- [Category API](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/CategoryController.java): `src/main/java/com/tsk/ecommerce/controllers/CategoryController.java`
- [Product API](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/ProductController.java): `src/main/java/com/tsk/ecommerce/controllers/ProductController.java`
- [Category Service](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/product/CategoryService.java): `src/main/java/com/tsk/ecommerce/services/product/CategoryService.java`
- [Category Logic](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/product/impl/CategoryServiceImpl.java): `src/main/java/com/tsk/ecommerce/services/product/impl/CategoryServiceImpl.java`
- [Product Service](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/product/ProductService.java): `src/main/java/com/tsk/ecommerce/services/product/ProductService.java`
- [Product Logic](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/product/impl/ProductServiceImpl.java): `src/main/java/com/tsk/ecommerce/services/product/impl/ProductServiceImpl.java`
- [Catalog Entities](https://github.com/marcodev05/mystore/tree/master/src/main/java/com/tsk/ecommerce/entities): `src/main/java/com/tsk/ecommerce/entities`
- [Catalog Repositories](https://github.com/marcodev05/mystore/tree/master/src/main/java/com/tsk/ecommerce/repositories): `src/main/java/com/tsk/ecommerce/repositories`

### Identity & Security

- [Authentication API](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/AuthenticationController.java): `src/main/java/com/tsk/ecommerce/controllers/AuthenticationController.java`
- [Login Service](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/user/LoginService.java): `src/main/java/com/tsk/ecommerce/services/user/LoginService.java`
- [Registration Service](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/user/RegistrationService.java): `src/main/java/com/tsk/ecommerce/services/user/RegistrationService.java`
- [User Lookup](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/security/CustomUserDetailsService.java): `src/main/java/com/tsk/ecommerce/services/security/CustomUserDetailsService.java`
- [JWT Filter](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/security/jwt/JwtAuthorizationFilter.java): `src/main/java/com/tsk/ecommerce/services/security/jwt/JwtAuthorizationFilter.java`
- [Web Security](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/configs/security/WebSecurityConfig.java): `src/main/java/com/tsk/ecommerce/configs/security/WebSecurityConfig.java`
- [User Repository](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/repositories/UserEntityRepository.java): `src/main/java/com/tsk/ecommerce/repositories/UserEntityRepository.java`

### File Management

- [File API](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/controllers/FileController.java): `src/main/java/com/tsk/ecommerce/controllers/FileController.java`
- [File Upload Service](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/file/FileUploadService.java): `src/main/java/com/tsk/ecommerce/services/file/FileUploadService.java`
- [File Operations](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/file/FileOperations.java): `src/main/java/com/tsk/ecommerce/services/file/FileOperations.java`
- **Local Filesystem**

### Notifications

- [Email Notifications](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/messageries/email/NotificationEmailService.java): `src/main/java/com/tsk/ecommerce/services/messageries/email/NotificationEmailService.java`
- **Mail Provider**
- [SMS Sender](https://github.com/marcodev05/mystore/blob/master/src/main/java/com/tsk/ecommerce/services/messageries/sms/SmsSenderImpl.java): `src/main/java/com/tsk/ecommerce/services/messageries/sms/SmsSenderImpl.java`
- **Twilio**

### Other components

- **API Client**

## Connections

- API Client → Category API: requests categories
- API Client → Product API: requests products
- API Client → Authentication API: authenticates
- API Client → File API: uploads files
- Category API → Category Service: calls
- Product API → Product Service: calls
- File API → File Operations: uses
- File Upload Service → Local Filesystem: reads and writes
- File Upload Service → File Operations: implements
- Email Notifications → Mail Provider: sends email
- SMS Sender → Twilio: sends SMS
