51ef1fb3192d857e2e6b0a7d0438433b6db4eb3b
Build & Push / Pipeline Tests (push) Successful in 1m54s
Test / Type Check (all packages) (push) Successful in 52s
Build & Push / Build & Push Docker Image (push) Successful in 3m34s
Test / API Unit Tests (push) Successful in 1m13s
Test / Homepage Unit Tests (push) Successful in 48s
Test / Carplace Unit Tests (push) Successful in 42s
Test / Admin Unit Tests (push) Successful in 43s
Test / Dashboard Unit Tests (push) Successful in 43s
Test / API Integration Tests (push) Successful in 1m10s
🚗 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.comwhere 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:
- Company pays RentalDriveGosubscription → RentalDriveGo's own AmanPay/PayPal account
- 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 0–4)
│ ├── 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) |
| 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 |
Description
Languages
TypeScript
93.7%
CSS
2.7%
Shell
2.4%
JavaScript
1.2%