# didar-code/nodejs-express-mongodb-real-estate-platform architecture

> Architecture diagram of the GitHub repository didar-code/nodejs-express-mongodb-real-estate-platform, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-14). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/didar-code/nodejs-express-mongodb-real-estate-platform
- Repository: https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform

## Overview

Property Hub is a real-estate listing and sales platform: visitors browse and search properties, while authenticated agents manage an enquiry cart and record sales; administrators manage inventory and oversee sales and users. The root `app.js` is the fuller platform, with JSON-backed records, sessions, notifications, audit data, and WebSocket updates. `property-app/app.js` is a separate, smaller application variant with its own listing and checkout workflow. The README documents image uploads and MongoDB support; the sampled excerpts do not establish a MongoDB runtime call path, so that integration is not drawn.

Main entry points: [`app.js`](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js) (Main Express app), [`property-app/app.js`](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/app.js) (Variant Express app), [`data/properties.json`](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/properties.json) (Property records), [`data/users.json`](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/users.json) (User records)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_actors["Users"]
  node_visitor(("Visitor / agent / admin"))
end

subgraph group_platform["Main platform"]
  node_mainapp["Main Express app<br/>[app.js]"]
  node_auth["Accounts and sessions<br/>[app.js]"]
  node_catalog["Property browsing<br/>[app.js]"]
  node_inventory["Inventory management<br/>[app.js]"]
  node_checkout["Cart and sales<br/>[app.js]"]
  node_admin["Admin oversight<br/>[app.js]"]
  node_notify["Notifications and audit<br/>[app.js]"]
  node_realtime["WebSocket updates<br/>[app.js]"]
end

subgraph group_records["JSON records"]
  node_properties[("Property records<br/>[properties.json]")]
  node_users[("User records<br/>[users.json]")]
  node_sales[("Sales records<br/>[sales.json]")]
  node_notifications[("Notification records<br/>[notifications.json]")]
  node_audit[("Audit records<br/>[audit_log.json]")]
  node_dbconfig[("Database settings<br/>[db_config.json]")]
end

subgraph group_ui["Page views"]
  node_homeview["Public pages<br/>[home.ejs]"]
  node_dashview["Agent dashboard<br/>[dashboard.ejs]"]
  node_adminview["Admin pages"]
  node_salesview["Sales ledger<br/>[sales-log.ejs]"]
end

subgraph group_variant["Standalone variant"]
  node_variantapp["Variant Express app<br/>[app.js]"]
  node_variantdata[("Variant property records<br/>[properties.json]")]
  node_variantsales[("Variant sales records<br/>[sales.json]")]
  node_variantviews["Variant views<br/>[home.ejs]"]
end

node_visitor -->|"uses"| node_mainapp
node_mainapp -->|"routes through"| node_auth
node_auth -->|"reads and writes"| node_users
node_mainapp -->|"routes to"| node_catalog
node_catalog -->|"reads"| node_properties
node_catalog -->|"renders"| node_homeview
node_mainapp -->|"routes to"| node_inventory
node_inventory -->|"reads and writes"| node_properties
node_inventory -->|"renders"| node_adminview
node_mainapp -->|"routes to"| node_checkout
node_checkout -->|"reads"| node_properties
node_checkout -->|"writes"| node_sales
node_checkout -->|"renders"| node_dashview
node_mainapp -->|"routes to"| node_admin
node_admin -->|"reads"| node_sales
node_admin -->|"reads and writes"| node_users
node_admin -->|"renders"| node_salesview
node_mainapp -->|"routes to"| node_notify
node_notify -->|"reads and writes"| node_notifications
node_notify -->|"writes"| node_audit
node_mainapp -->|"broadcasts updates"| node_realtime
node_admin -->|"reads and writes"| node_dbconfig
node_visitor -->|"uses"| node_variantapp
node_variantapp -->|"reads and writes"| node_variantdata
node_variantapp -->|"writes"| node_variantsales
node_variantapp -->|"renders"| node_variantviews

