# majhimohit/art_gallery_backendd architecture

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

## Overview

ArtGallery is a Spring-based backend for an art gallery: clients register or log in, and browse or manage artwork through REST endpoints. Artwork management covers filtering, retrieval, creation, updates, deletion, and image handling; authentication covers account persistence, password checks, JWT issuance, and welcome email. The graph highlights these domain stages and the persistence and integration layers. Source excerpts support the main controller-to-service calls and service dependencies; database wiring and some configuration are unsampled, so those links are omitted or marked unverified.

Main entry points: [`src/main/java/com/klu/artt_gallery/service/AuthService.java`](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/AuthService.java) (Account Auth), [`src/main/java/com/klu/artt_gallery/repository/UserRepository.java`](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/repository/UserRepository.java) (User Repository), [`src/main/java/com/klu/artt_gallery/service/ArtworkService.java`](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/ArtworkService.java) (Artwork Management), [`src/main/java/com/klu/artt_gallery/repository/ArtworkRepository.java`](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/repository/ArtworkRepository.java) (Artwork Repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["REST API"]
  node_artwork_api["Artwork Endpoints"]
  node_auth_api["Auth Endpoints"]
  node_user_api["User Endpoint"]
  node_root_api["Root Endpoint"]
  node_dto_contracts["Request and Response DTOs"]
  node_error_handling["Exception Handling"]
end

subgraph group_domain["Domain Services"]
  node_artwork_service["Artwork Management"]
  node_auth_service["Account Auth<br/>[AuthService.java]"]
  node_mapper["Artwork Mapper<br/>[ArtworkMapper.java]"]
  node_jwt["JWT Utility<br/>[JwtUtil.java]"]
  node_email_validator["Email Validator"]
end

subgraph group_data["Persistence Model"]
  node_artwork_repo["Artwork Repository"]
  node_user_repo["User Repository"]
  node_artwork_entity["Artwork Model<br/>[Artwork.java]"]
  node_user_entity["User and Role Models<br/>[User.java]"]
end

subgraph group_integrations["External Integrations"]
  node_email_service["Email Sender<br/>[EmailService.java]"]
  node_image_service["Image Uploader<br/>[ImageService.java]"]
end

node_client(("API Client"))
node_cloudinary["Cloudinary"]
node_brevo["Brevo Email API"]
node_database[("Relational Database")]

node_client -->|"requests"| node_artwork_api
node_client -->|"requests"| node_auth_api
node_artwork_api -->|"delegates to"| node_artwork_service
node_auth_api -->|"delegates to"| node_auth_service
node_user_api -->|"queries"| node_user_repo
node_artwork_service -->|"reads and writes"| node_artwork_repo
node_artwork_service -->|"uploads image"| node_image_service
node_image_service -->|"uploads to"| node_cloudinary
node_auth_service -->|"reads and writes"| node_user_repo
node_auth_service -->|"generates token"| node_jwt
node_auth_service -->|"sends welcome"| node_email_service
node_email_service -->|"sends email"| node_brevo
node_artwork_repo -->|"persists"| node_artwork_entity
node_user_repo -->|"persists"| node_user_entity
node_artwork_repo -.->|"uses store"| node_database
node_user_repo -.->|"uses store"| node_database

click node_artwork_api "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/controller/ArtworkController.java"
click node_auth_api "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/controller/AuthController.java"
click node_user_api "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/controller/UserController.java"
click node_root_api "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/controller/RootController.java"
click node_artwork_service "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/ArtworkService.java"
click node_auth_service "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/AuthService.java"
click node_mapper "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/mapper/ArtworkMapper.java"
click node_jwt "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/util/JwtUtil.java"
click node_email_service "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/EmailService.java"
click node_image_service "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/ImageService.java"
click node_artwork_repo "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/repository/ArtworkRepository.java"
click node_user_repo "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/repository/UserRepository.java"
click node_artwork_entity "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/entity/Artwork.java"
click node_user_entity "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/entity/User.java"
click node_dto_contracts "https://github.com/majhimohit/art_gallery_backendd/tree/main/src/main/java/com/klu/artt_gallery/dto"
click node_error_handling "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/exception/GlobalExceptionHandler.java"
click node_email_validator "https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/util/EmailValidatorUtil.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_artwork_api,node_auth_api,node_user_api,node_root_api,node_dto_contracts,node_error_handling,node_client toneBlue
class node_artwork_service,node_auth_service,node_mapper,node_jwt,node_email_validator,node_database toneAmber
class node_artwork_repo,node_user_repo,node_artwork_entity,node_user_entity,node_brevo toneMint
class node_email_service,node_image_service toneRose
class node_cloudinary toneIndigo
```

## Components

### REST API

- [Artwork Endpoints](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/controller/ArtworkController.java): `src/main/java/com/klu/artt_gallery/controller/ArtworkController.java`
- [Auth Endpoints](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/controller/AuthController.java): `src/main/java/com/klu/artt_gallery/controller/AuthController.java`
- [User Endpoint](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/controller/UserController.java): `src/main/java/com/klu/artt_gallery/controller/UserController.java`
- [Root Endpoint](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/controller/RootController.java): `src/main/java/com/klu/artt_gallery/controller/RootController.java`
- [Request and Response DTOs](https://github.com/majhimohit/art_gallery_backendd/tree/main/src/main/java/com/klu/artt_gallery/dto): `src/main/java/com/klu/artt_gallery/dto`
- [Exception Handling](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/exception/GlobalExceptionHandler.java): `src/main/java/com/klu/artt_gallery/exception/GlobalExceptionHandler.java`

### Domain Services

- [Artwork Management](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/ArtworkService.java): `src/main/java/com/klu/artt_gallery/service/ArtworkService.java`
- [Account Auth](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/AuthService.java): `src/main/java/com/klu/artt_gallery/service/AuthService.java`
- [Artwork Mapper](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/mapper/ArtworkMapper.java): `src/main/java/com/klu/artt_gallery/mapper/ArtworkMapper.java`
- [JWT Utility](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/util/JwtUtil.java): `src/main/java/com/klu/artt_gallery/util/JwtUtil.java`
- [Email Validator](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/util/EmailValidatorUtil.java): `src/main/java/com/klu/artt_gallery/util/EmailValidatorUtil.java`

### Persistence Model

- [Artwork Repository](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/repository/ArtworkRepository.java): `src/main/java/com/klu/artt_gallery/repository/ArtworkRepository.java`
- [User Repository](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/repository/UserRepository.java): `src/main/java/com/klu/artt_gallery/repository/UserRepository.java`
- [Artwork Model](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/entity/Artwork.java): `src/main/java/com/klu/artt_gallery/entity/Artwork.java`
- [User and Role Models](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/entity/User.java): `src/main/java/com/klu/artt_gallery/entity/User.java`

### External Integrations

- [Email Sender](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/EmailService.java): `src/main/java/com/klu/artt_gallery/service/EmailService.java`
- [Image Uploader](https://github.com/majhimohit/art_gallery_backendd/blob/main/src/main/java/com/klu/artt_gallery/service/ImageService.java): `src/main/java/com/klu/artt_gallery/service/ImageService.java`

### Other components

- **API Client**
- **Cloudinary**
- **Brevo Email API**
- **Relational Database**

## Connections

- API Client → Artwork Endpoints: requests (evidence: `src/main/java/com/klu/artt_gallery/controller/ArtworkController.java`)
- API Client → Auth Endpoints: requests (evidence: `src/main/java/com/klu/artt_gallery/controller/AuthController.java`)
- Artwork Endpoints → Artwork Management: delegates to (evidence: `src/main/java/com/klu/artt_gallery/controller/ArtworkController.java`)
- Auth Endpoints → Account Auth: delegates to (evidence: `src/main/java/com/klu/artt_gallery/controller/AuthController.java`)
- User Endpoint → User Repository: queries (evidence: `src/main/java/com/klu/artt_gallery/controller/UserController.java`)
- Artwork Management → Artwork Repository: reads and writes (evidence: `src/main/java/com/klu/artt_gallery/service/ArtworkService.java`)
- Artwork Management → Image Uploader: uploads image (evidence: `src/main/java/com/klu/artt_gallery/service/ArtworkService.java`)
- Image Uploader → Cloudinary: uploads to (evidence: `src/main/java/com/klu/artt_gallery/service/ImageService.java`)
- Account Auth → User Repository: reads and writes (evidence: `src/main/java/com/klu/artt_gallery/service/AuthService.java`)
- Account Auth → JWT Utility: generates token (evidence: `src/main/java/com/klu/artt_gallery/service/AuthService.java`)
- Account Auth → Email Sender: sends welcome (evidence: `src/main/java/com/klu/artt_gallery/service/AuthService.java`)
- Email Sender → Brevo Email API: sends email (evidence: `src/main/java/com/klu/artt_gallery/service/EmailService.java`)
- Artwork Repository → Artwork Model: persists (evidence: `src/main/java/com/klu/artt_gallery/repository/ArtworkRepository.java`)
- User Repository → User and Role Models: persists (evidence: `src/main/java/com/klu/artt_gallery/repository/UserRepository.java`)
- Artwork Repository → Relational Database: uses store
- User Repository → Relational Database: uses store
