Files
carmanagement/docs/project-design/PAGES.md
T
2026-05-06 22:58:23 -04:00

317 lines
13 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.
# Pages Specification — RentalDriveGo
---
## LAYER 1A — Marketing Site (RentalDriveGo.com)
### `/` — Home
Sections:
1. Hero — "Run your rental car business like a pro" + CTA
2. Two-column value: "For rental companies" / "For renters"
3. Social proof bar
4. Pain points (for companies)
5. Features grid — fleet, photos, offers, site, CRM, analytics
6. **Marketplace callout** — "Your vehicle photos appear on the RentalDriveGo global marketplace automatically"
7. How it works — 3 steps
8. Pricing teaser (AmanPay / PayPal accepted badges shown)
9. Testimonials
10. Final CTA
### `/pricing` — Pricing
- Three plan cards (Starter / Growth / Pro) with monthly/annual toggle
- **Payment method icons:** AmanPay logo + PayPal logo
- "Pay securely with AmanPay (cards, cash, e-wallet) or PayPal"
- Supported currencies: MAD, USD, EUR
- FAQ section
### `/features`, `/about`, `/contact`, `/blog` — standard
---
## LAYER 1B — Global Marketplace (RentalDriveGo.com/explore)
> **Design principle:** This is a DISCOVERY layer. No booking form, no payment form.
> Every CTA leads to the company's own site.
### `/explore` — Marketplace Home
Sections:
1. **Search Hero**
- Headline: "Find your next rental — from trusted local companies"
- Search bar: [City / Location] [Pick-up date] [Return date] [Search]
- Popular cities quick links
2. **Featured Offers Carousel**
- "🔥 Current Deals" header
- Horizontal scroll of offer cards:
- Vehicle photo (from company upload)
- Company logo + name
- Offer title + discount badge (e.g. "20% OFF")
- Valid until date
- **"View Deal →"** → links to `/explore/[slug]#offers`
3. **All Available Vehicles**
- Grid of vehicle cards showing ALL published vehicles from ALL companies:
- **Vehicle photo** (first photo from `Vehicle.photos[]`)
- Make, model, year, category badge
- Company logo + name (clickable)
- Daily rate + currency
- Active offer badge (if applicable, e.g. "20% OFF until July 31")
- Star rating from reviews
- **"Book at [Company Name] →"** — on click: redirect to `{slug}.RentalDriveGo.com/book?vehicleId=X&from=Y&to=Z&ref=marketplace`
- Filter panel: category, transmission, fuel type, price range, city, offer only
- Sort: price (low-high, high-low), rating, newest
4. **Browse by Category**
- Economy · Compact · SUV · Luxury · Van · Truck · Electric
5. **Browse by Company**
- Company cards: logo, name, city, rating, vehicle count, active offer badge
- **"View Fleet →"** → `/explore/[slug]`
6. **How It Works** (for first-time visitors)
- 3 steps: 1. Browse vehicles → 2. Click to go to company site → 3. Book & pay directly
### `/explore?...` — Search Results
- Same vehicle card grid, filtered by search params
- No booking happens here — every card links to company site with pre-filled params
- Availability indicator on each card ("3 available for your dates" vs "Check availability")
### `/explore/[slug]` — Company Marketplace Profile
This is the company's listing on the RentalDriveGo marketplace (RentalDriveGo-styled, not their branded site).
Sections:
1. Company header — logo, display name, city/country, rating, phone, "Save" heart
2. **Current Offers section** — offer cards with discount badges
3. **Available Vehicles grid** — all published vehicles with photos
- Each card: photo(s), specs, daily rate, offer badge, **"Book at [Company Name] →"** redirect button
4. **Reviews** — renter reviews with star ratings + company replies
5. Contact info — email, phone, WhatsApp link (opens `wa.me/...`)
6. "Visit their website →" link to `{slug}.RentalDriveGo.com`
### `/explore/[slug]/vehicles/[id]` — Vehicle Detail (Marketplace)
- **Photo gallery** (all `Vehicle.photos[]` uploaded by company)
- Full specs: make, model, year, color, category, seats, transmission, fuel, features
- Daily rate + active offer badge + calculated total for selected dates
- Availability calendar (shows blocked dates — unavailable for booking)
- Company info sidebar: logo, name, rating, phone, WhatsApp
- **BIG CTA: "Book at [Company Name] →"**
- Redirects to: `{slug}.RentalDriveGo.com/book?vehicleId=[id]&from=[startDate]&to=[endDate]&ref=marketplace`
- Opens in same tab
### No `/explore/[slug]/book` page
There is no booking flow on the marketplace. Booking happens entirely on the company's site.
---
## LAYER 1B — Renter Account
### `/renter/signup`, `/renter/login`
Standard auth pages. Login with Google optional.
### `/renter/dashboard` — My Rentals
- Cross-company reservations list (tabs: Upcoming / Active / Past / Cancelled)
- Each card: company logo, vehicle photo, dates, status, "View" → links to company site booking detail
### `/renter/notifications` — Notification Inbox
- All in-app notifications (new booking, reminders, offers, etc.)
### `/renter/saved-companies`
- Saved companies with "New Offer" badges if they have active offers
- "View Fleet →" links to marketplace profile
### `/renter/profile`
- Personal info, locale, currency preference
- Notification preferences matrix (Email / SMS / WhatsApp / Push per event type)
---
## LAYER 2 — Company Dashboard (app.RentalDriveGo.com)
### Auth
#### `/signup` — Signup Wizard
1. Account (name, email, password)
2. Company (name, country, phone)
3. Plan selection (Starter / Growth / Pro + Monthly / Annual + currency: MAD / USD / EUR)
4. Payment:
- **Option A: Pay with AmanPay** → shows AmanPay widget (card, cash, e-wallet)
- **Option B: Pay with PayPal** → redirect to PayPal, return here
- AmanPay and PayPal logos shown prominently
- "Supported: Visa, Mastercard, CMI, cash at 3000+ points, PayPal"
#### `/onboarding` — 4-Step Wizard
1. Company profile (address, phone)
2. Branding (logo, color, subdomain)
3. **Add first vehicle + upload photos** — emphasize: "Photos appear on the global marketplace"
4. Launch: "Your site is live at [slug].RentalDriveGo.com" + "Your vehicles are now visible on RentalDriveGo.com/explore"
### Dashboard Pages
#### `/dashboard` — Home
- Subscription status banner (trial / past-due / renewal due)
- KPI cards + active offers widget + booking source breakdown
#### `/dashboard/fleet` — Fleet Management
- Vehicle list with status + published/unpublished badge
- **Photos column** — thumbnail of first photo, "0 photos" warning badge if none uploaded
- Vehicle detail:
- **Photos section at top** — drag-drop upload area
- "Photos appear on marketplace" callout
- Upload multiple photos (Cloudinary)
- Reorder photos (first = cover image)
- Delete photos
- Specs + maintenance + reservation history
#### `/dashboard/offers` — Offers
- Create / manage promotional offers
- `isPublic` toggle: "Show on global marketplace"
- `isFeatured` toggle: "Feature on explore homepage" (GROWTH+ plan badge)
#### `/dashboard/reservations`
- Source filter includes MARKETPLACE (bookings from renter redirected from explore)
#### `/dashboard/billing` — Billing & Plan
- Current plan + status
- **"Renew Subscription"** button (manual renewal — AmanPay or PayPal)
- Invoice history (with AmanPay transaction IDs or PayPal capture IDs)
- Payment methods accepted: AmanPay badge + PayPal badge
#### `/dashboard/settings` — Settings
- **Payments tab** ← UPDATED:
- "Your rental payment methods" section (what renters use to pay YOU)
- AmanPay section: Merchant ID input + Secret Key input + "Test connection" button
- PayPal section: PayPal business email input + "Connect PayPal" button
- Active payment methods shown with green/grey status dots
- "If no payment method configured, renters can only make reservation requests (pay on pickup)"
#### `/dashboard/notifications` — Notification Center
- Inbox tab (in-app notification log)
- Preferences tab (Email / SMS / In-App / Push matrix per event type)
---
## LAYER 3 — Company Public Site ({slug}.RentalDriveGo.com)
> All booking and payment happens here. Company's brand. Company's AmanPay/PayPal.
### `/` — Home
- Company header: logo + name + nav
- Hero: tagline + hero image + "Browse Our Vehicles" CTA
- **Active Offers section** — offer banners with countdown (valid until X days)
- Vehicle grid (all published vehicles with photos)
- Footer: contact + social + "Powered by RentalDriveGo" (Pro removes)
### `/vehicles/[id]` — Vehicle Detail
- Photo gallery (all company-uploaded photos, full lightbox)
- Specs + features list
- Daily rate + active offer badge
- Availability calendar
- "Book Now" CTA
### `/offers` — All Offers
- All active offers with banner images, descriptions, discount badges, valid until
- "Book with this offer" → pre-fills booking form with offer applied
### `/book` — Booking Flow
The booking form accepts a `?vehicleId=X&from=Y&to=Z&ref=marketplace&offerId=O` querystring.
When `ref=marketplace` is present, the reservation is tagged as source=MARKETPLACE.
**Step 1 — Vehicle & Dates**
- Vehicle card (pre-filled if from marketplace redirect or offer click)
- Date range picker
- Active offer applied (if applicable) + promo code input
- Price breakdown: base rate discount = total
**Step 2 — Your Details**
- First name, last name, email, phone (required)
- Driver license (optional, company-configurable)
- Renter account login prompt (optional — "Save this booking to your RentalDriveGo account")
**Step 3 — Payment**
- Order summary card
- **Payment method selection:**
- **AmanPay tab** (if company has AmanPay configured):
- AmanPay widget loads inline (card national, card international, cash)
- Powered by AmanPay + M2T + PCI-DSS badge
- **PayPal tab** (if company has PayPal configured):
- PayPal buttons component
- If only one method: show directly without tabs
- If none: "Contact us to reserve" + company phone/WhatsApp
- "Confirm & Pay" / "Confirm Reservation"
### `/book/confirmation` — Booking Confirmed
- Booking reference number
- Full summary
- Company contact info
- "Download receipt" (PDF, optional)
- "Track this booking" → link to renter account
- Notifications already sent automatically
### `/contact` — Contact
- Contact form → email via Resend to company
---
## Admin Panel (admin.RentalDriveGo.com — internal)
> Separate app from the company dashboard. Own auth (JWT + TOTP 2FA). Only RentalDriveGo staff.
### Auth
- `/admin/login` — email + password + optional 2FA code field (shown if 2FA enabled)
- `/admin/login/2fa` — TOTP entry step
### `/admin` — Overview Dashboard
- Platform KPI cards: Total Companies, Active, Trialing, Suspended, MRR, Churn
- Recent signups feed
- Quick links to all sections
### `/admin/companies` — Company List
- Search (name, email, slug), filter (plan, status, country), sort (name, MRR, created)
- Table: Logo, Name, Plan badge, Status badge, Vehicle count, Employee count, MRR, Actions
- Actions: View | Edit | Suspend/Reactivate | Delete
- Bulk: Suspend selected, Export CSV
### `/admin/companies/:id` — Company Detail
- Tabs: Overview | Staff | Subscription | Activity | Settings
- **Overview**: brand info, legal info, payment accounts status
- **Staff tab**:
- Employee table: name, email, role badge, status (Active/Deactivated), last login
- Actions per employee: Edit | Change Role | Deactivate/Reactivate | Reset Password | Impersonate
- "Add Employee" button → modal: name, email, role → sends Clerk invitation
- Role dropdown: OWNER / MANAGER / AGENT with permission matrix tooltip
- **Subscription tab**:
- Current plan, status, billing period, last payment, next renewal
- Invoice history table
- Override controls: force status, change plan, mark invoice paid, add free period
- **Activity tab**: recent reservations, offers, audit events for this company
### `/admin/renters` — Renter Accounts
- Search by name, email, phone
- Filter: blocked / unblocked
- Table: name, email, phone, joined, reservation count, blocked badge
- Actions: View | Block/Unblock
### `/admin/metrics` — Platform Analytics
- MRR trend chart
- New companies per week
- Subscription breakdown by plan (donut chart)
- Marketplace: impressions, bookings, top companies
- Notification delivery rates per channel
### `/admin/users` — Admin User Management (SUPER_ADMIN only)
- List of admin accounts: name, email, role, 2FA status, last login
- Create admin: name, email, role → password emailed
- Edit role | Deactivate | View audit trail
### `/admin/audit-logs` — Audit Log
- Searchable, filterable (by admin, action, company, date range)
- Columns: Timestamp, Admin, Action, Target, Before/After (expandable), IP, Note
- Export CSV button
### `/admin/settings` — Admin Panel Settings
- Admin account: update own name, email, password
- 2FA: setup QR code, verify, enable/disable