# shashith-malshan/real-estate-backend architecture

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

- Interactive diagram: https://gitdiagram.com/shashith-malshan/real-estate-backend
- Repository: https://github.com/shashith-malshan/real-estate-backend

## Overview

This is a real-estate marketplace backend: users can register and authenticate in buyer, seller, or admin roles; browse and manage property listings; and arrange inquiries and visits. Admin functions provide user management and system metrics, while deal endpoints support property transactions. The graph follows controller-to-service boundaries and shows selected implementation dependencies. The source index supports those references, but several services, repositories, and the deal/visit implementations were not excerpted, so their internal flows are not expanded.

Main entry points: [`src/main/java/com/icet/service/impl/AuthServiceImpl.java`](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/AuthServiceImpl.java) (Auth workflows), [`src/main/java/com/icet/service/impl/PropertyServiceImpl.java`](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/PropertyServiceImpl.java) (Listing workflows), [`src/main/java/com/icet/service/impl/InquiryServiceImpl.java`](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/InquiryServiceImpl.java) (Inquiry workflows), [`src/main/java/com/icet/controller/AuthController.java`](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/AuthController.java) (Authentication API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Identity and access"]
  node_auth_api["Authentication API"]
  node_auth_service["Authentication service<br/>[AuthService.java]"]
  node_auth_impl["Auth workflows"]
  node_jwt["JWT tokens"]
  node_jwt_filter["JWT request filter"]
  node_user_data["User and role data"]
  node_user_store[("User repositories")]
end

subgraph group_listings["Property listings"]
  node_property_api["Property API"]
  node_property_service["Property service"]
  node_property_impl["Listing workflows"]
  node_property_data["Property data"]
  node_property_store[("Property repositories")]
end

subgraph group_engagement["Buyer engagement"]
  node_inquiry_api["Inquiry API"]
  node_inquiry_service["Inquiry service"]
  node_inquiry_impl["Inquiry workflows"]
  node_inquiry_store[("Inquiry repository")]
  node_visit_api["Visit API"]
  node_visit_service["Visit service<br/>[VisitService.java]"]
  node_visit_impl["Visit workflows"]
  node_visit_store[("Visit repository")]
end

subgraph group_operations["Administration and deals"]
  node_deal_api["Deal API"]
  node_deal_service["Deal service<br/>[DealService.java]"]
  node_deal_impl["Deal workflows"]
  node_admin_api["Admin API"]
  node_admin_service["Admin service<br/>[AdminService.java]"]
  node_admin_impl["Admin workflows"]
  node_admin_store[("Admin data access")]
end

node_user(("Marketplace user"))

node_user -->|"submits credentials"| node_auth_api
node_auth_api -->|"invokes"| node_auth_service
node_auth_impl -->|"generates tokens"| node_jwt
node_jwt_filter -->|"validates tokens"| node_jwt
node_auth_impl -->|"reads and writes"| node_user_store
node_auth_impl -->|"creates profiles"| node_user_data
node_property_api -->|"invokes"| node_property_service
node_property_impl -->|"reads and writes"| node_property_store
node_property_impl -->|"maps listings"| node_property_data
node_inquiry_api -->|"invokes"| node_inquiry_service
node_inquiry_impl -->|"reads and writes"| node_inquiry_store
node_inquiry_impl -->|"looks up properties"| node_property_store
node_visit_api -->|"invokes"| node_visit_service
node_visit_impl -.->|"reads and writes"| node_visit_store
node_deal_api -->|"invokes"| node_deal_service
node_deal_impl -.->|"accesses deal data"| node_admin_store
node_admin_api -->|"invokes"| node_admin_service
node_admin_impl -->|"reads and writes"| node_admin_store

click node_auth_api "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/AuthController.java"
click node_auth_service "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/AuthService.java"
click node_auth_impl "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/AuthServiceImpl.java"
click node_jwt "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/security/JwtTokenProvider.java"
click node_jwt_filter "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/security/JwtAuthenticationFilter.java"
click node_user_data "https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/model/entity"
click node_user_store "https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/repository"
click node_property_api "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/PropertyController.java"
click node_property_service "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/PropertyService.java"
click node_property_impl "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/PropertyServiceImpl.java"
click node_property_data "https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/model/entity"
click node_property_store "https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/repository"
click node_inquiry_api "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/InquiryController.java"
click node_inquiry_service "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/InquiryService.java"
click node_inquiry_impl "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/InquiryServiceImpl.java"
click node_inquiry_store "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/repository/InquiryRepository.java"
click node_visit_api "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/VisitController.java"
click node_visit_service "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/VisitService.java"
click node_visit_impl "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/VisitServiceImpl.java"
click node_visit_store "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/repository/VisitRepository.java"
click node_deal_api "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/DealController.java"
click node_deal_service "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/DealService.java"
click node_deal_impl "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/DealServiceImpl.java"
click node_admin_api "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/AdminController.java"
click node_admin_service "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/AdminService.java"
click node_admin_impl "https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/AdminServiceImpl.java"
click node_admin_store "https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/repository"

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_auth_api,node_auth_service,node_auth_impl,node_jwt,node_jwt_filter,node_user_data,node_user_store,node_user toneBlue
class node_property_api,node_property_service,node_property_impl,node_property_data,node_property_store toneAmber
class node_inquiry_api,node_inquiry_service,node_inquiry_impl,node_inquiry_store,node_visit_api,node_visit_service,node_visit_impl,node_visit_store toneMint
class node_deal_api,node_deal_service,node_deal_impl,node_admin_api,node_admin_service,node_admin_impl,node_admin_store toneRose
```

## Components

### Identity and access

- [Authentication API](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/AuthController.java): `src/main/java/com/icet/controller/AuthController.java`
- [Authentication service](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/AuthService.java): `src/main/java/com/icet/service/AuthService.java`
- [Auth workflows](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/AuthServiceImpl.java): `src/main/java/com/icet/service/impl/AuthServiceImpl.java`
- [JWT tokens](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/security/JwtTokenProvider.java): `src/main/java/com/icet/security/JwtTokenProvider.java`
- [JWT request filter](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/security/JwtAuthenticationFilter.java): `src/main/java/com/icet/security/JwtAuthenticationFilter.java`
- [User and role data](https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/model/entity): `src/main/java/com/icet/model/entity`
- [User repositories](https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/repository): `src/main/java/com/icet/repository`

### Property listings

- [Property API](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/PropertyController.java): `src/main/java/com/icet/controller/PropertyController.java`
- [Property service](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/PropertyService.java): `src/main/java/com/icet/service/PropertyService.java`
- [Listing workflows](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/PropertyServiceImpl.java): `src/main/java/com/icet/service/impl/PropertyServiceImpl.java`
- [Property data](https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/model/entity): `src/main/java/com/icet/model/entity`
- [Property repositories](https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/repository): `src/main/java/com/icet/repository`

### Buyer engagement

- [Inquiry API](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/InquiryController.java): `src/main/java/com/icet/controller/InquiryController.java`
- [Inquiry service](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/InquiryService.java): `src/main/java/com/icet/service/InquiryService.java`
- [Inquiry workflows](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/InquiryServiceImpl.java): `src/main/java/com/icet/service/impl/InquiryServiceImpl.java`
- [Inquiry repository](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/repository/InquiryRepository.java): `src/main/java/com/icet/repository/InquiryRepository.java`
- [Visit API](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/VisitController.java): `src/main/java/com/icet/controller/VisitController.java`
- [Visit service](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/VisitService.java): `src/main/java/com/icet/service/VisitService.java`
- [Visit workflows](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/VisitServiceImpl.java): `src/main/java/com/icet/service/impl/VisitServiceImpl.java`
- [Visit repository](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/repository/VisitRepository.java): `src/main/java/com/icet/repository/VisitRepository.java`

### Administration and deals

- [Deal API](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/DealController.java): `src/main/java/com/icet/controller/DealController.java`
- [Deal service](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/DealService.java): `src/main/java/com/icet/service/DealService.java`
- [Deal workflows](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/DealServiceImpl.java): `src/main/java/com/icet/service/impl/DealServiceImpl.java`
- [Admin API](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/controller/AdminController.java): `src/main/java/com/icet/controller/AdminController.java`
- [Admin service](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/AdminService.java): `src/main/java/com/icet/service/AdminService.java`
- [Admin workflows](https://github.com/shashith-malshan/real-estate-backend/blob/main/src/main/java/com/icet/service/impl/AdminServiceImpl.java): `src/main/java/com/icet/service/impl/AdminServiceImpl.java`
- [Admin data access](https://github.com/shashith-malshan/real-estate-backend/tree/main/src/main/java/com/icet/repository): `src/main/java/com/icet/repository`

### Other components

- **Marketplace user**

## Connections

- Marketplace user → Authentication API: submits credentials
- Authentication API → Authentication service: invokes (evidence: `src/main/java/com/icet/controller/AuthController.java`)
- Auth workflows → JWT tokens: generates tokens (evidence: `src/main/java/com/icet/service/impl/AuthServiceImpl.java`)
- JWT request filter → JWT tokens: validates tokens (evidence: `src/main/java/com/icet/security/JwtAuthenticationFilter.java`)
- Auth workflows → User repositories: reads and writes (evidence: `src/main/java/com/icet/service/impl/AuthServiceImpl.java`)
- Auth workflows → User and role data: creates profiles (evidence: `src/main/java/com/icet/service/impl/AuthServiceImpl.java`)
- Property API → Property service: invokes (evidence: `src/main/java/com/icet/controller/PropertyController.java`)
- Listing workflows → Property repositories: reads and writes (evidence: `src/main/java/com/icet/service/impl/PropertyServiceImpl.java`)
- Listing workflows → Property data: maps listings (evidence: `src/main/java/com/icet/service/impl/PropertyServiceImpl.java`)
- Inquiry API → Inquiry service: invokes (evidence: `src/main/java/com/icet/controller/InquiryController.java`)
- Inquiry workflows → Inquiry repository: reads and writes (evidence: `src/main/java/com/icet/service/impl/InquiryServiceImpl.java`)
- Inquiry workflows → Property repositories: looks up properties (evidence: `src/main/java/com/icet/service/impl/InquiryServiceImpl.java`)
- Visit API → Visit service: invokes (evidence: `src/main/java/com/icet/controller/VisitController.java`)
- Visit workflows → Visit repository: reads and writes
- Deal API → Deal service: invokes (evidence: `src/main/java/com/icet/controller/DealController.java`)
- Deal workflows → Admin data access: accesses deal data
- Admin API → Admin service: invokes (evidence: `src/main/java/com/icet/controller/AdminController.java`)
- Admin workflows → Admin data access: reads and writes (evidence: `src/main/java/com/icet/service/impl/AdminServiceImpl.java`)
