Files
carmanagement/docs/README.md
T
root 8fc88ffc14
Build & Push / Pipeline Tests (push) Failing after 59s
Build & Push / Build & Push Docker Image (push) Has been skipped
Test / Type Check (all packages) (push) Failing after 51s
Test / API Unit Tests (push) Has been skipped
Test / Homepage Unit Tests (push) Has been skipped
Test / Carplace Unit Tests (push) Has been skipped
Test / Admin Unit Tests (push) Has been skipped
Test / Dashboard Unit Tests (push) Has been skipped
Test / API Integration Tests (push) Has been skipped
fix production issues
2026-08-12 16:48:41 -04:00

104 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚗 RentalDriveGo— Multi-Tenant Car Rental SaaS + Carplace
## 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 carplace)
- 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)
---
## 🌐 Carplace is Discovery Only — No Booking on RentalDriveGo.com/explore
The global carplace 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=carplace`). The booking form is pre-filled. All payment happens on the company site using the company's own payment accounts.
---
## 📸 Vehicle Photos → Carplace Visibility
```
Company uploads photos in /dashboard/fleet
→ Stored in Cloudinary
→ Vehicle.photos[] holds the URLs
→ First photo = cover image on carplace cards
→ All photos shown in carplace vehicle gallery
→ isPublished=true makes vehicle appear on carplace
```
---
## 🏗 Five-Layer Architecture
```
Layer 1A: RentalDriveGo.com — B2B marketing site
Layer 1B: RentalDriveGo.com/explore — B2C carplace (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/
│ ├── design/ ← Production-readiness design updates (Phases 04)
│ ├── project-design/ ← Feature / API / schema design
│ ├── ops/ ← Runbooks, readiness plan, drills
│ ├── ARCHITECTURE.md ← Payment providers, carplace redirect model, photo flow
│ ├── DESIGN_SYSTEM.md
│ ├── PAGES.md ← All pages. Carplace = discovery only. Booking = company site.
│ ├── FEATURES.md
│ └── DEPLOYMENT.md
└── apps / packages / scripts ← See monorepo root README
```
See **`docs/design/README.md`** for what changed during the production-readiness program.
---
## 🛠 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 |