# 🚗 RentalDriveGo— Multi-Tenant Car Rental SaaS + Storefront

## Platform Model

**Rental Companies (B2B)** — pay RentalDriveGoa subscription (AmanPay or PayPal), get:
- A fully private dashboard (zero data overlap with any other company)
- Fleet management with vehicle photo upload (photos auto-appear on global storefront)
- Promotional offers management
- A white-label site at `company.RentalDriveGo.com` where renters book and pay

**Renters (B2C)** — free account, can:
- Browse ALL companies' vehicles and offers on `RentalDriveGo.com/explore`
- Click a vehicle → **redirected to the company's site** to book and pay
- Receive full notifications (Email + SMS + WhatsApp + Push + In-App)
- Track all bookings across companies in one account

---

## ⚠️ Payment Providers — Stripe Has Been Removed

| Provider | Purpose |
|----------|---------|
| **AmanPay** (amanpay.net) | Primary. National/international cards, cash (3000+ points), e-wallet. Moroccan PCI-DSS Level-1 PSP. |
| **PayPal** | Secondary. Global coverage. |

**Two payment contexts:**
1. Company pays RentalDriveGosubscription → RentalDriveGo's own AmanPay/PayPal account
2. Renter pays company for rental → Company's own AmanPay merchant + PayPal account (direct, no intermediary)

---

## 🌐 Storefront is Discovery Only — No Booking on RentalDriveGo.com/explore

The global storefront shows all vehicles with photos from all companies. When a renter clicks "Book this vehicle", they are **redirected to the company's branded site** (`{slug}.RentalDriveGo.com/book?vehicleId=X&from=Y&to=Z&ref=storefront`). The booking form is pre-filled. All payment happens on the company site using the company's own payment accounts.

---

## 📸 Vehicle Photos → Storefront Visibility

```
Company uploads photos in /dashboard/fleet
  → Stored in Cloudinary
  → Vehicle.photos[] holds the URLs
  → First photo = cover image on storefront cards
  → All photos shown in storefront vehicle gallery
  → isPublished=true makes vehicle appear on storefront
```

---

## 🏗 Five-Layer Architecture

```
Layer 1A: RentalDriveGo.com              — B2B marketing site
Layer 1B: RentalDriveGo.com/explore      — B2C storefront (discovery + redirect only)
Layer 2:  app.RentalDriveGo.com          — Company dashboard (private, subscription-gated)
Layer 3:  {slug}.RentalDriveGo.com       — Company branded site (booking + payment here)
Layer 4:  api.RentalDriveGo.com          — REST API
```

---

## 📁 Project Structure

```
rental-car-site/
├── README.md
├── docs/
│   ├── ARCHITECTURE.md       ← Payment providers, storefront redirect model, photo flow
│   ├── DESIGN_SYSTEM.md
│   ├── PAGES.md              ← All pages. Storefront = discovery only. Booking = company site.
│   ├── FEATURES.md
│   └── DEPLOYMENT.md
└── skills/
    ├── rental-car-website/
    ├── rental-car-components/
    ├── rental-car-backend/
    │   └── references/
    │       ├── schema.md               ← AmanPay/PayPal fields, no Stripe
    │       ├── api-routes.md           ← All routes
    │       ├── payment-service.md      ← AmanPay + PayPal implementation ← KEY FILE
    │       ├── subscription-service.md ← Manual renewal, plan prices in MAD/USD/EUR
    │       ├── subdomain-service.md    ← Storefront redirect + company site
    │       └── notification-service.md ← All 5 channels
    └── rental-car-i18n/
```

---

## 🛠 Tech Stack

| Concern | Technology |
|---------|-----------|
| Subscription payment | AmanPay (primary) + PayPal (secondary) |
| Rental payment | Company's own AmanPay merchant + PayPal |
| PDF generation | `@react-pdf/renderer` — server-side, on-demand, never stored |
| Damage diagrams | SVG top-down car map (22 zones, React interactive + PDF static render) |
| Insurance | Per-company configurable policies with per-day/flat/% charge types |
| Pricing rules | Age/experience-based surcharges & discounts (configurable per company) |
| Email | Resend |
| SMS + WhatsApp | Twilio |
| Push | Firebase FCM |
| Real-time in-app | Socket.io + Redis |
| Images | Cloudinary |
| Company auth | Clerk |
| Renter auth | JWT (custom) |
| API | Node.js + Express + Prisma + PostgreSQL |
| Frontend | Next.js 14 + React 18 + Vite |
| Deployment | Vercel + Railway |
