# bringo2002/roost architecture

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

## Overview

Roost is a rental-property marketplace for browsing and listing homes, applying to rent, and coordinating tenancy-related interactions. The visible entry points indicate a workflow from account access and property search through listing details, applications, and follow-up communication; landlords also manage listings and availability. The codebase includes verification, reviews, inspections, and property intelligence alongside that core. Sampled source confirms review and authentication calls and some property operations; several other subsystem connections are inferred from names and are left unwired where their callers were not shown.

Main entry points: [`src/main/java/com/roost/service/AuthService.java`](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/AuthService.java) (Authentication), [`src/main/java/com/roost/service/ReviewService.java`](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/ReviewService.java) (Review management), [`src/main/java/com/roost/controller/AuthController.java`](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/AuthController.java) (Authentication API), [`src/main/java/com/roost/controller/PropertyController.java`](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/PropertyController.java) (Property API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_access["Accounts"]
  node_auth_api["Authentication API"]
  node_auth_service["Authentication<br/>[AuthService.java]"]
  node_jwt["JWT security<br/>[JwtService.java]"]
  node_google_auth["Google sign-in"]
end

subgraph group_market["Property marketplace"]
  node_properties_api["Property API"]
  node_property_service["Property management"]
  node_property_store[("Property records")]
  node_search_api["Property search"]
  node_search_intent["Search intent"]
  node_rent_estimate["Rent estimates"]
  node_nearby["Nearby facilities"]
end

subgraph group_tenancy["Tenancy interactions"]
  node_applications_api["Rental applications"]
  node_application_service["Application handling"]
  node_application_store[("Application records")]
  node_chat_api["Messaging"]
  node_chat_service["Chat and attachments<br/>[ChatService.java]"]
  node_storage["Object storage"]
  node_reviews_api["Property reviews"]
  node_review_service["Review management<br/>[ReviewService.java]"]
  node_review_store[("Review records")]
  node_verification_api["Document verification"]
  node_inspection_api["Move-in inspection"]
  node_inspection_service["Inspection handling"]
end

subgraph group_platform["Platform services"]
  node_admin_api["Administration"]
  node_push["Push notifications"]
end

node_renter(("Renter"))
node_landlord(("Landlord"))
node_gemini{{"Gemini AI"}}
node_firebase{{"Firebase"}}

node_renter -->|"signs in"| node_auth_api
node_landlord -->|"signs in"| node_auth_api
node_auth_api -->|"delegates"| node_auth_service
node_auth_service -->|"issues tokens"| node_jwt
node_auth_service -->|"verifies Google"| node_google_auth
node_renter -->|"searches homes"| node_search_api
node_landlord -->|"manages listings"| node_properties_api
node_renter -->|"views listings"| node_properties_api
node_properties_api -->|"delegates"| node_property_service
node_search_api -.->|"extracts filters"| node_search_intent
node_search_intent -.->|"requests parsing"| node_gemini
node_renter -->|"applies"| node_applications_api
node_landlord -->|"reviews applications"| node_applications_api
node_renter -->|"messages"| node_chat_api
node_landlord -->|"messages"| node_chat_api
node_renter -->|"submits review"| node_reviews_api
node_reviews_api -->|"calls"| node_review_service
node_review_service -->|"loads property"| node_property_service
node_review_service -->|"reads and saves"| node_review_store
node_landlord -->|"submits documents"| node_verification_api
node_renter -->|"records inspection"| node_inspection_api
node_inspection_api -->|"delegates"| node_inspection_service
node_push -.->|"sends notifications"| node_firebase

click node_auth_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/AuthController.java"
click node_auth_service "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/AuthService.java"
click node_jwt "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/security/JwtService.java"
click node_google_auth "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/GoogleAuthService.java"
click node_properties_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/PropertyController.java"
click node_property_service "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/PropertyService.java"
click node_property_store "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/repository/PropertyRepository.java"
click node_search_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/SearchController.java"
click node_search_intent "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/GeminiSearchIntentService.java"
click node_rent_estimate "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/RentEstimateService.java"
click node_nearby "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/NearbyFacilitiesService.java"
click node_applications_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/ApplicationController.java"
click node_application_service "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/ApplicationService.java"
click node_application_store "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/repository/ApplicationRepository.java"
click node_chat_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/ChatController.java"
click node_chat_service "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/ChatService.java"
click node_storage "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/R2StorageService.java"
click node_reviews_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/ReviewController.java"
click node_review_service "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/ReviewService.java"
click node_review_store "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/repository/ReviewRepository.java"
click node_verification_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/DocumentVerificationController.java"
click node_inspection_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/MoveInInspectionController.java"
click node_inspection_service "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/MoveInInspectionService.java"
click node_admin_api "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/AdminController.java"
click node_push "https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/FirebasePushService.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_auth_api,node_auth_service,node_jwt,node_google_auth toneBlue
class node_properties_api,node_property_service,node_property_store,node_search_api,node_search_intent,node_rent_estimate,node_nearby toneAmber
class node_applications_api,node_application_service,node_application_store,node_chat_api,node_chat_service,node_storage,node_reviews_api,node_review_service,node_review_store,node_verification_api,node_inspection_api,node_inspection_service toneMint
class node_admin_api,node_push toneRose
class node_renter,node_landlord,node_gemini,node_firebase toneIndigo
```

## Components

### Accounts

- [Authentication API](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/AuthController.java): `src/main/java/com/roost/controller/AuthController.java`
- [Authentication](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/AuthService.java): `src/main/java/com/roost/service/AuthService.java`
- [JWT security](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/security/JwtService.java): `src/main/java/com/roost/security/JwtService.java`
- [Google sign-in](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/GoogleAuthService.java): `src/main/java/com/roost/service/GoogleAuthService.java`

### Property marketplace

- [Property API](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/PropertyController.java): `src/main/java/com/roost/controller/PropertyController.java`
- [Property management](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/PropertyService.java): `src/main/java/com/roost/service/PropertyService.java`
- [Property records](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/repository/PropertyRepository.java): `src/main/java/com/roost/repository/PropertyRepository.java`
- [Property search](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/SearchController.java): `src/main/java/com/roost/controller/SearchController.java`
- [Search intent](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/GeminiSearchIntentService.java): `src/main/java/com/roost/service/GeminiSearchIntentService.java`
- [Rent estimates](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/RentEstimateService.java): `src/main/java/com/roost/service/RentEstimateService.java`
- [Nearby facilities](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/NearbyFacilitiesService.java): `src/main/java/com/roost/service/NearbyFacilitiesService.java`

### Tenancy interactions

- [Rental applications](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/ApplicationController.java): `src/main/java/com/roost/controller/ApplicationController.java`
- [Application handling](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/ApplicationService.java): `src/main/java/com/roost/service/ApplicationService.java`
- [Application records](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/repository/ApplicationRepository.java): `src/main/java/com/roost/repository/ApplicationRepository.java`
- [Messaging](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/ChatController.java): `src/main/java/com/roost/controller/ChatController.java`
- [Chat and attachments](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/ChatService.java): `src/main/java/com/roost/service/ChatService.java`
- [Object storage](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/R2StorageService.java): `src/main/java/com/roost/service/R2StorageService.java`
- [Property reviews](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/ReviewController.java): `src/main/java/com/roost/controller/ReviewController.java`
- [Review management](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/ReviewService.java): `src/main/java/com/roost/service/ReviewService.java`
- [Review records](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/repository/ReviewRepository.java): `src/main/java/com/roost/repository/ReviewRepository.java`
- [Document verification](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/DocumentVerificationController.java): `src/main/java/com/roost/controller/DocumentVerificationController.java`
- [Move-in inspection](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/MoveInInspectionController.java): `src/main/java/com/roost/controller/MoveInInspectionController.java`
- [Inspection handling](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/MoveInInspectionService.java): `src/main/java/com/roost/service/MoveInInspectionService.java`

### Platform services

- [Administration](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/controller/AdminController.java): `src/main/java/com/roost/controller/AdminController.java`
- [Push notifications](https://github.com/bringo2002/roost/blob/main/src/main/java/com/roost/service/FirebasePushService.java): `src/main/java/com/roost/service/FirebasePushService.java`

### Other components

- **Renter**
- **Landlord**
- **Gemini AI**
- **Firebase**

## Connections

- Renter → Authentication API: signs in
- Landlord → Authentication API: signs in
- Authentication API → Authentication: delegates
- Authentication → JWT security: issues tokens
- Authentication → Google sign-in: verifies Google
- Renter → Property search: searches homes
- Landlord → Property API: manages listings
- Renter → Property API: views listings
- Property API → Property management: delegates
- Property search → Search intent: extracts filters
- Search intent → Gemini AI: requests parsing
- Renter → Rental applications: applies
- Landlord → Rental applications: reviews applications
- Renter → Messaging: messages
- Landlord → Messaging: messages
- Renter → Property reviews: submits review
- Property reviews → Review management: calls
- Review management → Property management: loads property
- Review management → Review records: reads and saves
- Landlord → Document verification: submits documents
- Renter → Move-in inspection: records inspection
- Move-in inspection → Inspection handling: delegates
- Push notifications → Firebase: sends notifications
