root 0394f0ea2a
Build & Deploy / Build & Push Docker Image (push) Successful in 2m53s
Test / Type Check (all packages) (push) Successful in 54s
Build & Deploy / Deploy to VPS (push) Successful in 4s
Test / API Unit Tests (push) Successful in 46s
Test / Homepage Unit Tests (push) Successful in 43s
Test / Storefront Unit Tests (push) Successful in 40s
Test / Admin Unit Tests (push) Successful in 41s
Test / Dashboard Unit Tests (push) Successful in 42s
Test / API Integration Tests (push) Successful in 58s
Update production registry pull over VPN
Configure production defaults to pull images directly from the VPN registry at 10.0.0.4, with the VPS reachable at 10.0.0.1, and disable archive handoff by default.
2026-07-02 11:36:35 -04:00
2026-07-01 01:43:36 -04:00
2026-05-21 12:35:49 -04:00
2026-06-20 17:13:07 -04:00
2026-06-29 08:54:41 -04:00
2026-06-29 23:15:55 -04:00
2026-05-25 00:58:10 -04:00
2026-05-10 19:19:56 -04:00
2026-07-01 01:37:37 -04:00
2026-07-01 01:37:37 -04:00
2026-06-27 22:55:24 -04:00
2026-06-24 02:00:31 -04:00
2026-05-27 02:13:49 -04:00
2026-05-21 12:35:49 -04:00
2026-07-01 01:37:37 -04:00
2026-05-21 12:35:49 -04:00
2026-06-02 23:35:25 -04:00
2026-04-30 14:59:57 -04:00
2026-06-28 00:05:39 -04:00

🚗 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
S
Description
Car Management System
Readme 196 MiB
Languages
TypeScript 93.6%
CSS 3%
Shell 2.3%
JavaScript 1%