# dopamine-64/rentscape architecture

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

## Overview

RentScape is a Laravel rental-property marketplace. The main workflow is to browse or compare listings, submit a booking request, and have an owner select a tenant; the request flow also creates a conversation. Authentication, messaging, rent payments, dashboards, and administration are additional product areas indicated by the tree. The sampled code confirms listing and booking behavior, but route mappings and most other controller internals were not sampled, so their specific wiring is not inferred.

Main entry points: [`routes/web.php`](https://github.com/dopamine-64/rentscape/blob/main/routes/web.php) (Web routes), [`app/Http/Controllers/BookingRequestController.php`](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/BookingRequestController.php) (Booking requests), [`app/Http/Controllers/PropertyController.php`](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/PropertyController.php) (Property listings), [`app/Models/Property.php`](https://github.com/dopamine-64/rentscape/blob/main/app/Models/Property.php) (Properties)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Web entry"]
  node_web_routes["Web routes<br/>[web.php]"]
end

subgraph group_accounts["Accounts and dashboards"]
  node_auth_controllers["Authentication"]
  node_user_model["User accounts<br/>[User.php]"]
  node_dashboards["Role dashboards"]
  node_profile["User profile"]
end

subgraph group_marketplace["Rental marketplace"]
  node_property_controller["Property listings"]
  node_booking_controller["Booking requests"]
  node_owner_applications["Owner applications"]
  node_properties["Properties<br/>[Property.php]"]
  node_property_images["Property images<br/>[PropertyImage.php]"]
  node_booking_requests["Booking records<br/>[BookingRequest.php]"]
  node_applications["Applications<br/>[Application.php]"]
  node_database[("MySQL database")]
end

subgraph group_communication["Communication and payments"]
  node_conversation_controller["Conversations"]
  node_message_controller["Messaging"]
  node_conversation_model["Conversation records<br/>[Conversation.php]"]
  node_message_model["Message records<br/>[Message.php]"]
  node_rent_payments["Rent payments"]
  node_payment_model["Payment records<br/>[RentPayment.php]"]
end

node_visitor(("Visitor or user"))

node_visitor -->|"sends web requests"| node_web_routes
node_web_routes -->|"dispatches requests"| node_property_controller
node_web_routes -->|"dispatches requests"| node_booking_controller
node_web_routes -->|"dispatches requests"| node_owner_applications
node_web_routes -->|"dispatches requests"| node_auth_controllers
node_web_routes -->|"dispatches requests"| node_dashboards
node_web_routes -->|"dispatches requests"| node_profile
node_web_routes -->|"dispatches requests"| node_conversation_controller
node_web_routes -->|"dispatches requests"| node_message_controller
node_web_routes -->|"dispatches requests"| node_rent_payments
node_property_controller -->|"queries and writes"| node_properties
node_property_controller -->|"creates images"| node_property_images
node_booking_controller -->|"loads and updates"| node_properties
node_booking_controller -->|"creates and updates"| node_booking_requests
node_booking_controller -->|"creates conversation"| node_conversation_model
node_owner_applications -->|"loads and updates"| node_applications
node_auth_controllers -->|"creates accounts"| node_user_model
node_properties -->|"persists records"| node_database
node_property_images -->|"persists records"| node_database
node_booking_requests -->|"persists records"| node_database
node_applications -->|"persists records"| node_database
node_user_model -->|"persists records"| node_database
node_conversation_model -->|"persists records"| node_database
node_message_model -->|"persists records"| node_database
node_payment_model -->|"persists records"| node_database

click node_web_routes "https://github.com/dopamine-64/rentscape/blob/main/routes/web.php"
click node_property_controller "https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/PropertyController.php"
click node_booking_controller "https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/BookingRequestController.php"
click node_owner_applications "https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/Owner/ApplicationController.php"
click node_properties "https://github.com/dopamine-64/rentscape/blob/main/app/Models/Property.php"
click node_property_images "https://github.com/dopamine-64/rentscape/blob/main/app/Models/PropertyImage.php"
click node_booking_requests "https://github.com/dopamine-64/rentscape/blob/main/app/Models/BookingRequest.php"
click node_applications "https://github.com/dopamine-64/rentscape/blob/main/app/Models/Application.php"
click node_auth_controllers "https://github.com/dopamine-64/rentscape/tree/main/app/Http/Controllers/Auth"
click node_user_model "https://github.com/dopamine-64/rentscape/blob/main/app/Models/User.php"
click node_dashboards "https://github.com/dopamine-64/rentscape/tree/main/app/Http/Controllers"
click node_profile "https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/ProfileController.php"
click node_conversation_controller "https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/ConversationController.php"
click node_message_controller "https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/MessageController.php"
click node_conversation_model "https://github.com/dopamine-64/rentscape/blob/main/app/Models/Conversation.php"
click node_message_model "https://github.com/dopamine-64/rentscape/blob/main/app/Models/Message.php"
click node_rent_payments "https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/RentPaymentController.php"
click node_payment_model "https://github.com/dopamine-64/rentscape/blob/main/app/Models/RentPayment.php"

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_web_routes,node_visitor toneBlue
class node_auth_controllers,node_user_model,node_dashboards,node_profile toneAmber
class node_property_controller,node_booking_controller,node_owner_applications,node_properties,node_property_images,node_booking_requests,node_applications,node_database toneMint
class node_conversation_controller,node_message_controller,node_conversation_model,node_message_model,node_rent_payments,node_payment_model toneRose
```

## Components

### Web entry

- [Web routes](https://github.com/dopamine-64/rentscape/blob/main/routes/web.php): `routes/web.php`

### Accounts and dashboards

- [Authentication](https://github.com/dopamine-64/rentscape/tree/main/app/Http/Controllers/Auth): `app/Http/Controllers/Auth`
- [User accounts](https://github.com/dopamine-64/rentscape/blob/main/app/Models/User.php): `app/Models/User.php`
- [Role dashboards](https://github.com/dopamine-64/rentscape/tree/main/app/Http/Controllers): `app/Http/Controllers`
- [User profile](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/ProfileController.php): `app/Http/Controllers/ProfileController.php`

### Rental marketplace

- [Property listings](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/PropertyController.php): `app/Http/Controllers/PropertyController.php`
- [Booking requests](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/BookingRequestController.php): `app/Http/Controllers/BookingRequestController.php`
- [Owner applications](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/Owner/ApplicationController.php): `app/Http/Controllers/Owner/ApplicationController.php`
- [Properties](https://github.com/dopamine-64/rentscape/blob/main/app/Models/Property.php): `app/Models/Property.php`
- [Property images](https://github.com/dopamine-64/rentscape/blob/main/app/Models/PropertyImage.php): `app/Models/PropertyImage.php`
- [Booking records](https://github.com/dopamine-64/rentscape/blob/main/app/Models/BookingRequest.php): `app/Models/BookingRequest.php`
- [Applications](https://github.com/dopamine-64/rentscape/blob/main/app/Models/Application.php): `app/Models/Application.php`
- **MySQL database**

### Communication and payments

- [Conversations](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/ConversationController.php): `app/Http/Controllers/ConversationController.php`
- [Messaging](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/MessageController.php): `app/Http/Controllers/MessageController.php`
- [Conversation records](https://github.com/dopamine-64/rentscape/blob/main/app/Models/Conversation.php): `app/Models/Conversation.php`
- [Message records](https://github.com/dopamine-64/rentscape/blob/main/app/Models/Message.php): `app/Models/Message.php`
- [Rent payments](https://github.com/dopamine-64/rentscape/blob/main/app/Http/Controllers/RentPaymentController.php): `app/Http/Controllers/RentPaymentController.php`
- [Payment records](https://github.com/dopamine-64/rentscape/blob/main/app/Models/RentPayment.php): `app/Models/RentPayment.php`

### Other components

- **Visitor or user**

## Connections

- Visitor or user → Web routes: sends web requests
- Web routes → Property listings: dispatches requests
- Web routes → Booking requests: dispatches requests
- Web routes → Owner applications: dispatches requests
- Web routes → Authentication: dispatches requests
- Web routes → Role dashboards: dispatches requests
- Web routes → User profile: dispatches requests
- Web routes → Conversations: dispatches requests
- Web routes → Messaging: dispatches requests
- Web routes → Rent payments: dispatches requests
- Property listings → Properties: queries and writes
- Property listings → Property images: creates images
- Booking requests → Properties: loads and updates
- Booking requests → Booking records: creates and updates
- Booking requests → Conversation records: creates conversation
- Owner applications → Applications: loads and updates
- Authentication → User accounts: creates accounts
- Properties → MySQL database: persists records
- Property images → MySQL database: persists records
- Booking records → MySQL database: persists records
- Applications → MySQL database: persists records
- User accounts → MySQL database: persists records
- Conversation records → MySQL database: persists records
- Message records → MySQL database: persists records
- Payment records → MySQL database: persists records
