feat: add employee email verification on signup
Build & Deploy / Build & Push Docker Image (push) Failing after 41s
Build & Deploy / Deploy to VPS (push) Has been skipped
Test / API Unit Tests (push) Failing after 5m1s
Test / Marketplace Unit Tests (push) Successful in 9m36s
Test / Admin Unit Tests (push) Successful in 9m38s
Test / Dashboard Unit Tests (push) Successful in 9m37s
Test / API Integration Tests (push) Has been cancelled

- Signup sends verification email instead of auto-login; login blocks unverified emails
- New endpoints: POST /verify-email and POST /resend-verification
- New verify-email page in dashboard with token-based email confirmation
- DB migration adds emailVerified and emailVerificationToken fields to Employee
- Update sign-in/sign-up/reset-password flows to handle verification states
- Minor UI polish across dashboard and marketplace components
- Refactor marketplace-homepage types
This commit is contained in:
root
2026-06-25 20:25:16 -04:00
parent cd67db99ed
commit c5f614b3e4
22 changed files with 594 additions and 190 deletions
@@ -0,0 +1,6 @@
-- AlterTable
ALTER TABLE "employees" ADD COLUMN "emailVerified" TIMESTAMP(3);
ALTER TABLE "employees" ADD COLUMN "emailVerificationToken" TEXT;
-- CreateIndex
CREATE UNIQUE INDEX "employees_emailVerificationToken_key" ON "employees"("emailVerificationToken");
+2
View File
@@ -1001,6 +1001,8 @@ model Employee {
passwordHash String?
passwordResetToken String? @unique
passwordResetExpiresAt DateTime?
emailVerified DateTime?
emailVerificationToken String? @unique
role EmployeeRole @default(AGENT)
preferredLanguage String @default("en")
isActive Boolean @default(true)
+137 -137
View File
@@ -97,298 +97,298 @@ export const defaultMarketplaceHomepageSections: MarketplaceHomepageSectionType[
export const defaultMarketplaceHomepageContent: MarketplaceHomepageConfig = {
en: {
sections: defaultMarketplaceHomepageSections,
heroKicker: 'RentalDriveGo',
heroTitle: 'Marketplace discovery with a sharper front door.',
heroKicker: 'FleetOS',
heroTitle: 'The operating system for modern fleet management.',
heroBody:
'Rental companies run private operations, renters browse a shared marketplace, and every booking ends on the companys own branded checkout.',
'Run your entire rental operation from one platform — inventory, bookings, payments, and customer experience, all under your own brand.',
startTrial: 'Start free trial',
exploreVehicles: 'Explore vehicles',
surfaceLabel: 'Marketplace surface',
surfaceTitle: 'Designed for two audiences at once.',
surfaceLabel: 'Unified dashboard',
surfaceTitle: 'One platform. Every operation.',
surfaceBody:
'Operators need control, renters need confidence. The marketplace should show both without feeling like a template.',
liveLabel: 'Live network',
trustedFleets: 'Trusted fleets',
brandedFlows: 'Branded booking flows',
multiTenant: 'Multi-tenant operations',
companyKicker: 'Operator workflow',
companyTitle: 'Manage inventory, offers, billing, and staff from one control layer.',
'Fleet operators need power, renters need simplicity. FleetOS delivers both without compromise — no templates, no generic workflows.',
liveLabel: 'Live platform',
trustedFleets: 'Real-time fleet control',
brandedFlows: 'White-label booking engine',
multiTenant: 'Multi-company architecture',
companyKicker: 'Operator command center',
companyTitle: 'Manage inventory, pricing, contracts, and team from a single pane of glass.',
companyBody:
'Publish inventory once, decide what appears publicly, and keep contracts, payments, and reporting isolated per company.',
renterKicker: 'Renter experience',
renterTitle: 'Let renters compare quickly, then hand them off to the right company site.',
"Publish once, control visibility per channel, and keep every company's data, payments, and reporting fully isolated.",
renterKicker: 'Customer experience',
renterTitle: 'Give renters a fast, transparent booking journey that ends on your branded checkout.',
renterBody:
'The marketplace works as a discovery engine, not a dead-end aggregator. Search here, reserve there, and pay direct.',
'FleetOS powers discovery and conversion — not a walled garden. Browse here, book there, and pay directly to the fleet owner.',
pillars: [
['Unified publishing', 'Vehicle photos, pricing, and offers flow from one admin workflow into marketplace discovery and branded booking pages.'],
['Qualified discovery', 'Featured offers, location-aware browsing, and company reputation signals help renters narrow options fast.'],
['Direct revenue path', 'Bookings move into the companys own payment flow, so customer ownership and cash collection stay with the business.'],
['Unified command', 'Vehicle inventory, dynamic pricing, and promotional offers flow from one admin hub into marketplace discovery and your own branded storefront.'],
['Smart discovery', 'Location-aware search, reputation scoring, and AI-curated listings help renters find the right vehicle in seconds.'],
['Direct revenue', 'Every booking routes through your own payment gateway — you own the customer relationship and the cash flow.'],
].map(([title, body]) => ({ title: title!, body: body! })),
metrics: [
['01', 'Shared marketplace visibility'],
['02', 'Direct company checkout'],
['03', 'Company-owned payments'],
['01', 'Multi-tenant fleet operations'],
['02', 'White-label booking experience'],
['03', 'Direct-to-owner payments'],
].map(([value, label]) => ({ value: value!, label: label! })),
featureLabel: 'What the product covers',
featureLabel: 'What FleetOS covers',
features: [
'Fleet management with multi-photo uploads',
'Marketplace offers and redirect booking flow',
'Branded public booking site per company',
'Customer CRM, analytics, and billing controls',
'Fleet inventory with multi-photo uploads and condition tracking',
'Dynamic pricing engine with seasonal and promotional rules',
'White-label booking site per fleet operator',
'Customer CRM, real-time analytics, and automated billing',
],
howitworksKicker: 'GETTING STARTED',
howitworksTitle: 'How It Works',
howitworksSteps: [
{
number: '1',
title: 'Create Account',
description: 'Sign up for your company workspace and choose your pricing plan for the 90-day free trial.',
title: 'Create Your Workspace',
description: 'Sign up and launch your fleet workspace with a 90-day free trial — no credit card required.',
},
{
number: '2',
title: 'Add Your Fleet',
description: 'Upload vehicle photos, set prices, and create offers visible on the marketplace.',
title: 'Onboard Your Fleet',
description: 'Upload vehicles, configure pricing, and publish offers that appear on the marketplace instantly.',
},
{
number: '3',
title: 'Start Selling',
description: 'Renters discover your fleet, and bookings flow directly to your branded checkout.',
title: 'Go Live',
description: 'Customers discover your fleet, book through your branded site, and payments land directly in your account.',
},
],
stepsTitle: 'How companies launch',
stepsTitle: 'How fleets launch on FleetOS',
steps: [
['1', 'Create your company workspace', 'Pick a plan, launch your 90-day trial, and verify the owner account.'],
['2', 'Publish vehicles and offers', 'Upload photos once and control what appears on the marketplace and branded site.'],
['3', 'Accept bookings on your own site', 'Renters discover your fleet on RentalDriveGo, then pay you directly on your branded booking flow.'],
['1', 'Create your fleet workspace', 'Choose a plan, start your 90-day trial, and verify your operator account.'],
['2', 'Publish vehicles and offers', 'Upload vehicle data once and control exactly what appears on every channel.'],
['3', 'Accept bookings on your terms', 'Customers discover your fleet on FleetOS, then complete the booking on your own branded checkout.'],
].map(([step, title, body]) => ({ step: step!, title: title!, body: body! })),
stepLabel: 'Step',
testimonialsKicker: 'CUSTOMER STORIES',
testimonialsTitle: 'Trusted by rental companies worldwide',
testimonialsTitle: 'Trusted by fleet operators worldwide',
testimonials: [
{
quote:
'RentalDriveGo transformed how we manage our fleet and reach customers. The marketplace visibility has doubled our bookings.',
'FleetOS transformed how we manage our 200+ vehicle fleet. The unified dashboard cut our admin time by half and our bookings doubled in three months.',
author: 'Sarah Johnson',
role: 'Fleet Manager',
role: 'Fleet Director',
company: 'Premium Auto Rentals',
},
{
quote:
'The two-sided platform gives us control over our operations while renters get a seamless experience. Perfect balance.',
'The white-label booking engine is a game-changer. Our customers never leave our brand experience, yet we get marketplace-level visibility.',
author: 'Ahmed Hassan',
role: 'Operations Director',
company: 'Desert Wheels',
},
{
quote:
'We appreciated how easy it was to set up our branded booking flow. Our customers love the direct payment experience.',
'We evaluated six platforms before FleetOS. The multi-tenant architecture and direct payment model made it the obvious choice for our growing operation.',
author: 'Marie Dubois',
role: 'Owner',
role: 'CEO',
company: 'Provence Car Hire',
},
],
readyKicker: 'Ready to launch',
readyTitle: 'The marketplace homepage should explain the product in seconds.',
readyTitle: 'Your fleet deserves an operating system, not just a listing site.',
readyBody:
'Use the marketplace to attract demand, then move renters into a branded experience that keeps pricing, payments, and trust tied to your company.',
'FleetOS gives you the tools to run your entire rental business — from inventory to invoicing — while keeping your brand front and center at every touchpoint.',
viewPricing: 'View pricing',
createWorkspace: 'Create workspace',
},
fr: {
sections: defaultMarketplaceHomepageSections,
heroKicker: 'RentalDriveGo',
heroTitle: 'Une vitrine marketplace plus claire et plus percutante.',
heroKicker: 'FleetOS',
heroTitle: "Le système d'exploitation pour la gestion de flotte moderne.",
heroBody:
"Les entreprises de location gèrent leurs opérations en privé, les clients parcourent une marketplace commune et chaque réservation se finalise sur le parcours de paiement aux couleurs de l'entreprise.",
startTrial: 'Commencer lessai gratuit',
"Gérez l'ensemble de votre activité de location depuis une seule plateforme — inventaire, réservations, paiements et expérience client, le tout sous votre propre marque.",
startTrial: "Commencer l'essai gratuit",
exploreVehicles: 'Explorer les véhicules',
surfaceLabel: 'Vitrine marketplace',
surfaceTitle: 'Pensée pour deux audiences à la fois.',
surfaceLabel: 'Tableau de bord unifié',
surfaceTitle: 'Une plateforme. Toutes les opérations.',
surfaceBody:
'Les opérateurs veulent du contrôle, les clients veulent de la confiance. La marketplace doit montrer les deux sans ressembler à un modèle générique.',
liveLabel: 'Réseau actif',
trustedFleets: 'Flottes fiables',
brandedFlows: 'Parcours de marque',
multiTenant: 'Opérations multi-tenant',
companyKicker: 'Flux opérateur',
companyTitle: 'Pilotez linventaire, les offres, la facturation et léquipe depuis un seul centre de contrôle.',
'Les opérateurs de flotte ont besoin de puissance, les clients ont besoin de simplicité. FleetOS offre les deux sans compromis — aucun modèle générique.',
liveLabel: 'Plateforme active',
trustedFleets: 'Contrôle de flotte en temps réel',
brandedFlows: 'Moteur de réservation en marque blanche',
multiTenant: 'Architecture multi-entreprise',
companyKicker: 'Centre de commande opérateur',
companyTitle: "Gérez l'inventaire, les tarifs, les contrats et l'équipe depuis une interface unique.",
companyBody:
'Publiez une seule fois, choisissez ce qui apparaît publiquement, et gardez contrats, paiements et rapports isolés par entreprise.',
'Publiez une seule fois, contrôlez la visibilité par canal et gardez les données, les paiements et les rapports de chaque entreprise totalement isolés.',
renterKicker: 'Expérience client',
renterTitle: 'Laissez les clients comparer rapidement, puis redirigez-les vers le bon site dentreprise.',
renterTitle: 'Offrez aux clients un parcours de réservation rapide et transparent qui se termine sur votre page de marque.',
renterBody:
'La marketplace sert de moteur de découverte, pas dagrégateur sans suite. Recherche ici, réservation là-bas, paiement direct.',
'FleetOS alimente la découverte et la conversion — pas un jardin fermé. Parcourez ici, réservez là-bas et payez directement au propriétaire de la flotte.',
pillars: [
['Publication unifiée', 'Les photos, tarifs et offres circulent depuis un seul flux dadministration vers la découverte marketplace et les pages de réservation de marque.'],
['Découverte qualifiée', 'Offres mises en avant, navigation par localisation et signaux de réputation aident les clients à filtrer rapidement.'],
['Revenus en direct', 'Les réservations basculent vers le paiement propre à lentreprise afin de préserver la relation client et lencaissement.'],
["Commande unifiée", "L'inventaire, la tarification dynamique et les offres promotionnelles circulent depuis un hub d'administration unique vers la marketplace et votre vitrine de marque."],
['Découverte intelligente', 'Recherche géolocalisée, score de réputation et annonces optimisées aident les clients à trouver le bon véhicule en quelques secondes.'],
['Revenus directs', 'Chaque réservation passe par votre propre passerelle de paiement — vous gardez la relation client et la trésorerie.'],
].map(([title, body]) => ({ title: title!, body: body! })),
metrics: [
['01', 'Visibilité marketplace partagée'],
['02', 'Paiement direct entreprise'],
['03', 'Paiements gérés par lentreprise'],
['01', 'Opérations de flotte multi-tenant'],
['02', 'Expérience de réservation en marque blanche'],
['03', 'Paiements directs au propriétaire'],
].map(([value, label]) => ({ value: value!, label: label! })),
featureLabel: 'Ce que couvre le produit',
featureLabel: 'Ce que FleetOS couvre',
features: [
'Gestion de flotte avec téléversement de plusieurs photos',
'Offres marketplace et redirection vers la réservation',
'Site public de réservation par entreprise',
'CRM client, analytics et contrôle de facturation',
"Inventaire de flotte avec photos multiples et suivi d'état",
'Moteur de tarification dynamique avec règles saisonnières et promotionnelles',
'Site de réservation en marque blanche par opérateur',
'CRM client, analytics en temps réel et facturation automatisée',
],
howitworksKicker: 'MISE EN ROUTE',
howitworksTitle: 'Comment ça marche',
howitworksSteps: [
{
number: '1',
title: 'Créer un compte',
description: 'Inscrivez-vous à votre espace entreprise et choisissez votre forfait pour l\'essai gratuit de 90 jours.',
title: 'Créez votre espace',
description: 'Inscrivez-vous et lancez votre espace de flotte avec un essai gratuit de 90 jours — sans carte bancaire.',
},
{
number: '2',
title: 'Ajouter votre flotte',
description: 'Téléversez les photos des véhicules, fixez les tarifs et créez des offres visibles sur la marketplace.',
title: 'Intégrez votre flotte',
description: 'Ajoutez vos véhicules, configurez les tarifs et publiez des offres visibles instantanément sur la marketplace.',
},
{
number: '3',
title: 'Commencer à vendre',
description: 'Les clients découvrent votre flotte et les réservations arrivent directement à votre paiement de marque.',
title: 'Passez en direct',
description: 'Les clients découvrent votre flotte, réservent via votre site de marque et les paiements arrivent directement sur votre compte.',
},
],
stepsTitle: 'Comment les entreprises démarrent',
stepsTitle: 'Comment les flottes se lancent sur FleetOS',
steps: [
['1', 'Créez votre espace entreprise', 'Choisissez un plan, lancez votre essai de 90 jours et vérifiez le compte propriétaire.'],
['2', 'Publiez véhicules et offres', 'Téléversez une seule fois et contrôlez ce qui apparaît sur la marketplace et le site de marque.'],
['3', 'Acceptez les réservations sur votre site', 'Les clients découvrent votre flotte sur RentalDriveGo puis paient directement via votre parcours de réservation.'],
['1', 'Créez votre espace de flotte', 'Choisissez un plan, démarrez votre essai de 90 jours et vérifiez votre compte opérateur.'],
['2', 'Publiez véhicules et offres', 'Ajoutez vos données une seule fois et contrôlez précisément ce qui apparaît sur chaque canal.'],
['3', 'Acceptez les réservations selon vos conditions', 'Les clients découvrent votre flotte sur FleetOS, puis finalisent sur votre propre page de réservation.'],
].map(([step, title, body]) => ({ step: step!, title: title!, body: body! })),
stepLabel: 'Étape',
testimonialsKicker: 'HISTOIRES DE CLIENTS',
testimonialsTitle: 'Approuvé par des entreprises de location du monde entier',
testimonialsTitle: 'Approuvé par des opérateurs de flotte du monde entier',
testimonials: [
{
quote:
'RentalDriveGo a transformé la gestion de notre flotte et notre portée client. La visibilité marketplace a doublé nos réservations.',
"FleetOS a transformé la gestion de notre flotte de plus de 200 véhicules. Le tableau de bord unifié a réduit notre temps d'administration de moitié et nos réservations ont doublé en trois mois.",
author: 'Sophie Martin',
role: 'Responsable de Flotte',
role: 'Directrice de Flotte',
company: 'Location Premium',
},
{
quote:
'La plateforme bilatérale nous donne le contrôle de nos opérations tandis que les clients bénéficient d\'une expérience transparente. L\'équilibre parfait.',
'Le moteur de réservation en marque blanche change la donne. Nos clients ne quittent jamais notre expérience de marque, tout en bénéficiant de la visibilité marketplace.',
author: 'Jean-Claude Barbier',
role: 'Directeur des Opérations',
company: 'Sahara Cars',
},
{
quote:
'Nous avons apprécié la facilité de mise en place de notre parcours de réservation personnalisé. Nos clients adorent l\'expérience de paiement direct.',
"Nous avons évalué six plateformes avant FleetOS. L'architecture multi-tenant et le modèle de paiement direct en ont fait le choix évident pour notre croissance.",
author: 'Isabelle Leclerc',
role: 'Propriétaire',
role: 'PDG',
company: 'Provence Auto',
},
],
readyKicker: 'Prêt à démarrer',
readyTitle: 'La page daccueil marketplace doit présenter le produit en quelques secondes.',
readyKicker: 'Prêt à vous lancer',
readyTitle: "Votre flotte mérite un système d'exploitation, pas juste un site d'annonces.",
readyBody:
'Utilisez la marketplace pour capter la demande, puis orientez les clients vers une expérience de marque où les prix, les paiements et la confiance restent attachés à votre entreprise.',
"FleetOS vous donne les outils pour gérer l'ensemble de votre activité de location — de l'inventaire à la facturation — tout en gardant votre marque au premier plan à chaque point de contact.",
viewPricing: 'Voir les tarifs',
createWorkspace: 'Créer lespace',
createWorkspace: "Créer l'espace",
},
ar: {
sections: defaultMarketplaceHomepageSections,
heroKicker: 'RentalDriveGo',
heroTitle: 'واجهة سوق أكثر وضوحاً وتأثيراً.',
heroKicker: 'FleetOS',
heroTitle: 'نظام التشغيل لإدارة الأساطيل الحديثة.',
heroBody:
'شركات التأجير تدير عملياتها بشكل خاص، والمستأجرون يتصفحون سوقاً مشتركاً، وكل حجز ينتهي في صفحة دفع تحمل هوية الشركة ذاتها.',
'قم بإدارة كامل نشاط التأجير الخاص بك من منصة واحدة — المخزون، الحجوزات، المدفوعات وتجربة العملاء، كل ذلك تحت علامتك التجارية الخاصة.',
startTrial: 'ابدأ التجربة المجانية',
exploreVehicles: 'استكشف السيارات',
surfaceLabel: 'واجهة السوق',
surfaceTitle: صممة لجمهورين في الوقت نفسه.',
exploreVehicles: 'استكشف المركبات',
surfaceLabel: 'لوحة تحكم موحدة',
surfaceTitle: نصة واحدة. كل العمليات.',
surfaceBody:
'المشغلون يريدون التحكم، والمستأجرون يريدون الثقة. يجب أن تُظهر المنصة الأمرين معاً من دون أن تبدو كقالب عادي.',
liveLabel: 'شبكة نشطة',
trustedFleets: 'أساطيل موثوقة',
brandedFlows: سارات حجز مخصصة',
multiTenant: 'عمليات متعددة الشركات',
companyKicker: 'سير عمل المشغل',
companyTitle: 'تحكم في المخزون والعروض والفوترة والفريق من طبقة تشغيل واحدة.',
'مشغلو الأساطيل يحتاجون إلى القوة، والمستأجرون يحتاجون إلى البساطة. FleetOS يقدم كليهما بدون تنازلات — لا قوالب جاهزة ولا سير عمل عام.',
liveLabel: 'منصة نشطة',
trustedFleets: 'تحكم فوري بالأسطول',
brandedFlows: حرك حجز بالعلامة البيضاء',
multiTenant: 'بنية متعددة الشركات',
companyKicker: 'مركز قيادة المشغل',
companyTitle: 'أدر المخزون والأسعار والعقود والفريق من لوحة تحكم واحدة.',
companyBody:
'انشر المخزون مرة واحدة، وحدد ما يظهر للعامة، واحتفظ بالعقود والمدفوعات والتقارير معزولة لكل شركة.',
'انشر مرة واحدة، وتحكم في الظهور حسب القناة، واحتفظ ببيانات كل شركة ومدفوعاتها وتقاريرها معزولة تماماً.',
renterKicker: 'تجربة المستأجر',
renterTitle: 'دع المستأجرين يقارنون بسرعة ثم وجّههم إلى موقع الشركة المناسب.',
renterTitle: 'امنح المستأجرين رحلة حجز سريعة وشفافة تنتهي على صفحة الدفع الخاصة بك.',
renterBody:
'هذه المنصة محرك لاكتشاف الخيارات، وليست مُجمِّعاً بلا مسار واضح. ابحث هنا، احجز هناك، وادفع مباشرة للشركة.',
'FleetOS يشغّل الاكتشاف والتحويل — وليس حديقة مغلقة. تصفح هنا، احجز هناك، وادفع مباشرة لمالك الأسطول.',
pillars: [
['نشر موحد', 'صور السيارات والأسعار والعروض تنتقل من سير إدارة واحد إلى السوق وصفحات الحجز ذات الهوية الخاصة.'],
['اكتشاف مؤهل', 'تساعد العروض المميزة، والتصفح حسب الموقع، وإشارات السمعة المستأجرين على تحديد خياراتهم بسرعة.'],
['مسار إيراد مباشر', 'تنتقل الحجوزات إلى صفحة الدفع الخاصة بالشركة حتى تبقى علاقة العميل والتحصيل المالي بيد الشركة نفسها.'],
['قيادة موحدة', 'المخزون، التسعير الديناميكي والعروض الترويجية تتدفق من مركز إدارة واحد إلى marketplace السوق وواجهة متجرك الخاصة.'],
['اكتشاف ذكي', 'بحث حسب الموقع، تقييم السمعة وقوائم منسقة بالذكاء الاصطناعي تساعد المستأجرين في العثور على المركبة المناسبة بثوانٍ.'],
['إيرادات مباشرة', 'كل حجز يمر عبر بوابة الدفع الخاصة بك — أنت تملك علاقة العميل والتدفق النقدي.'],
].map(([title, body]) => ({ title: title!, body: body! })),
metrics: [
['01', 'ظهور مشترك في السوق'],
['02', 'دفع مباشر للشركة'],
['03', 'مدفوعات مملوكة للشركة'],
['01', 'عمليات أسطول متعددة الشركات'],
['02', 'تجربة حجز بالعلامة البيضاء'],
['03', 'مدفوعات مباشرة للمالك'],
].map(([value, label]) => ({ value: value!, label: label! })),
featureLabel: 'ما الذي يقدمه المنتج',
featureLabel: 'ما الذي يغطيه FleetOS',
features: [
'إدارة الأسطول مع رفع عدة صور',
'عروض السوق والتحويل إلى مسار الحجز',
'موقع حجز عام مخصص لكل شركة',
'إدارة العملاء والتحليلات والفوترة',
'مخزون الأسطول مع رفع صور متعددة وتتبع الحالة',
'محرك تسعير ديناميكي مع قواعد موسمية وترويجية',
'موقع حجز بالعلامة البيضاء لكل مشغل أسطول',
'CRM عملاء، تحليلات فورية وفوترة آلية',
],
howitworksKicker: 'البدء',
howitworksTitle: 'كيف يعمل',
howitworksSteps: [
{
number: '1',
title: 'إنشاء حساب',
description: 'قم بالتسجيل للحصول على مساحة عمل شركتك واختر خطتك للتجربة المجانية لمدة 90 يوماً.',
title: 'أنشئ مساحتك',
description: 'سجّل وأطلق مساحة أسطولك مع تجربة مجانية لمدة 90 يوماً — بدون بطاقة ائتمان.',
},
{
number: '2',
title: 'أضف أسطولك',
description: 'قم برفع صور السيارات، وحدد الأسعار، وأنشئ عروضاً مرئية في السوق.',
description: 'أضف المركبات، واضبط الأسعار، وانشر العروض التي تظهر فوراً في marketplace السوق.',
},
{
number: '3',
title: 'ابدأ البيع',
description: 'يكتشف المستأجرون أسطولك وتأتي الحجوزات مباشرة إلى دفعتك المخصصة.',
title: 'انطلق مباشرة',
description: 'يكتشف العملاء أسطولك، ويحجزون عبر موقعك التجاري، وتصل المدفوعات مباشرة إلى حسابك.',
},
],
stepsTitle: 'كيف تبدأ الشركات',
stepsTitle: 'كيف تنطلق الأساطيل على FleetOS',
steps: [
['1', 'أنشئ مساحة عمل شركتك', 'اختر الخطة وابدأ تجربتك لمدة 14 يوماً ثم فعّل حساب المالك.'],
['2', 'انشر السيارات والعروض', 'ارفع الصور مرة واحدة وتحكم فيما يظهر في السوق وفي الموقع المخصص.'],
['3', 'استقبل الحجوزات على موقعك', 'يكتشف المستأجرون أسطولك على RentalDriveGo ثم يدفعون مباشرة عبر مسار الحجز الخاص بك.'],
['1', 'أنشئ مساحة عمل أسطولك', 'اختر الخطة وابدأ تجربتك لمدة 90 يوماً وتحقق من حساب المشغل الخاص بك.'],
['2', 'انشر المركبات والعروض', 'أضف بيانات المركبات مرة واحدة وتحكم بدقة فيما يظهر على كل قناة.'],
['3', 'استقبل الحجوزات بشروطك', 'يكتشف العملاء أسطولك على FleetOS، ثم يكملون الحجز على صفحة الدفع الخاصة بك.'],
].map(([step, title, body]) => ({ step: step!, title: title!, body: body! })),
stepLabel: 'الخطوة',
testimonialsKicker: 'قصص العملاء',
testimonialsTitle: 'موثوقة من قبل شركات التأجير في جميع أنحاء العالم',
testimonialsTitle: 'موثوق من قبل مشغلي الأساطيل حول العالم',
testimonials: [
{
quote:
'غيّرت RentalDriveGo طريقة إدارة أسطولنا والوصول إلى العملاء. الظهور في السوق قد ضاعف حجوزاتنا.',
'غيّر FleetOS طريقة إدارة أسطولنا المكون من أكثر من 200 مركبة. لوحة التحكم الموحدة قلصت وقت الإدارة إلى النصف وتضاعفت حجوزاتنا في ثلاثة أشهر.',
author: 'فاطمة الزهراء',
role: 'مدير الأسطول',
role: 'مديرة الأسطول',
company: 'تأجير السيارات الممتازة',
},
{
quote:
'تمنحنا المنصة ثنائية الجانب التحكم في عملياتنا بينما يحصل المستأجرون على تجربة سلسة. التوازن المثالي.',
'محرك الحجز بالعلامة البيضاء يغير قواعد اللعبة. عملاؤنا لا يغادرون تجربة علامتنا التجارية أبداً، مع الاستفادة من ظهور marketplace السوق.',
author: 'محمد علي',
role: 'مدير العمليات',
company: 'صحراء ويلز',
},
{
quote:
'أقدرنا على سهولة إعداد مسار الحجز المخصص بنا. يحب عملاؤنا تجربة الدفع المباشر.',
'قيمنا ست منصات قبل FleetOS. البنية متعددة الشركات ونموذج الدفع المباشر جعلاه الخيار الواضح لنمونا المتسارع.',
author: 'ليلى حسن',
role: 'المالك',
company: 'تأجير السيارات بالبحر الأبيض',
role: 'المديرة التنفيذية',
company: 'تأجير سيارات البحر الأبيض',
},
],
readyKicker: 'جاهز للانطلاق',
readyTitle: 'يجب أن تشرح الصفحة الرئيسية قيمة المنصة خلال ثوانٍ.',
readyTitle: 'أسطولك يستحق نظام تشغيل، وليس مجرد موقع إعلانات.',
readyBody:
'استخدم السوق لجذب الطلب، ثم انقل المستأجرين إلى تجربة تحمل هوية شركتك، بحيث تبقى الأسعار والمدفوعات والثقة مرتبطة بنشاطك.',
'يمنحك FleetOS الأدوات اللازمة لإدارة كامل نشاط التأجير — من المخزون إلى الفوترة — مع إبقاء علامتك التجارية في المقدمة عند كل نقطة اتصال.',
viewPricing: 'عرض الأسعار',
createWorkspace: 'إنشاء المساحة',
},