# carilloandrei9264/trusthome-ph architecture

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

- Interactive diagram: https://gitdiagram.com/carilloandrei9264/trusthome-ph
- Repository: https://github.com/carilloandrei9264/trusthome-ph

## Overview

TrustHome PH is a Philippine rental marketplace with a separate Metrobank-acquired property catalog and Python scraper. Renters browse listings and request bookings; homeowners submit listings for admin review, with trust, dispute, rating, and notification workflows supporting accountability. React routes connect the user-facing stages to Firebase services; the scraper separately writes catalog data to Firestore. The graph preserves documented capabilities, but unsampled modules are linked only where the README or source index supports the relationship.

Main entry points: [`src/App.jsx`](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/App.jsx) (App routing), [`src/admin/AdminDisputes.jsx`](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/admin/AdminDisputes.jsx) (Dispute review), [`src/pages/CreateListing.jsx`](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/CreateListing.jsx) (Submit listing), [`src/admin/AdminListings.jsx`](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/admin/AdminListings.jsx) (Listing review)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Marketplace app"]
  node_app["App routing<br/>[App.jsx]"]
  node_browse["Browse listings<br/>[Browse.jsx]"]
  node_listing["Listing details<br/>[ListingDetail.jsx]"]
  node_listing_create["Submit listing<br/>[CreateListing.jsx]"]
  node_booking["Booking requests<br/>[BookingRequest.jsx]"]
  node_booking_ops["Booking management"]
end

subgraph group_trust["Trust workflows"]
  node_admin_review["Listing review<br/>[AdminListings.jsx]"]
  node_disputes["Dispute review<br/>[AdminDisputes.jsx]"]
  node_activity["Account activity<br/>[accountActivity.js]"]
  node_notifications["Notifications<br/>[notifications.js]"]
  node_ratings["Ratings and profiles<br/>[RatingForm.jsx]"]
  node_trust_scores["Trust scoring<br/>[trustScore.js]"]
end

subgraph group_catalog["Bank catalog"]
  node_bank_catalog["Bank property catalog<br/>[BankCatalog.jsx]"]
  node_loan["Loan estimate<br/>[loanCalculator.js]"]
end

subgraph group_platform["Firebase services"]
  node_auth["Authentication<br/>[AuthContext.jsx]"]
  node_firebase["Firebase clients<br/>[firebase.js]"]
  node_firestore[("Cloud Firestore")]
  node_cloudinary["Cloudinary media"]
  node_upload["Image upload<br/>[uploadImage.js]"]
  node_functions["Firebase Functions<br/>[index.js]"]
end

subgraph group_scraper["Catalog scraper"]
  node_scraper["Metrobank scraper<br/>[scraper.py]"]
  node_scraper_worker["Scraper worker<br/>[worker.py]"]
  node_catalog_db[("Catalog persistence<br/>[database.py]")]
end

node_renter(("Renter"))
node_homeowner(("Homeowner"))
node_admin(("Admin"))

node_renter -->|"uses"| node_app
node_homeowner -->|"uses"| node_app
node_admin -->|"uses"| node_app
node_app -->|"routes to"| node_browse
node_app -->|"routes to"| node_listing_create
node_app -->|"routes to"| node_booking
node_app -->|"routes to"| node_bank_catalog
node_renter -->|"discovers"| node_browse
node_browse -->|"opens listing"| node_listing
node_renter -->|"requests booking"| node_booking
node_booking -->|"records request"| node_firestore
node_booking_ops -->|"tracks status"| node_firestore
node_homeowner -->|"submits property"| node_listing_create
node_listing_create -->|"uploads images"| node_upload
node_upload -->|"stores media"| node_cloudinary
node_listing_create -->|"writes listing"| node_firestore
node_admin -->|"reviews listings"| node_admin_review
node_admin_review -->|"updates listing"| node_firestore
node_admin_review -->|"records action"| node_activity
node_admin -->|"reviews disputes"| node_disputes
node_disputes -->|"updates dispute"| node_firestore
node_disputes -->|"creates alerts"| node_notifications
node_disputes -->|"records action"| node_activity
node_renter -->|"submits rating"| node_ratings
node_ratings -.->|"supports scoring"| node_trust_scores
node_bank_catalog -->|"queries properties"| node_firestore
node_bank_catalog -->|"estimates financing"| node_loan
node_scraper_worker -->|"runs scraper"| node_scraper
node_scraper_worker -->|"uses persistence"| node_catalog_db
node_scraper -->|"persists results"| node_catalog_db
node_catalog_db -->|"writes catalog"| node_firestore
node_auth -->|"uses clients"| node_firebase
node_firebase -->|"connects"| node_firestore
node_functions -.->|"backend integration"| node_firestore

