Build a complete full-stack app called VaultDXB.

VaultDXB is a private Dubai off-market and distressed property deal marketplace.

Main idea:
Brokers submit urgent/off-market property deals.
Admin approves/rejects deals.
Investors log in and view approved deals.
VIP investors can see full deal details.
Free investors see locked/blurred details.
Investors can request access.
Admin can view requests.
Admin can manually activate VIP/Elite memberships.
Also add Stripe checkout payment buttons for VIP and Elite.

Tech stack:
- React frontend
- Node.js Express backend
- PostgreSQL database
- JWT authentication
- bcrypt password hashing
- Stripe checkout integration
- Responsive mobile-first design
- Dark luxury UI: black, navy, gold, white
- Clean dashboard layout

Brand:
Name: VaultDXB
Tagline: Private access to Dubai’s hidden property deals

User roles:
1. Admin
2. Broker
3. Investor

Membership types:
1. Free
2. VIP - AED 999/month
3. Elite - AED 2999/month

Database tables:

users:
- id
- name
- email
- password_hash
- phone
- role: admin, broker, investor
- membership: free, vip, elite
- stripe_customer_id
- created_at

deals:
- id
- title
- area
- building
- unit_type
- bedrooms
- bathrooms
- size_sqft
- asking_price
- estimated_market_price
- discount_percentage
- urgency_score
- urgency_reason
- seller_timeline
- property_status
- payment_plan_details
- broker_contact
- image_url
- submitted_by_user_id
- status: pending, approved, rejected
- is_vip_only
- created_at

access_requests:
- id
- deal_id
- investor_user_id
- message
- status: new, contacted, closed, rejected
- created_at

payments:
- id
- user_id
- stripe_session_id
- plan
- amount
- status
- created_at

Authentication:
- Register page
- Login page
- JWT protected routes
- Role-based dashboard redirect
- Seed admin account:
  email: admin@vaultdxb.com
  password: Admin12345

Pages:

1. Landing Page
- Hero headline: Private access to Dubai’s hidden property deals
- Subheadline: Off-market, urgent, and below-market Dubai real estate opportunities for serious investors
- Buttons:
  Investor Access
  Submit Deal
- Sections:
  How it works
  For Investors
  For Brokers
  Pricing
  Why VaultDXB

2. Register Page
Fields:
- name
- email
- password
- phone
- role: broker or investor

3. Login Page

4. Broker Dashboard
- Show broker’s submitted deals
- Show status: pending, approved, rejected
- Button: Submit New Deal

5. Submit Deal Page
Fields:
- title
- area
- building
- unit type
- bedrooms
- bathrooms
- size sqft
- asking price
- estimated market price
- urgency reason
- seller timeline
- property status
- payment plan details
- broker contact
- image URL
- is VIP only

Logic:
- discount percentage auto-calculates:
  ((estimated_market_price - asking_price) / estimated_market_price) * 100
- urgency score auto-calculates based on discount, timeline, and urgency reason
- submitted deal status = pending

6. Investor Dashboard
- Show approved deals only
- Filters:
  area
  minimum discount
  urgency score
  max price
  unit type
- Deal cards show:
  image
  area
  building
  unit type
  asking price
  estimated market price
  discount percentage
  urgency score
  urgency reason
  seller timeline
- If user is Free and deal is VIP only:
  lock sensitive info
  show “VIP Access Required”
  button: Upgrade Membership

7. Deal Details Page
- Show full details for VIP/Elite
- Free users see locked version for VIP-only deals
- Button: Request Access
- Request Access modal with optional message

8. Pricing Page
Plans:
Free:
- limited deal access
- locked VIP deals

VIP AED 999/month:
- full deal access
- instant access to VIP deals
- request broker access

Elite AED 2999/month:
- priority access
- private deal alerts
- highest urgency deals first

Add Stripe checkout buttons:
- Subscribe to VIP
- Subscribe to Elite

9. Admin Dashboard
Stats:
- total deals
- pending deals
- approved deals
- total investors
- total brokers
- total access requests
- VIP users
- Elite users

10. Admin Deal Approval Page
Admin can:
- view pending deals
- approve deal
- reject deal
- edit deal
- delete deal

11. Admin Access Requests Page
Admin can:
- view investor requests
- see investor contact
- see requested deal
- update status: new, contacted, closed, rejected

12. Admin Users Page
Admin can:
- view users
- manually change membership:
  free, vip, elite
- manually change role if needed

Stripe:
- Create checkout sessions for VIP and Elite
- Store payment session in payments table
- After successful payment, update user membership
- Include webhook endpoint placeholder
- Also allow admin manual membership activation

Design:
- Premium investment terminal feel
- Not like Property Finder
- Use dark background
- Gold buttons
- Clean cards
- Luxury fintech feel
- Deal cards should feel like investment opportunities
- Use labels:
  Distress Score
  Discount to Market
  Seller Timeline
  Private Deal
  Investor Access
  VIP Only

Seed data:
Admin:
email: admin@vaultdxb.com
password: Admin12345

Sample broker:
email: broker@vaultdxb.com
password: Broker12345

Sample investor:
email: investor@vaultdxb.com
password: Investor12345

Sample approved deals:
1.
Title: Dubai Hills 2BR Urgent Exit
Area: Dubai Hills
Building: Collective Tower
Unit Type: Apartment
Bedrooms: 2
Bathrooms: 2
Size: 1100 sqft
Market Price: AED 2,400,000
Asking Price: AED 2,050,000
Urgency Reason: Seller relocating
Timeline: 14 days
Urgency Score: 88
VIP Only: true

2.
Title: Dubai Marina 1BR Investor Exit
Area: Dubai Marina
Building: Marina Gate
Unit Type: Apartment
Bedrooms: 1
Bathrooms: 1
Size: 780 sqft
Market Price: AED 1,850,000
Asking Price: AED 1,620,000
Urgency Reason: Investor exit
Timeline: 21 days
Urgency Score: 82
VIP Only: false

3.
Title: JVC Studio Payment Pressure Deal
Area: JVC
Building: Binghatti Heights
Unit Type: Studio
Bedrooms: 0
Bathrooms: 1
Size: 420 sqft
Market Price: AED 720,000
Asking Price: AED 615,000
Urgency Reason: Payment pressure
Timeline: 10 days
Urgency Score: 91
VIP Only: true

Important:
Build the full working app.
Include frontend, backend, database schema, authentication, role permissions, Stripe checkout, admin controls, dashboards, and seed data.
Make it deployable on Replit.
Include clear setup instructions in README.