# saudeepadhikari/room-finder architecture

> Architecture diagram of the GitHub repository saudeepadhikari/room-finder, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-30). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/saudeepadhikari/room-finder
- Repository: https://github.com/saudeepadhikari/room-finder

## Overview

Room Finder is a rental-room marketplace with separate React user and admin applications backed by an Express/MongoDB API. The main user journey is account access, room discovery and listing, booking, eSewa payment, and post-stay reviews; administrators oversee listings, users, bookings, reviews, payments, and analytics. The graph includes the documented Cloudinary image capability and notification subsystem. Some UI-to-API and route-to-controller wiring is unsampled, so those connections are shown only where supported by the README or source index; dashed links indicate unverified integrations.

Main entry points: [`client/src/App.js`](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/App.js) (Client routing), [`backend/controllers/reviewController.js`](https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/reviewController.js) (Review moderation), [`backend/controllers/esewaController.js`](https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/esewaController.js) (Payment processing), [`backend/services/adminService.js`](https://github.com/saudeepadhikari/room-finder/blob/master/backend/services/adminService.js) (Admin analytics)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_client["User platform"]
  node_client_app["Client routing<br/>[App.js]"]
  node_auth_ui["Account access<br/>[AuthPage.js]"]
  node_user_state["User session<br/>[UserContext.js]"]
  node_room_discovery["Room search"]
  node_listing_ui["Room listings"]
  node_booking_ui["Booking and payment<br/>[EsewaPayment.js]"]
  node_review_ui["Room reviews<br/>[ReviewForm.js]"]
  node_notifications_ui["Notifications"]
end

subgraph group_backend["API and domain"]
  node_api_server["Express API<br/>[server.js]"]
  node_auth_api["Authentication<br/>[authController.js]"]
  node_room_api["Room management<br/>[rooms.js]"]
  node_search_api["Search service<br/>[search.js]"]
  node_booking_api["Bookings<br/>[bookings.js]"]
  node_payment_api["Payment processing<br/>[esewaController.js]"]
  node_review_api["Review moderation"]
  node_notification_api["Notification routes<br/>[notifications.js]"]
  node_admin_api["Admin operations<br/>[adminController.js]"]
  node_admin_stats["Admin analytics<br/>[adminService.js]"]
  node_user_store[("User records<br/>[User.js]")]
  node_room_store[("Room records<br/>[Room.js]")]
  node_booking_store[("Booking records<br/>[Booking.js]")]
  node_transaction_store[("Transactions<br/>[Transaction.js]")]
  node_review_store[("Review records<br/>[Review.js]")]
  node_notification_store[("Notifications<br/>[Notification.js]")]
end

subgraph group_admin["Admin platform"]
  node_admin_app["Admin routing<br/>[App.jsx]"]
  node_admin_dashboard["Admin dashboard"]
  node_admin_analytics["Analytics views"]
  node_admin_reviews["Review management"]
end

subgraph group_services["External services"]
  node_esewa{{"eSewa gateway"}}
  node_cloudinary{{"Cloudinary"}}
end

node_renter(("Renter / landlord"))

node_renter -->|"uses"| node_client_app
node_client_app -->|"routes to"| node_auth_ui
node_auth_ui -->|"authenticates through"| node_user_state
node_user_state -->|"requests session"| node_auth_api
node_client_app -->|"offers discovery"| node_room_discovery
node_room_discovery -.->|"searches"| node_search_api
node_client_app -->|"offers room posting"| node_listing_ui
node_listing_ui -.->|"manages listings"| node_room_api
node_client_app -->|"supports transactions"| node_booking_ui
node_booking_ui -.->|"initiates payment"| node_payment_api
node_payment_api -.->|"verifies payment"| node_esewa
node_client_app -->|"offers reviews"| node_review_ui
node_review_ui -->|"submits reviews"| node_review_api
node_client_app -->|"shows notifications"| node_notifications_ui
node_notifications_ui -->|"loads notifications"| node_notification_api
node_api_server -->|"mounts routes"| node_room_api
node_api_server -->|"mounts routes"| node_auth_api
node_api_server -->|"mounts routes"| node_review_api
node_api_server -->|"mounts routes"| node_payment_api
node_review_api -->|"checks completed stays"| node_booking_store
node_review_api -->|"creates and updates"| node_review_store
node_review_api -->|"creates alerts"| node_notification_store
node_review_api -->|"looks up users"| node_user_store
node_payment_api -->|"updates bookings"| node_booking_store
node_payment_api -->|"records payments"| node_transaction_store
node_payment_api -->|"creates alerts"| node_notification_store
node_auth_api -->|"reads and updates"| node_user_store
node_admin_app -->|"routes to"| node_admin_dashboard
node_admin_app -->|"routes to"| node_admin_analytics
node_admin_app -->|"routes to"| node_admin_reviews
node_admin_dashboard -->|"loads dashboard data"| node_admin_api
node_admin_analytics -->|"requests analytics"| node_admin_api
node_admin_reviews -->|"moderates reviews"| node_review_api
node_admin_api -->|"builds statistics"| node_admin_stats
node_admin_stats -->|"aggregates users"| node_user_store
node_admin_stats -->|"aggregates rooms"| node_room_store
node_admin_stats -->|"aggregates bookings"| node_booking_store
node_admin_stats -->|"reads transactions"| node_transaction_store
node_auth_api -.->|"stores profile images"| node_cloudinary
node_room_api -.->|"stores listing images"| node_cloudinary

click node_client_app "https://github.com/saudeepadhikari/room-finder/blob/master/client/src/App.js"
click node_auth_ui "https://github.com/saudeepadhikari/room-finder/blob/master/client/src/pages/AuthPage.js"
click node_user_state "https://github.com/saudeepadhikari/room-finder/blob/master/client/src/context/UserContext.js"
click node_room_discovery "https://github.com/saudeepadhikari/room-finder/blob/master/client/src/components/AdvancedSearchFilter.js"
click node_listing_ui "https://github.com/saudeepadhikari/room-finder/blob/master/client/src/components/forms/ModernPostRoomForm.js"
click node_booking_ui "https://github.com/saudeepadhikari/room-finder/blob/master/client/src/components/EsewaPayment.js"
click node_review_ui "https://github.com/saudeepadhikari/room-finder/blob/master/client/src/ReviewForm.js"
click node_notifications_ui "https://github.com/saudeepadhikari/room-finder/blob/master/client/src/context/NotificationContext.js"
click node_api_server "https://github.com/saudeepadhikari/room-finder/blob/master/backend/server.js"
click node_auth_api "https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/authController.js"
click node_room_api "https://github.com/saudeepadhikari/room-finder/blob/master/backend/routes/rooms.js"
click node_search_api "https://github.com/saudeepadhikari/room-finder/blob/master/backend/routes/search.js"
click node_booking_api "https://github.com/saudeepadhikari/room-finder/blob/master/backend/routes/bookings.js"
click node_payment_api "https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/esewaController.js"
click node_review_api "https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/reviewController.js"
click node_notification_api "https://github.com/saudeepadhikari/room-finder/blob/master/backend/routes/notifications.js"
click node_admin_api "https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/adminController.js"
click node_admin_stats "https://github.com/saudeepadhikari/room-finder/blob/master/backend/services/adminService.js"
click node_user_store "https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/User.js"
click node_room_store "https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Room.js"
click node_booking_store "https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Booking.js"
click node_transaction_store "https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Transaction.js"
click node_review_store "https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Review.js"
click node_notification_store "https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Notification.js"
click node_admin_app "https://github.com/saudeepadhikari/room-finder/blob/master/admin/src/App.jsx"
click node_admin_dashboard "https://github.com/saudeepadhikari/room-finder/blob/master/admin/src/admin/AdminDashboardPage.js"
click node_admin_analytics "https://github.com/saudeepadhikari/room-finder/blob/master/admin/src/admin/AdminAnalyticsPage.js"
click node_admin_reviews "https://github.com/saudeepadhikari/room-finder/blob/master/admin/src/admin/ReviewModeration.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_client_app,node_auth_ui,node_user_state,node_room_discovery,node_listing_ui,node_booking_ui,node_review_ui,node_notifications_ui toneBlue
class node_api_server,node_auth_api,node_room_api,node_search_api,node_booking_api,node_payment_api,node_review_api,node_notification_api,node_admin_api,node_admin_stats,node_user_store,node_room_store,node_booking_store,node_transaction_store,node_review_store,node_notification_store toneAmber
class node_admin_app,node_admin_dashboard,node_admin_analytics,node_admin_reviews toneMint
class node_esewa,node_cloudinary toneRose
class node_renter toneIndigo
```

## Components

### User platform

- [Client routing](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/App.js): `client/src/App.js`
- [Account access](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/pages/AuthPage.js): `client/src/pages/AuthPage.js`
- [User session](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/context/UserContext.js): `client/src/context/UserContext.js`
- [Room search](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/components/AdvancedSearchFilter.js): `client/src/components/AdvancedSearchFilter.js`
- [Room listings](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/components/forms/ModernPostRoomForm.js): `client/src/components/forms/ModernPostRoomForm.js`
- [Booking and payment](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/components/EsewaPayment.js): `client/src/components/EsewaPayment.js`
- [Room reviews](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/ReviewForm.js): `client/src/ReviewForm.js`
- [Notifications](https://github.com/saudeepadhikari/room-finder/blob/master/client/src/context/NotificationContext.js): `client/src/context/NotificationContext.js`

### API and domain

- [Express API](https://github.com/saudeepadhikari/room-finder/blob/master/backend/server.js): `backend/server.js`
- [Authentication](https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/authController.js): `backend/controllers/authController.js`
- [Room management](https://github.com/saudeepadhikari/room-finder/blob/master/backend/routes/rooms.js): `backend/routes/rooms.js`
- [Search service](https://github.com/saudeepadhikari/room-finder/blob/master/backend/routes/search.js): `backend/routes/search.js`
- [Bookings](https://github.com/saudeepadhikari/room-finder/blob/master/backend/routes/bookings.js): `backend/routes/bookings.js`
- [Payment processing](https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/esewaController.js): `backend/controllers/esewaController.js`
- [Review moderation](https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/reviewController.js): `backend/controllers/reviewController.js`
- [Notification routes](https://github.com/saudeepadhikari/room-finder/blob/master/backend/routes/notifications.js): `backend/routes/notifications.js`
- [Admin operations](https://github.com/saudeepadhikari/room-finder/blob/master/backend/controllers/adminController.js): `backend/controllers/adminController.js`
- [Admin analytics](https://github.com/saudeepadhikari/room-finder/blob/master/backend/services/adminService.js): `backend/services/adminService.js`
- [User records](https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/User.js): `backend/models/User.js`
- [Room records](https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Room.js): `backend/models/Room.js`
- [Booking records](https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Booking.js): `backend/models/Booking.js`
- [Transactions](https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Transaction.js): `backend/models/Transaction.js`
- [Review records](https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Review.js): `backend/models/Review.js`
- [Notifications](https://github.com/saudeepadhikari/room-finder/blob/master/backend/models/Notification.js): `backend/models/Notification.js`

### Admin platform

- [Admin routing](https://github.com/saudeepadhikari/room-finder/blob/master/admin/src/App.jsx): `admin/src/App.jsx`
- [Admin dashboard](https://github.com/saudeepadhikari/room-finder/blob/master/admin/src/admin/AdminDashboardPage.js): `admin/src/admin/AdminDashboardPage.js`
- [Analytics views](https://github.com/saudeepadhikari/room-finder/blob/master/admin/src/admin/AdminAnalyticsPage.js): `admin/src/admin/AdminAnalyticsPage.js`
- [Review management](https://github.com/saudeepadhikari/room-finder/blob/master/admin/src/admin/ReviewModeration.js): `admin/src/admin/ReviewModeration.js`

### External services

- **eSewa gateway**
- **Cloudinary**

### Other components

- **Renter / landlord**

## Connections

- Renter / landlord → Client routing: uses (evidence: `README.md`)
- Client routing → Account access: routes to (evidence: `client/src/App.js`)
- Account access → User session: authenticates through (evidence: `client/src/pages/AuthPage.js`)
- User session → Authentication: requests session (evidence: `client/src/context/UserContext.js`)
- Client routing → Room search: offers discovery (evidence: `README.md`)
- Room search → Search service: searches
- Client routing → Room listings: offers room posting (evidence: `README.md`)
- Room listings → Room management: manages listings
- Client routing → Booking and payment: supports transactions (evidence: `README.md`)
- Booking and payment → Payment processing: initiates payment
- Payment processing → eSewa gateway: verifies payment
- Client routing → Room reviews: offers reviews (evidence: `README.md`)
- Room reviews → Review moderation: submits reviews (evidence: `client/src/ReviewForm.js`)
- Client routing → Notifications: shows notifications (evidence: `client/src/App.js`)
- Notifications → Notification routes: loads notifications (evidence: `client/src/context/NotificationContext.js`)
- Express API → Room management: mounts routes (evidence: `backend/server.js`)
- Express API → Authentication: mounts routes (evidence: `backend/server.js`)
- Express API → Review moderation: mounts routes (evidence: `backend/server.js`)
- Express API → Payment processing: mounts routes (evidence: `backend/server.js`)
- Review moderation → Booking records: checks completed stays (evidence: `backend/controllers/reviewController.js`)
- Review moderation → Review records: creates and updates (evidence: `backend/controllers/reviewController.js`)
- Review moderation → Notifications: creates alerts (evidence: `backend/controllers/reviewController.js`)
- Review moderation → User records: looks up users (evidence: `backend/controllers/reviewController.js`)
- Payment processing → Booking records: updates bookings (evidence: `backend/controllers/esewaController.js`)
- Payment processing → Transactions: records payments (evidence: `backend/controllers/esewaController.js`)
- Payment processing → Notifications: creates alerts (evidence: `backend/controllers/esewaController.js`)
- Authentication → User records: reads and updates (evidence: `backend/controllers/authController.js`)
- Admin routing → Admin dashboard: routes to (evidence: `admin/src/App.jsx`)
- Admin routing → Analytics views: routes to (evidence: `admin/src/App.jsx`)
- Admin routing → Review management: routes to (evidence: `admin/src/App.jsx`)
- Admin dashboard → Admin operations: loads dashboard data (evidence: `admin/src/admin/AdminDashboardPage.js`)
- Analytics views → Admin operations: requests analytics (evidence: `admin/src/admin/AdminAnalyticsPage.js`)
- Review management → Review moderation: moderates reviews (evidence: `admin/src/admin/ReviewModeration.js`)
- Admin operations → Admin analytics: builds statistics (evidence: `backend/controllers/adminController.js`)
- Admin analytics → User records: aggregates users (evidence: `backend/services/adminService.js`)
- Admin analytics → Room records: aggregates rooms (evidence: `backend/services/adminService.js`)
- Admin analytics → Booking records: aggregates bookings (evidence: `backend/services/adminService.js`)
- Admin analytics → Transactions: reads transactions (evidence: `backend/services/adminService.js`)
- Authentication → Cloudinary: stores profile images
- Room management → Cloudinary: stores listing images