click node_app "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/App.jsx"
click node_browse "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/Browse.jsx"
click node_listing "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/ListingDetail.jsx"
click node_listing_create "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/CreateListing.jsx"
click node_booking "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/BookingRequest.jsx"
click node_booking_ops "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/BookingRequests.jsx"
click node_auth "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/context/AuthContext.jsx"
click node_firebase "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/firebase.js"
click node_upload "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/uploadImage.js"
click node_admin_review "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/admin/AdminListings.jsx"
click node_disputes "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/admin/AdminDisputes.jsx"
click node_activity "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/lib/accountActivity.js"
click node_notifications "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/lib/notifications.js"
click node_ratings "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/RatingForm.jsx"
click node_trust_scores "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/lib/trustScore.js"
click node_bank_catalog "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/BankCatalog.jsx"
click node_loan "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/lib/loanCalculator.js"
click node_scraper "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/bank_scraper/scraper.py"
click node_scraper_worker "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/bank_scraper/worker.py"
click node_catalog_db "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/bank_scraper/database.py"
click node_functions "https://github.com/carilloandrei9264/trusthome-ph/blob/dev/functions/index.js"

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_app,node_browse,node_listing,node_listing_create,node_booking,node_booking_ops toneBlue
class node_admin_review,node_disputes,node_activity,node_notifications,node_ratings,node_trust_scores toneAmber
class node_bank_catalog,node_loan toneMint
class node_auth,node_firebase,node_firestore,node_cloudinary,node_upload,node_functions toneRose
class node_scraper,node_scraper_worker,node_catalog_db,node_renter,node_homeowner,node_admin toneIndigo
```

## Components

### Marketplace app

- [App routing](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/App.jsx): `src/App.jsx`
- [Browse listings](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/Browse.jsx): `src/pages/Browse.jsx`
- [Listing details](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/ListingDetail.jsx): `src/pages/ListingDetail.jsx`
- [Submit listing](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/CreateListing.jsx): `src/pages/CreateListing.jsx`
- [Booking requests](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/BookingRequest.jsx): `src/pages/BookingRequest.jsx`
- [Booking management](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/BookingRequests.jsx): `src/pages/BookingRequests.jsx`

### Trust workflows

- [Listing review](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/admin/AdminListings.jsx): `src/admin/AdminListings.jsx`
- [Dispute review](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/admin/AdminDisputes.jsx): `src/admin/AdminDisputes.jsx`
- [Account activity](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/lib/accountActivity.js): `src/lib/accountActivity.js`
- [Notifications](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/lib/notifications.js): `src/lib/notifications.js`
- [Ratings and profiles](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/RatingForm.jsx): `src/pages/RatingForm.jsx`
- [Trust scoring](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/lib/trustScore.js): `src/lib/trustScore.js`

### Bank catalog

- [Bank property catalog](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/pages/BankCatalog.jsx): `src/pages/BankCatalog.jsx`
- [Loan estimate](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/lib/loanCalculator.js): `src/lib/loanCalculator.js`

### Firebase services

- [Authentication](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/context/AuthContext.jsx): `src/context/AuthContext.jsx`
- [Firebase clients](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/firebase.js): `src/firebase.js`
- **Cloud Firestore**
- **Cloudinary media**
- [Image upload](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/src/uploadImage.js): `src/uploadImage.js`
- [Firebase Functions](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/functions/index.js): `functions/index.js`

### Catalog scraper

- [Metrobank scraper](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/bank_scraper/scraper.py): `bank_scraper/scraper.py`
- [Scraper worker](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/bank_scraper/worker.py): `bank_scraper/worker.py`
- [Catalog persistence](https://github.com/carilloandrei9264/trusthome-ph/blob/dev/bank_scraper/database.py): `bank_scraper/database.py`

### Other components

- **Renter**
- **Homeowner**
- **Admin**

## Connections

- Renter → App routing: uses
- Homeowner → App routing: uses
- Admin → App routing: uses
- App routing → Browse listings: routes to (evidence: `src/App.jsx`)
- App routing → Submit listing: routes to (evidence: `src/App.jsx`)
- App routing → Booking requests: routes to (evidence: `src/App.jsx`)
- App routing → Bank property catalog: routes to (evidence: `src/App.jsx`)
- Renter → Browse listings: discovers
- Browse listings → Listing details: opens listing
- Renter → Booking requests: requests booking
- Booking requests → Cloud Firestore: records request
- Booking management → Cloud Firestore: tracks status
- Homeowner → Submit listing: submits property
- Submit listing → Image upload: uploads images (evidence: `src/pages/CreateListing.jsx`)
- Image upload → Cloudinary media: stores media (evidence: `src/uploadImage.js`)
- Submit listing → Cloud Firestore: writes listing (evidence: `src/pages/CreateListing.jsx`)
- Admin → Listing review: reviews listings
- Listing review → Cloud Firestore: updates listing (evidence: `src/admin/AdminListings.jsx`)
- Listing review → Account activity: records action (evidence: `src/admin/AdminListings.jsx`)
- Admin → Dispute review: reviews disputes
- Dispute review → Cloud Firestore: updates dispute (evidence: `src/admin/AdminDisputes.jsx`)
- Dispute review → Notifications: creates alerts (evidence: `src/admin/AdminDisputes.jsx`)
- Dispute review → Account activity: records action (evidence: `src/admin/AdminDisputes.jsx`)
- Renter → Ratings and profiles: submits rating
- Ratings and profiles → Trust scoring: supports scoring
- Bank property catalog → Cloud Firestore: queries properties (evidence: `src/pages/BankCatalog.jsx`)
- Bank property catalog → Loan estimate: estimates financing
- Scraper worker → Metrobank scraper: runs scraper (evidence: `bank_scraper/worker.py`)
- Scraper worker → Catalog persistence: uses persistence (evidence: `bank_scraper/worker.py`)
- Metrobank scraper → Catalog persistence: persists results (evidence: `bank_scraper/scraper.py`)
- Catalog persistence → Cloud Firestore: writes catalog (evidence: `bank_scraper/database.py`)
- Authentication → Firebase clients: uses clients (evidence: `src/context/AuthContext.jsx`)
- Firebase clients → Cloud Firestore: connects (evidence: `src/firebase.js`)
- Firebase Functions → Cloud Firestore: backend integration