click node_mainapp "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js"
click node_auth "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js"
click node_catalog "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js"
click node_inventory "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js"
click node_checkout "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js"
click node_admin "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js"
click node_notify "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js"
click node_realtime "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js"
click node_properties "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/properties.json"
click node_users "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/users.json"
click node_sales "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/sales.json"
click node_notifications "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/notifications.json"
click node_audit "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/audit_log.json"
click node_dbconfig "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/db_config.json"
click node_homeview "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/views/home.ejs"
click node_dashview "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/views/dashboard.ejs"
click node_adminview "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/views/admin-inventory.ejs"
click node_salesview "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/views/sales-log.ejs"
click node_variantapp "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/app.js"
click node_variantdata "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/data/properties.json"
click node_variantsales "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/data/sales.json"
click node_variantviews "https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/views/home.ejs"

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_visitor toneBlue
class node_mainapp,node_auth,node_catalog,node_inventory,node_checkout,node_admin,node_notify,node_realtime toneAmber
class node_properties,node_users,node_sales,node_notifications,node_audit,node_dbconfig toneMint
class node_homeview,node_dashview,node_adminview,node_salesview toneRose
class node_variantapp,node_variantdata,node_variantsales,node_variantviews toneIndigo
```

## Components

### Users

- **Visitor / agent / admin**

### Main platform

- [Main Express app](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js): `app.js`
- [Accounts and sessions](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js): `app.js`
- [Property browsing](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js): `app.js`
- [Inventory management](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js): `app.js`
- [Cart and sales](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js): `app.js`
- [Admin oversight](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js): `app.js`
- [Notifications and audit](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js): `app.js`
- [WebSocket updates](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/app.js): `app.js`

### JSON records

- [Property records](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/properties.json): `data/properties.json`
- [User records](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/users.json): `data/users.json`
- [Sales records](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/sales.json): `data/sales.json`
- [Notification records](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/notifications.json): `data/notifications.json`
- [Audit records](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/audit_log.json): `data/audit_log.json`
- [Database settings](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/data/db_config.json): `data/db_config.json`

### Page views

- [Public pages](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/views/home.ejs): `views/home.ejs`
- [Agent dashboard](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/views/dashboard.ejs): `views/dashboard.ejs`
- [Admin pages](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/views/admin-inventory.ejs): `views/admin-inventory.ejs`
- [Sales ledger](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/views/sales-log.ejs): `views/sales-log.ejs`

### Standalone variant

- [Variant Express app](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/app.js): `property-app/app.js`
- [Variant property records](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/data/properties.json): `property-app/data/properties.json`
- [Variant sales records](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/data/sales.json): `property-app/data/sales.json`
- [Variant views](https://github.com/didar-code/nodejs-express-mongodb-real-estate-platform/blob/main/property-app/views/home.ejs): `property-app/views/home.ejs`

## Connections

- Visitor / agent / admin → Main Express app: uses (evidence: `README.md`)
- Main Express app → Accounts and sessions: routes through (evidence: `app.js`)
- Accounts and sessions → User records: reads and writes (evidence: `app.js`)
- Main Express app → Property browsing: routes to (evidence: `app.js`)
- Property browsing → Property records: reads (evidence: `app.js`)
- Property browsing → Public pages: renders (evidence: `app.js`)
- Main Express app → Inventory management: routes to (evidence: `app.js`)
- Inventory management → Property records: reads and writes (evidence: `app.js`)
- Inventory management → Admin pages: renders (evidence: `app.js`)
- Main Express app → Cart and sales: routes to (evidence: `app.js`)
- Cart and sales → Property records: reads (evidence: `app.js`)
- Cart and sales → Sales records: writes (evidence: `app.js`)
- Cart and sales → Agent dashboard: renders (evidence: `app.js`)
- Main Express app → Admin oversight: routes to (evidence: `app.js`)
- Admin oversight → Sales records: reads (evidence: `app.js`)
- Admin oversight → User records: reads and writes (evidence: `app.js`)
- Admin oversight → Sales ledger: renders (evidence: `app.js`)
- Main Express app → Notifications and audit: routes to (evidence: `app.js`)
- Notifications and audit → Notification records: reads and writes (evidence: `app.js`)
- Notifications and audit → Audit records: writes (evidence: `app.js`)
- Main Express app → WebSocket updates: broadcasts updates (evidence: `app.js`)
- Admin oversight → Database settings: reads and writes (evidence: `app.js`)
- Visitor / agent / admin → Variant Express app: uses (evidence: `property-app/app.js`)
- Variant Express app → Variant property records: reads and writes (evidence: `property-app/app.js`)
- Variant Express app → Variant sales records: writes (evidence: `property-app/app.js`)
- Variant Express app → Variant views: renders (evidence: `property-app/app.js`)
