# oisintheginger/mscfinalproject architecture

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

## Overview

Renting Made Easy is a rental-property browsing and account-management application. Users browse and filter listings, inspect property details, and can save searches, favourites, applications, and profile preferences; the frontend routes and pages are the visible workflow, while backend controllers and services provide property and user operations. The repository also contains Python similarity, distance, and property-scoring experiments, suggesting personalized recommendations and scores. Source evidence is partial, so links to unsampled API hooks, algorithm execution, and deployment integrations are omitted or marked unverified.

Main entry points: [`Backend/src/main/java/msc/rme/service/UserService.java`](https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/service/UserService.java) (User operations), [`frontend/src/Pages/Homepage.js`](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Homepage.js) (Home recommendations), [`Backend/src/main/java/msc/rme/controller/UserController.java`](https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/controller/UserController.java) (User endpoints), [`frontend/src/App.js`](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/App.js) (App providers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_web["Web experience"]
  node_app["App providers<br/>[App.js]"]
  node_router["Page router<br/>[HMERouter.js]"]
  node_nav["Navigation layout<br/>[NavLayout.js]"]
end

subgraph group_discovery["Property discovery"]
  node_browse["Browse listings<br/>[Browse.js]"]
  node_search["Search and filters<br/>[SearchAndFilter.js]"]
  node_propertypage["Property details<br/>[PropertyPage.js]"]
  node_recommendations_ui["Home recommendations<br/>[Homepage.js]"]
  node_score_ui["Property scores"]
end

subgraph group_accounts["User accounts"]
  node_applications_ui["Applications page<br/>[Applications.js]"]
  node_profile_ui["Profile page<br/>[Profile.js]"]
  node_saved_search_ui["Saved searches"]
  node_user_context["User context<br/>[UserContext.js]"]
end

subgraph group_backend["Backend services"]
  node_properties_api["Property endpoints"]
  node_property_service["Property queries"]
  node_user_api["User endpoints"]
  node_user_service["User operations<br/>[UserService.java]"]
  node_user_model["User data model<br/>[User.java]"]
  node_sql_store[("Relational database")]
  node_cognito[("Amazon Cognito")]
  node_cognito_service["Cognito account ops"]
end

subgraph group_recommendation["Recommendation experiments"]
  node_similarity["Click similarity"]
  node_hybrid_similarity["Hybrid similarity"]
  node_distance["Distance scoring"]
  node_property_scores["Property scoring<br/>[handler.py]"]
end

node_renter(("Renter"))

node_renter -->|"opens app"| node_app
node_app -->|"renders routes"| node_router
node_router -->|"wraps pages"| node_nav
node_renter -.->|"browses homes"| node_browse
node_browse -->|"offers filters"| node_search
node_renter -.->|"views listing"| node_propertypage
node_renter -.->|"views suggestions"| node_recommendations_ui
node_renter -.->|"views scores"| node_score_ui
node_renter -.->|"manages applications"| node_applications_ui
node_renter -.->|"manages profile"| node_profile_ui
node_renter -.->|"manages searches"| node_saved_search_ui
node_search -->|"requests saved search"| node_properties_api
node_properties_api -->|"queries listings"| node_property_service
node_user_api -->|"delegates operations"| node_user_service
node_user_service -->|"reads and writes"| node_sql_store
node_property_service -->|"queries properties"| node_sql_store
node_user_service -->|"uses account service"| node_cognito_service
node_cognito_service -->|"updates accounts"| node_cognito
node_user_api -->|"returns user data"| node_user_model
node_similarity -.->|"may inform suggestions"| node_recommendations_ui
node_hybrid_similarity -.->|"may inform suggestions"| node_recommendations_ui
node_distance -.->|"may contribute distance"| node_property_scores
node_property_scores -.->|"may supply scores"| node_score_ui

click node_app "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/App.js"
click node_router "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Routers/HMERouter.js"
click node_nav "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/layouts/NavLayout.js"
click node_browse "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Browse.js"
click node_search "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/components/SearchAndFilters/SearchAndFilter.js"
click node_propertypage "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/PropertyPage.js"
click node_recommendations_ui "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Homepage.js"
click node_score_ui "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/components/PropertyScoresComponent/PropertyScoresComponent.js"
click node_applications_ui "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Applications.js"
click node_profile_ui "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Profile.js"
click node_saved_search_ui "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/components/SaveSearch/RenderSaveSearch.js"
click node_user_context "https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Utils/UserContext/UserContext.js"
click node_properties_api "https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/controller/PropertiesController.java"
click node_property_service "https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/service/PropertyService.java"
click node_user_api "https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/controller/UserController.java"
click node_user_service "https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/service/UserService.java"
click node_user_model "https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/binding/User.java"
click node_cognito_service "https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/service/CognitoService.java"
click node_similarity "https://github.com/oisintheginger/mscfinalproject/blob/main/Data/python%2Bjupyter/sean_lambda/CosineSimilarityClickData/cosineSimilarityClickData.py"
click node_hybrid_similarity "https://github.com/oisintheginger/mscfinalproject/blob/main/Data/python%2Bjupyter/sean_lambda/CosineSimilarityHybrid/cosineSimilarityHybrid.py"
click node_distance "https://github.com/oisintheginger/mscfinalproject/blob/main/Data/python%2Bjupyter/sean_lambda/HaversineFormulaIterations/handler8_final_iteration.py"
click node_property_scores "https://github.com/oisintheginger/mscfinalproject/blob/main/Data/python%2Bjupyter/sean_lambda/PropertyScores/handler.py"

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_router,node_nav toneBlue
class node_browse,node_search,node_propertypage,node_recommendations_ui,node_score_ui toneAmber
class node_applications_ui,node_profile_ui,node_saved_search_ui,node_user_context toneMint
class node_properties_api,node_property_service,node_user_api,node_user_service,node_user_model,node_sql_store,node_cognito,node_cognito_service toneRose
class node_similarity,node_hybrid_similarity,node_distance,node_property_scores,node_renter toneIndigo
```

## Components

### Web experience

- [App providers](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/App.js): `frontend/src/App.js`
- [Page router](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Routers/HMERouter.js): `frontend/src/Routers/HMERouter.js`
- [Navigation layout](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/layouts/NavLayout.js): `frontend/src/layouts/NavLayout.js`

### Property discovery

- [Browse listings](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Browse.js): `frontend/src/Pages/Browse.js`
- [Search and filters](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/components/SearchAndFilters/SearchAndFilter.js): `frontend/src/components/SearchAndFilters/SearchAndFilter.js`
- [Property details](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/PropertyPage.js): `frontend/src/Pages/PropertyPage.js`
- [Home recommendations](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Homepage.js): `frontend/src/Pages/Homepage.js`
- [Property scores](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/components/PropertyScoresComponent/PropertyScoresComponent.js): `frontend/src/components/PropertyScoresComponent/PropertyScoresComponent.js`

### User accounts

- [Applications page](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Applications.js): `frontend/src/Pages/Applications.js`
- [Profile page](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Pages/Profile.js): `frontend/src/Pages/Profile.js`
- [Saved searches](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/components/SaveSearch/RenderSaveSearch.js): `frontend/src/components/SaveSearch/RenderSaveSearch.js`
- [User context](https://github.com/oisintheginger/mscfinalproject/blob/main/frontend/src/Utils/UserContext/UserContext.js): `frontend/src/Utils/UserContext/UserContext.js`

### Backend services

- [Property endpoints](https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/controller/PropertiesController.java): `Backend/src/main/java/msc/rme/controller/PropertiesController.java`
- [Property queries](https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/service/PropertyService.java): `Backend/src/main/java/msc/rme/service/PropertyService.java`
- [User endpoints](https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/controller/UserController.java): `Backend/src/main/java/msc/rme/controller/UserController.java`
- [User operations](https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/service/UserService.java): `Backend/src/main/java/msc/rme/service/UserService.java`
- [User data model](https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/binding/User.java): `Backend/src/main/java/msc/rme/binding/User.java`
- **Relational database**
- **Amazon Cognito**
- [Cognito account ops](https://github.com/oisintheginger/mscfinalproject/blob/main/Backend/src/main/java/msc/rme/service/CognitoService.java): `Backend/src/main/java/msc/rme/service/CognitoService.java`

### Recommendation experiments

- [Click similarity](https://github.com/oisintheginger/mscfinalproject/blob/main/Data/python%2Bjupyter/sean_lambda/CosineSimilarityClickData/cosineSimilarityClickData.py): `Data/python+jupyter/sean_lambda/CosineSimilarityClickData/cosineSimilarityClickData.py`
- [Hybrid similarity](https://github.com/oisintheginger/mscfinalproject/blob/main/Data/python%2Bjupyter/sean_lambda/CosineSimilarityHybrid/cosineSimilarityHybrid.py): `Data/python+jupyter/sean_lambda/CosineSimilarityHybrid/cosineSimilarityHybrid.py`
- [Distance scoring](https://github.com/oisintheginger/mscfinalproject/blob/main/Data/python%2Bjupyter/sean_lambda/HaversineFormulaIterations/handler8_final_iteration.py): `Data/python+jupyter/sean_lambda/HaversineFormulaIterations/handler8_final_iteration.py`
- [Property scoring](https://github.com/oisintheginger/mscfinalproject/blob/main/Data/python%2Bjupyter/sean_lambda/PropertyScores/handler.py): `Data/python+jupyter/sean_lambda/PropertyScores/handler.py`

### Other components

- **Renter**

## Connections

- Renter → App providers: opens app (evidence: `frontend/src/App.js`)
- App providers → Page router: renders routes (evidence: `frontend/src/App.js`)
- Page router → Navigation layout: wraps pages (evidence: `frontend/src/Routers/HMERouter.js`)
- Renter → Browse listings: browses homes
- Browse listings → Search and filters: offers filters (evidence: `frontend/src/Pages/Browse.js`)
- Renter → Property details: views listing
- Renter → Home recommendations: views suggestions (evidence: `frontend/src/Pages/Homepage.js`)
- Renter → Property scores: views scores
- Renter → Applications page: manages applications
- Renter → Profile page: manages profile
- Renter → Saved searches: manages searches
- Search and filters → Property endpoints: requests saved search (evidence: `frontend/src/components/SearchAndFilters/SearchAndFilter.js`)
- Property endpoints → Property queries: queries listings (evidence: `Backend/src/main/java/msc/rme/controller/PropertiesController.java`)
- User endpoints → User operations: delegates operations (evidence: `Backend/src/main/java/msc/rme/controller/UserController.java`)
- User operations → Relational database: reads and writes (evidence: `Backend/src/main/java/msc/rme/service/UserService.java`)
- Property queries → Relational database: queries properties (evidence: `Backend/src/main/java/msc/rme/service/PropertyService.java`)
- User operations → Cognito account ops: uses account service (evidence: `Backend/src/main/java/msc/rme/service/UserService.java`)
- Cognito account ops → Amazon Cognito: updates accounts (evidence: `Backend/src/main/java/msc/rme/service/CognitoService.java`)
- User endpoints → User data model: returns user data (evidence: `Backend/src/main/java/msc/rme/controller/UserController.java`)
- Click similarity → Home recommendations: may inform suggestions
- Hybrid similarity → Home recommendations: may inform suggestions
- Distance scoring → Property scoring: may contribute distance
- Property scoring → Property scores: may supply scores
