Customer Application, Partner Application, and Admin Panel — all included.
Welcome to Dr Mech, a powerful B2B on-demand vehicle service platform designed to streamline car and bike maintenance operations for businesses. The platform connects enterprises with verified professional mechanics and authorized service partners, enabling organizations to efficiently manage, schedule, and track vehicle servicing through a centralized, easy-to-use system.
Dr Mech is delivered as a white-label platform, allowing businesses to customize branding, configurations, services, and operational workflows according to their business requirements.
Basic knowledge of mobile application deployment, server configuration, Firebase services, and third-party API integrations is recommended before installation and customization.
Ensure the following software versions are installed before proceeding:
| Tool/Software | Minimum Version | Recommended Version | Purpose |
|---|---|---|---|
| Node.js | v16.x LTS | v20.x LTS or v22.x | React Native & npm scripts |
| npm | v8.x | v10.x or later | Package management |
| PHP | 8.1 | 8.2 or 8.3 | Laravel backend |
| Composer | 2.5 | 2.7 or later | PHP dependency manager |
| MySQL | 5.7 | 8.0 | Database |
| Android Studio | 2023.1 | 2024.1 (Ladybug) | Android APK/AAB build |
| Java JDK | 11 | 17 or 21 | Android compilation |
| Xcode (macOS only) | 15.0 | 16.0 or later | iOS IPA build |
| CocoaPods | 1.12 | 1.15 or later | iOS dependencies |
| Git | 2.30 | Latest | Version control (optional) |
| VS Code | 1.80 | Latest | Code editor (recommended) |
| Web Browser | Chrome 120, Firefox 120, Edge 120 | Latest version | Testing & debugging |
http://localhost in your browsercomposer --version (should show 2.5+)Run these commands in your terminal/command prompt to confirm all required tools are properly installed:
# Check Node.js version
node --version # Should show v20.x or higher
# Check npm version
npm --version # Should show 10.x or higher
# Check PHP version
php --version # Should show 8.2 or higher
# Check Composer version
composer --version # Should show 2.5 or higher
# Check MySQL version
mysql --version # Should show 8.0 or higher
# Check Java version (for Android)
java --version # Should show 17 or higher
If all commands show the correct versions (or higher), your environment is ready for installation.
If any command returns "not found" or shows an older version, please install or update the corresponding software before proceeding.
Dr Mech is built using modern and scalable technologies to power customer applications, partner applications, and administrative operations.
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Mobile Applications (Customer & Partner) | |||
| Framework | React Native | 0.77.1 | Cross-Platform Mobile Development |
| UI Library | React | 19.x | Application User Interface |
| Navigation | React Navigation | Latest | Screen Navigation |
| State Management | Redux Toolkit | Latest | Application State Management |
| HTTP Client | Axios | Latest | API Communication |
| JavaScript Engine | Hermes | Latest | Performance Optimization |
| React Admin Panel | |||
| Framework | React | 18.x | Admin Dashboard User Interface |
| Build Tool | Vite | Latest | Development & Production Build |
| Routing | React Router DOM | 6.x | Client-side Routing |
| HTTP Client | Axios | Latest | Backend API Communication |
| Icons | Lucide React | Latest | Dashboard Icons |
| Charts | Chart.js + React ChartJS 2 | Latest | Analytics & Reports |
| Notifications | React Toastify | Latest | Toast Notifications |
| Dependency Manager | Composer | 2.x+ | PHP Package Management |
| HTTP Client | Guzzle HTTP | Latest | External API Communication |
| Firebase SDK | Kreait Firebase PHP | Latest | Firebase Services Integration |
| SMS Gateway | Twilio SDK | Latest | SMS & OTP Services |
| Android Development Environment | |||
| Node.js | Node.js | 18+ | JavaScript Runtime |
| Android SDK | Android SDK | 35 | Android Development Platform |
| Build Tools | Android Build Tools | 36.0.0 | Application Compilation |
| Minimum SDK | Android SDK | 24 | Minimum Supported Android Version |
| Target SDK | Android SDK | 35 | Target Android Version |
| Gradle | Gradle | 8.10.2 | Build Automation |
| Kotlin | Kotlin | 2.0.21 | Android Native Support |
| Android NDK | NDK | 27.1.12297006 | Native Library Support |
| Java | JDK | 17 | Android Development Environment |
| iOS Development Environment | |||
| iOS Deployment Target | iOS | 13+ | Minimum Supported iOS Version |
| Xcode | Xcode | Latest | iOS Development Environment |
| CocoaPods | CocoaPods | Latest | iOS Dependency Management |
| Third-Party Integrations | |||
| Push Notifications | Firebase Cloud Messaging | Latest | Real-Time Notifications |
| Authentication | Firebase Authentication | Latest | OTP Verification |
| Storage | Firebase Storage | Latest | Image & Document Uploads |
| Payment Gateway | Razorpay / Stripe | Latest | Online Payment Processing |
| Maps & Location | Google Maps API | Latest | Location Services & Navigation |
Install all required SDKs, development tools, and dependencies using the recommended versions before beginning the installation process. Version mismatches may result in build or runtime issues.
Pro Tip: Use Node Version Manager (NVM) for Node.js version management and Android Studio SDK Manager for maintaining Android SDK compatibility.
Dr Mech integrates with several third-party services to provide functionality such as maps, notifications, authentication, email delivery, and payment processing. These services are not included with the purchase package and must be configured using your own accounts and credentials where applicable.
| Service | Purpose | Required |
|---|---|---|
| RouteMappy Maps | Maps, Routing, Address Search & Location Services | Yes |
| Firebase Cloud Messaging (FCM) | Push Notifications | Yes |
| Firebase Authentication | OTP Verification & Authentication | Optional |
| SMTP Mail Service | Email Notifications, Password Reset & Verification | Yes |
| Twilio SMS | SMS Notifications & OTP Delivery | Optional |
| Razorpay | Online Payment Processing | Optional |
| Stripe | Online Payment Processing | Optional |
| PayPal | Online Payment Processing | Optional |
Dr Mech utilizes RouteMappy as its mapping and location service provider. RouteMappy offers customizable mapping capabilities including route calculation, address search, navigation support, service area management, and location-based functionality.
If you require RouteMappy Maps for your application, please contact the RouteMappy team directly.
API keys, payment gateway accounts, SMS credits, email service providers, hosting services, domain registration, SSL certificates, and RouteMappy subscriptions or licensing fees are not included with the purchase package. Buyers are responsible for creating and maintaining their own third-party service accounts and subscriptions where applicable.
DrMech consists of two mobile applications:
For end-users to book car services
For service providers to manage bookings
Common Base Version: React Native 0.85.3 with React 19.2.3
These libraries provide the core framework functionality and handle state management, navigation, API communication, and date processing.
| Package | Version | Customer | Partner | Purpose |
|---|---|---|---|---|
| react | 19.2.3 | check_circle | check_circle | UI Library |
| react-native | 0.85.3 | check_circle | check_circle | Cross-platform mobile framework |
| react-redux | ^9.3.0 | check_circle | check_circle | State management |
| redux | ^5.0.1 | check_circle | check_circle | State container |
| axios | ^1.16.1 | check_circle | check_circle | HTTP client for API calls |
| moment | ^2.30.1 | check_circle | check_circle | Date and time formatting |
These libraries handle screen navigation, routing, and tab management within the applications.
| Package | Version | Customer | Partner | Purpose |
|---|---|---|---|---|
| @react-navigation/native | ^7.2.4 | check_circle | check_circle | Core navigation library |
| @react-navigation/native-stack | ^7.15.1 | check_circle | check_circle | Stack navigation |
| @react-navigation/bottom-tabs | ^7.16.1 | check_circle | check_circle | Bottom tab navigation |
| @react-navigation/drawer | ^7.10.2 | check_circle | check_circle | Drawer/side menu navigation |
| @react-navigation/stack | ^7.9.2 | check_circle | check_circle | Stack navigation (legacy) |
| react-native-screens | ^4.25.2 | check_circle | check_circle | Native screen optimization |
| react-native-safe-area-context | ^5.5.2 | check_circle | check_circle | Safe area handling |
These libraries enable map rendering and location tracking within the application.
| Package | Version | Customer | Partner | Purpose |
|---|---|---|---|---|
| @maplibre/maplibre-react-native | ^10.2.1 | check_circle | check_circle | Map rendering |
| react-native-maps | ^1.27.2 | check_circle | check_circle | Alternative map rendering |
| @react-native-community/geolocation | ^3.4.0 | check_circle | check_circle | GPS location services |
| react-native-android-location-enabler | ^3.0.1 | check_circle | check_circle | Android location services |
| react-native-fused-location | ^1.1.2 | cancel | check_circle | Fused location provider (Partner only) |
Firebase is integrated to support real-time notifications and data synchronization.
| Package | Version | Customer | Partner | Purpose |
|---|---|---|---|---|
| @react-native-firebase/app | ^24.0.0 | check_circle | check_circle | Firebase core |
| @react-native-firebase/database | ^24.0.0 | check_circle | check_circle | Real-time database |
| @react-native-firebase/messaging | ^24.0.0 | check_circle | check_circle | Push notifications |
| @notifee/react-native | ^9.1.8 | check_circle | cancel | Enhanced notifications (Customer only) |
These libraries enhance the user interface and animation experience.
| Package | Version | Customer | Partner | Purpose |
|---|---|---|---|---|
| react-native-reanimated | ^4.3.1 | check_circle | check_circle | Smooth animations |
| react-native-gesture-handler | ^2.31.2 | check_circle | check_circle | Gesture-based interactions |
| lottie-react-native | ^7.3.8 | check_circle | check_circle | Animated illustrations |
| react-native-paper | ^5.15.3 | check_circle | check_circle | Material Design components |
| react-native-vector-icons | ^10.3.0 | check_circle | check_circle | Icon library |
| react-native-svg | ^15.15.5 | check_circle | check_circle | SVG rendering |
| react-native-linear-gradient | ^2.8.3 | check_circle | check_circle | Gradient backgrounds |
| react-native-reanimated-carousel | ^4.0.3 | check_circle | check_circle | Carousel/slider component |
| react-native-animatable | ^1.4.0 | check_circle | check_circle | Pre-built animations |
| react-native-drop-shadow | ^1.0.3 | check_circle | check_circle | Drop shadow effects |
| react-native-shadow-2 | ^7.1.2 | cancel | check_circle | Advanced shadow effects (Partner only) |
These libraries enable the application to interact with native device capabilities.
| Package | Version | Customer | Partner | Purpose |
|---|---|---|---|---|
| react-native-image-picker | ^8.2.1 | check_circle | check_circle | Image selection from camera/gallery |
| react-native-fs | ^2.20.0 | check_circle | check_circle | File system access |
| react-native-haptic-feedback | ^3.0.0 | check_circle | check_circle | Device vibration/haptic feedback |
| react-native-device-info | ^15.0.2 | check_circle | cancel | Device information (Customer only) |
| react-native-sound | ^0.13.0 | check_circle | cancel | Audio playback (Customer only) |
| @react-native-async-storage/async-storage | ^3.1.0 | check_circle | check_circle | Local data persistence |
| @react-native-community/netinfo | ^12.0.1 | check_circle | check_circle | Network connectivity monitoring |
| @react-native-community/datetimepicker | ^9.1.0 | check_circle | check_circle | Date/time picker component |
| @react-native-clipboard/clipboard | ^1.16.3 | check_circle | cancel | Clipboard access (Customer only) |
| @react-native-picker/picker | ^2.11.4 | check_circle | check_circle | Dropdown/picker component |
The application integrates multiple payment gateways to support secure online transactions.
| Package | Version | Customer | Partner | Purpose |
|---|---|---|---|---|
| react-native-razorpay | ^3.0.0 | check_circle | check_circle | Razorpay payment gateway |
| flutterwave-react-native | ^1.0.4 | check_circle | check_circle | Flutterwave payment gateway |
Additional utility libraries used across the applications.
| Package | Version | Customer | Partner | Purpose |
|---|---|---|---|---|
| i18next | ^26.3.1 | check_circle | check_circle | Internationalization |
| react-i18next | ^17.0.8 | check_circle | check_circle | React i18next integration |
| react-native-webview | ^13.16.1 | check_circle | check_circle | Web content rendering |
| react-native-version-number | ^0.3.6 | check_circle | check_circle | App version information |
| react-native-worklets | ^0.9.1 | check_circle | check_circle | Reanimated worklets |
| react-native-get-random-values | ^2.0.0 | check_circle | cancel | Cryptographic random values (Customer only) |
| @react-native-masked-view/masked-view | ^0.3.2 | check_circle | cancel | Masked view component (Customer only) |
These libraries are specific to the Customer application.
| Package | Version | Purpose |
|---|---|---|
| @kanelloc/react-native-animated-header-scroll-view | ^1.0.0 | Animated header scroll view |
| react-native-animated-loader | ^1.0.0 | Animated loading indicators |
| react-native-app-intro-slider | ^4.0.4 | Onboarding/intro slides |
| react-native-calendars | ^1.1314.0 | Calendar component for booking |
| react-native-gifted-chat | ^3.3.3 | Chat/messaging interface |
| react-native-internet-connection-alert | ^0.1.9 | Internet connection alerts |
| react-native-modal | ^14.0.0-rc.1 | Modal dialog components |
| react-native-pager-view | ^8.0.2 | Pager/swipe view |
| react-native-phone-input | ^1.3.7 | Phone number input with country codes |
| react-native-progress | ^5.0.1 | Progress bars and indicators |
| react-native-ratings | ^8.1.0 | Star rating component |
| react-native-raw-bottom-sheet | ^3.0.0 | Bottom sheet component |
| react-native-skeleton-placeholder | ^5.2.4 | Skeleton loading placeholders |
| react-native-ui-stepper | ^1.2.4 | UI stepper component |
| react-native-dialog | ^9.3.0 | Dialog boxes |
| react-native-dialog-input | ^1.0.8 | Input dialog boxes |
| react-native-easy-content-loader | ^0.3.2 | Content loading placeholders |
| react-native-toast-message | - | Toast notification messages |
File Location: android/build.gradle
| Configuration | Value |
|---|---|
| Build Tools Version | 35.0.0 |
| Minimum SDK Version | 24 |
| Compile SDK Version | 35 |
| Target SDK Version | 35 |
| Android NDK Version | 27.1.12297006 |
| Kotlin Version | 2.0.21 |
classpath("com.android.tools.build:gradle:8.7.2")
classpath("com.facebook.react:react-native-gradle-plugin")
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin")
classpath 'com.google.gms:google-services:4.4.2'
The DrMech Admin Panel provides complete control over the platform. Below is the detailed menu structure and functionality.
| Menu Section | Sub-Menu Items | Functionality |
|---|---|---|
| Dashboard | ||
| Dashboard | - | Overview of platform analytics, revenue, and statistics |
| App Configuration | ||
| App Versions | - | Manage and update app versions for customers and partners |
| Settings | - | General platform settings and configurations |
| Content Management | ||
| Banners | - | Create and manage promotional banners for app home screen |
| Financial Settings | ||
| Taxes | - | Configure tax rates (GST, service tax) applicable to services |
| Platform Management | ||
| Statuses | - | Manage service status options (Pending, Accepted, In Progress, Completed) |
| Referral Settings | - | Configure referral program rewards and settings |
| FCM Notifications | - | Configure Firebase Cloud Messaging for push notifications |
| Service Management | ||
| Service Types | - | Define service categories (Engine Repair, Body Repair, Tire, Wash, Battery, Full Service) |
| Service Categories | - | Manage sub-categories under each service type |
| Services | - | Manage all available services with pricing and descriptions |
| Service Requests | - | View and manage all customer service requests |
| Service Statuses | - | Track service progress status for all active services |
| Service Promo Codes | - | Create and manage promotional discount codes |
| App Settings | ||
| Customer App Settings | - | Configure customer app settings and features |
| Map Settings | - | Configure map integration and location services |
| Partner App Settings | - | Configure partner app settings and features |
| Customer Management | ||
| Customers | - | View and manage all registered customers |
| Customer Wallet History | - | View customer wallet transactions and balances |
| Partner Management | ||
| Partners Module | - | Manage all registered partners and their profiles |
| Documents | - | Review and verify partner documents |
| Earnings | - | View partner earnings and commission breakdown |
| Wallet Histories | - | View partner wallet transactions |
| Withdrawals | - | Manage partner withdrawal requests and payouts |
| Payment Management | ||
| Payments | - | View and manage all payment transactions |
| Payment Types | - | Configure accepted payment methods (Card, UPI, Wallet, Net Banking) |
| Payment Modes | - | Manage payment mode configurations |
| Content & Legal | ||
| Faq Categories | - | Organize frequently asked questions by categories |
| Faqs | - | Create and manage FAQs for customers and partners |
| Privacy Policies | - | Manage privacy policy content |
| Terms And Conditions | - | Manage terms and conditions content |
| Support | ||
| Customer Enquiries | - | View and respond to customer support enquiries |
http://yourdomain.com/admin
Default Credentials: admin / admin
Before installing, ensure your server meets these requirements:
Extract the downloaded package. You will find two folders: Admin/ (Laravel backend) and Frontend/ (React).
Copy both folders into xampp/htdocs/
xampp/htdocs/Admin and xampp/htdocs/Frontend
cd C:\xampp\htdocs\AdminRun Composer install:
composer installIf Composer is not installed, download from getcomposer.org
If .env doesn't exist, create from example:
cp .env.example .env (Linux/Mac) or copy .env.example .env (Windows)Open Admin/.env and update these values:
APP_NAME=YourAppName
APP_ENV=local
APP_DEBUG=true
APP_URL=your-api-url
IMG_URL=your-api-url/public/uploads/
APP_MODE=DEMO
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name
DB_USERNAME=your_db_username
DB_PASSWORD=your_db_password
MAIL_HOST=smtp.yourmail.com
MAIL_PORT=587
MAIL_USERNAME=your_email@example.com
MAIL_PASSWORD=your_email_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS="your_email@example.com"
MAIL_FROM_NAME="${APP_NAME}"
ROUTEMAPPY_API_KEY=your_routemappy_api_key
ROUTEMAPPY_BASE_URL=https://api.routemappy.com/v1
RouteMappy provides mapping, directions, geocoding, and distance matrix services.
Firebase is required for push notifications, real-time database features, and other Firebase services. Before using the application, configure your own Firebase project.
your-app-name-firebase-adminsdk.json).Copy the downloaded Firebase JSON file into the following directory:
Admin/config/your-app-name.json
FIREBASE_FILE=your-app-name.json
FIREBASE_DB=https://your-project.firebaseio.com
FCM_SERVER_KEY=your_fcm_server_key
FCM_SENDER_ID=your_fcm_sender_id
Firebase Connected
Once the JSON file is uploaded and the .env values are updated,
the application will automatically connect to your Firebase project.
Security Notice
Never share your Firebase Service Account JSON file or upload it to a public Git repository. This file contains sensitive credentials with administrative access to your Firebase project.
TWILIO_SID=your_twilio_sid
TWILIO_TOKEN=your_twilio_token
TWILIO_FROM=+1234567890
Required only if SMS verification is enabled.
MODE=DEMO
Set to LIVE for production mode.
Open http://localhost/phpmyadmin and create a new database.
Example: your_database — Use the same name as DB_DATABASE in your .env file.
Import the SQL file from Admin/database/database.sql using phpMyAdmin.
The SQL file contains all required tables and initial data.
php artisan storage:linkThis command is required for image uploads to work properly.
php artisan optimize:clearOr run individually: php artisan config:clear, php artisan cache:clear, php artisan route:clear, php artisan view:clear
php artisan serveLaravel will run on http://127.0.0.1:8000
cd C:\xampp\htdocs\Frontendnpm installnode_modules and package-lock.json, then run npm install again.
Sometimes npm may report missing packages. Install them individually:
npm install react-router-dom
npm install chart.js
npm install react
npm install react-chartjs-2
npm install react-dom
npm install react-toastify
npm install axios
npm install firebase
npm install lucide-react
If your project includes .env file, update these values:
VITE_APP_NAME=Your App Name
VITE_API_ORIGIN=your-api-url
npm run devReact will run on http://localhost:5173 (or the port shown in terminal).
Use these default credentials to log in to the admin panel:
| Username: | admin |
| Password: | admin |
| Access Level: | Super Administrator |
Security Alert: Change these credentials immediately after first login.
Install Composer, restart Command Prompt, then run composer install.
Check PHP version with php -v. Ensure PHP is added to system PATH.
Run composer install to install all dependencies.
Run npm install from the Frontend folder.
Install Node.js and restart your terminal.
Run php artisan storage:link and verify IMG_URL in .env.
Verify database name, username, password in .env, and ensure MySQL is running.
Check Firebase JSON file, FIREBASE_DB, and Sender ID.
Verify ROUTEMAPPY_API_KEY and ensure the API key has necessary permissions.
Verify Twilio SID, Token, Phone Number, and account balance.
Verify SMTP credentials and ensure your mail provider allows SMTP access.
APP_ENV=productionAPP_DEBUG=falseAPP_URL and IMG_URLstorage and bootstrap/cachephp artisan optimizeBefore installing, ensure your system meets these requirements:
dr-mech-landing-page/
├── node_modules/ # Dependencies
├── public/ # Static assets
│ └── vite.svg # Vite favicon
├── src/
│ ├── assets/ # Images, icons, videos
│ │ ├── Accheck.webp # AC Service image
│ │ ├── BatteryCheck.webp # Battery service image
│ │ ├── Carwashing.webp # Car wash image
│ │ ├── contact.webp # Contact section bg
│ │ ├── Drmechlanding.webm # Hero video
│ │ ├── Launderposter.webp # Video poster
│ │ ├── logo.webp # Company logo
│ │ ├── Logo.webp # Alternative logo
│ │ ├── Mockup.webp # App mockup
│ │ └── Periodicservices.webp # Periodic service
│ ├── Data/
│ │ └── js data.js # ALL content data
│ ├── Landingpage/
│ │ └── Landingpage.jsx # Main component
│ ├── Theme/
│ │ └── js theme.js # Theme configuration
│ ├── App.css # Global styles
│ ├── App.jsx # Root component
│ ├── index.css # Tailwind imports
│ └── main.jsx # Entry point
├── .gitignore # Git ignore rules
├── eslint.config.js # ESLint configuration
├── index.html # HTML template
├── package-lock.json # Locked dependencies
├── package.json # Project dependencies
├── README.md # Project documentation
└── vite.config.js # Vite configuration
Extract the downloaded ZIP file to your desired location.
~/Projects/dr-mech-landing-page/
cd path/to/dr-mech-landing-page
Run npm install to install all required packages:
npm install
Launch the development server:
npm run dev
The application will be available at http://localhost:5173
Open src/Data/js data.js to modify all content. Here's what each section controls:
// Navbar configuration
export const navbarData = {
logo, // Imported from assets
menuLinks: [
{ id: 'features', label: 'Features' },
{ id: 'how-it-works', label: 'How It Works' },
{ id: 'testimonials', label: 'Testimonials' },
{ id: 'faq', label: 'FAQ' },
{ id: 'contact', label: 'Contact' }
],
download: {
label: 'Download App',
url: 'https://play.google.com/store/apps/details?id=com.dr_mech_pro.customer'
}
};
// Hero section configuration
export const heroData = {
video: ServiceVideo, // Background video
poster: launderPoster, // Video thumbnail
headingHighlight: 'Next-Gen Vehicle Care,',
headingMain: 'One Tap Away.',
description: 'Manage all your car and bike services with a smart app...',
buttons: [
{ label: 'Download on Play Store', icon: 'fab fa-google-play', href: '...' },
{ label: 'Explore the App', icon: 'fas fa-arrow-right', href: '...' }
]
};
// Features section
export const featuresData = {
heading: 'Powerful Features',
subheading: 'Dr Mech is loaded with smart tools...',
items: [
{
title: 'Multi-Service Booking',
description: 'Book multiple vehicle services in one go...',
icon: 'fa-tasks'
},
// ... more features
]
};
// Services configuration
export const servicesData = {
heading: 'Our Services',
subheading: 'Reliable car and bike maintenance services...',
items: [
{
title: 'AC Service & Repair',
description: 'Keep your vehicle cool with expert AC diagnostics...',
image: ACServiceImg,
points: ['AC Gas Refill', 'Cooling Performance Check', 'AC Filter Replacement']
},
// ... more services
]
};
// How it works steps
export const howItWorksData = {
heading: 'How Dr Mech Works',
subheading: 'Dr Mech simplifies car and bike servicing...',
steps: [
{ icon: 'fa-mobile-alt', title: 'Book via App', desc: 'Choose your vehicle...' },
// ... more steps
]
};
// Testimonials
export const testimonialsData = {
heading: 'What Our Users Say',
subheading: 'Hear from customers and vendors who love using Dr mech.',
testimonials: [
{
id: 1,
name: 'Ravi Mehta',
role: 'Customer',
rating: 5,
text: 'Dr mech made my car service hassle-free!...'
},
// ... more testimonials
]
};
// App section (Why choose us / Mobile app)
export const appSection = {
appScreen, // Mockup image
title: 'Experience Our Mobile App',
description: 'Download the Dr mech app for a seamless booking experience...',
features: [
{ icon: 'fas fa-clipboard-list', title: 'Order History', description: '...' },
// ... more features
],
buttons: [
{ type: 'google', labelTop: 'Get it on', labelBottom: 'Google Play', link: '...' },
{ type: 'apple', labelTop: 'Download on the', labelBottom: 'App Store', link: '#' }
]
};
// FAQ section
export const faqData = {
heading: 'Frequently Asked Questions',
subheading: 'Find answers to common questions about Dr mech.',
faqs: [
{
question: 'How do I book a car or bike service on Dr mech?',
answer: 'Download the Dr mech app, register your vehicle...'
},
// ... more FAQs
]
};
// Contact section with WhatsApp
export const contactData = {
bgImage, // Background image
heading: "Need Help? We're Just a Message Away",
subheading: 'Stuck with a booking or have questions...',
whatsapp: {
number: 'Your Number',
message: 'Your Message'
},
buttonLabel: 'Contact Us'
};
// Footer configuration
export const Footer = {
companyInfo: {
name: 'Dr Mech',
description: 'Seamless car and bike service at your fingertips...',
socialLinks: [
{ icon: 'fab fa-facebook-f', url: '#' },
// ... more social links
]
},
quickLinks: [
{ name: 'Features', href: '#features' },
// ... more links
],
services: ['AC Service & Repair', 'Car Wash & Detailing', ...],
downloadApp: {
text: 'Get the Dr Mech app for iOS and Android...',
stores: [
{ label: 'Google Play', url: '...', icon: 'fab fa-google-play' },
// ... more stores
]
},
footerBottom: {
copyright: '© 2025 Dr Mech. All rights reserved.',
policies: [
{ name: 'Privacy Policy', url: '#' },
// ... more policies
]
}
};
Open src/Theme/js theme.js to customize colors and fonts:
// src/Theme/js theme.js
const theme = {
colors: {
primary: '#FFC423', // Brand Yellow
primaryDark: '#e0ac00', // Darker hover shade
primaryLight: '#ffe68c', // Light highlight
primaryMuted: '#FFC42333', // Muted for backgrounds
black: '#1A1A1A', // Text color
white: '#FFFFFF',
gray: '#F7F7F7', // Background
grayDark: '#CCCCCC', // Borders
textDefault: '#1A1A1A',
textLight: '#666666',
success: '#10a84b',
danger: '#FF4D4D',
info: '#2D9CDB',
overlay: 'rgba(0, 0, 0, 0.1)'
},
font: {
base: "'Poppins', sans-serif",
heading: "'Poppins', sans-serif"
}
};
export default theme;
#FFC423 - Primary Yellow (Brand Color)#1A1A1A - Text Color#F7F7F7 - Background Gray
All images are stored in src/assets/ folder:
| File Name | Purpose | Used In |
|---|---|---|
| logo.webp / Logo.webp | Company logo | Navbar, Footer |
| Drmechlanding.webm | Hero background video | Hero Section |
| Launderposter.webp | Video poster/thumbnail | Hero Section |
| Mockup.webp | App mockup/phone image | App Section |
| Accheck.webp | AC Service image | Services Section |
| BatteryCheck.webp | Battery service image | Services Section |
| Carwashing.webp | Car wash service image | Services Section |
| Periodicservices.webp | Periodic service image | Services Section |
| contact.webp | Contact section background | Contact Section |
src/assets/ with your own image. Keep the same filename to avoid updating imports, or update the import path in js data.js.
| Command | Description |
|---|---|
npm run dev |
Start development server at localhost:5173 |
npm run build |
Build production-ready files in dist/ folder |
npm run preview |
Preview the production build locally |
npm run lint |
Run ESLint to check code quality |
npm run build
This creates a dist/ folder with optimized files.
npx vercel --proddist/ foldernpm run build and commitdist/ folder to S3 bucketDelete node_modules and package-lock.json, then run npm install again.
Install Node.js from nodejs.org and restart your terminal.
Check image paths in src/Data/js data.js. Ensure images are in src/assets/ folder.
Check if Drmechlanding.webm exists in src/assets/. Ensure the file is not corrupted.
Run npm run dev -- --port 3000 to use a different port.
Clear browser cache (Ctrl+Shift+Delete) or use incognito mode.
npm run build and upload the dist/ folder to your hosting provider.
Download and install Node.js from your browser by visiting the official website: https://nodejs.org/en/download
# Verify Node.js installation
node -v
npm -v
Download and install Android Studio on your system from: https://developer.android.com/studio
Copy the customer folder and paste it into your desired location.
Note: If you rename the app folder, you must update the bundle ID.
For Android, open:
folder_open Drmech_customer/android/app/src/main/AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.Drmech.customer">
...
</manifest>
Change the package attribute to your new bundle ID, for example:
package="com.mycompany.mycustomerapp"
For iOS, open:
folder_open ios/CustomerApp.xcodeproj
Update the Bundle Identifier under the app's target settings in Xcode.
The bundle ID for the Drmech Customer app has been successfully updated in your system. Follow the same process for other applications.
folder_open Drmech/android/app/src/main/res/values/strings.xml
<!-- In strings.xml -->
<string name="app_name">Your App Name</string>
res/mipmap-* directoriesres/mipmap-anydpi-v26folder_open Drmech/android/app/build.gradle
// In app/build.gradle
android {
defaultConfig {
applicationId "com.yourcompany.yourapp"
}
}
Warning: Changing package name after release will be treated as a new app by Google Play.
If you need additional features, modifications, or integrations in this application, we offer custom development services to tailor the app to your specific needs.
For any custom work requests, please get in touch with us:
Note: Custom work may involve additional costs and development time depending on the complexity of the requested changes.
Track the evolution of the Dr Mech platform through major releases, feature additions, improvements, and optimizations.
Added support for multiple customer vehicles with vehicle history tracking and default vehicle selection.
Integrated RouteMappy for address search, location services, route optimization, and service area management.
Added complete dark mode and light mode support across customer and partner applications.
Added support for Paystack and Flutterwave payment processing.
FIREBASE_CREDENTIALS=firebase.json
FIREBASE_DATABASE_URL=https://your-project-id.firebaseio.com
Place the JSON file in: /admin/config/firebase.json
google-services.json fileDrmech_customer/android/app
If you haven't created a Firebase project yet, follow the Admin Configuration steps above first.
Clients must update the bundle identifier to match their application package.
Example: com.clientname.Drmech
Update in:
folder_open android/app/build.gradle
applicationId "com.clientname.Drmech"
Rename the Java package directory:
folder_open android/app/src/main/java/com/clientname/Drmech
keytool -genkey -v \
-keystore Drmech.keystore \
-alias Drmech \
-keyalg RSA \
-keysize 2048 \
-validity 10000
Place the keystore file inside:
folder_open android/app/
Update the signing configuration in:
folder_open android/gradle.properties
MYAPP_UPLOAD_STORE_FILE=Drmech.keystore
MYAPP_UPLOAD_KEY_ALIAS=Drmech
MYAPP_UPLOAD_STORE_PASSWORD=yourpassword
MYAPP_UPLOAD_KEY_PASSWORD=yourpassword
cd android
./gradlew assembleReleaseAPK location: android/app/build/outputs/apk/release/app-release.apk
cd android
./gradlew bundleReleaseOutput: android/app/build/outputs/bundle/release/app-release.aab
iOS development requires a macOS system with Apple Xcode installed. Xcode provides all necessary tools, simulators, and SDKs required to build and run the application on iOS devices.
Ensure that you have the latest version of Xcode installed from the Mac App Store and have accepted all license agreements before proceeding.
The iOS project uses CocoaPods to manage native dependencies. You must install all required pods before running the application.
Follow the steps below:
cd ios
pod install
cd ..
This command installs all required native libraries and links them with your iOS project.
Firebase is used for push notifications and other backend services. You need to download and configure the Firebase iOS configuration file.
GoogleService-Info.plist
Place the downloaded file inside the following directory:
folder_open ios/Drmech/GoogleService-Info.plist
GoogleService-Info.plist file into the Project Navigator.This configuration enables Firebase services such as push notifications and analytics.
The Bundle Identifier uniquely identifies your application in the Apple ecosystem. It must match the identifier configured in Firebase and Apple Developer account.
ios/Drmech.xcworkspaceExample: com.clientname.taxiapp
Ensure that the Bundle Identifier matches exactly with the one used in the Firebase configuration file, otherwise services may not work correctly.
Application icons are used across the app, App Store, and device home screen. You need to replace the default icons with your branding assets.
folder_open ios/Drmech/Images.xcassets/AppIcon.appiconset
Replace all icon sizes inside this folder with your custom icons while maintaining the required dimensions.
Replace the main logo used inside the application UI:
folder_open src/assets/logo.png
Recommended size: 500 × 500 PNG (transparent background preferred)
Before running the application, make sure the Metro bundler is running.
npm start
npx react-native run-ios
This command will build the app and launch it in the iOS Simulator. Alternatively, you can open the project in Xcode and run it directly on a simulator or a physical device.
To publish your application to the App Store, you must generate a release build using Xcode.
ios/Drmech.xcworkspaceAfter uploading, you can manage your app release from App Store Connect.
Application API configuration is located in:
folder_open src/config/const.js
Update the following values with client server details:
export const BASE_URL = "https://api.clientdomain.com"
export const API_URL = "https://api.clientdomain.com/v1"
export const IMG_URL = "https://cdn.clientdomain.com"
Replace the logo file located at:
folder_open src/assets/logo.png
Recommended format: 500 × 500 PNG
Replace launcher icons in:
folder_open android/app/src/main/res/
Folders:
Replace icons in:
folder_open ios/Drmech/Images.xcassets/AppIcon.appiconset
The application uses MapLibre for map rendering and location-based services.
These features enable the application to display driver locations, trip routes, and navigation paths within the app.
In the place of enter_map_key in your .env file, add your RouteMappy API key as shown below:
MAP_KEY=enter_map_key
If you need RouteMappy Maps for your application, feel free to contact us. It functions as a customizable map solution, available for purchase.
Edit the following file:
folder_open Drmech/src/config/Constants.js
export const ROUTEMAPPY_API_KEY = 'enter_your_routemappy_key';
If you need RouteMappy Maps for your application, feel free to contact us. It functions as a customizable map solution, available for purchase.
Payment credentials must be configured on the backend server to enable transaction processing.
Required credentials typically include:
These credentials are used by the backend API to securely communicate with the payment gateway.
Sensitive credentials such as secret keys must never be stored in the mobile application. All payment validation and transaction verification should be handled securely through the backend server.
This guide covers the modern Firebase Cloud Messaging v1 API. It uses OAuth 2.0 for secure authentication and provides more features than the deprecated legacy API.
Important
The legacy FCM HTTP API (using Server Keys) is deprecated and will be removed. Always use the Firebase Cloud Messaging HTTP v1 API for all new implementations.
Go to Firebase Console and select your project.
Navigate to Project Settings (gear icon) → Service accounts tab.
Click "Generate new private key" in the Firebase Admin SDK section.
Confirm by clicking "Generate key" in the popup.
A JSON file (your-project-id-firebase-adminsdk.json) will be downloaded automatically. This file contains your service account credentials.
shield Security Keep this file secure. It contains sensitive credentials that provide full access to your Firebase services. Never commit this file to a public repository or share it with unauthorized users.
Copy the downloaded JSON file to your project's secure configuration directory:
Recommended Location: /admin/config/firebase-service-account.json
Update your backend .env file with the following configuration:
# Firebase Cloud Messaging v1 Configuration
FIREBASE_PROJECT_ID=your-project-id
FCM_DRIVE_PATH=/path/to/firebase-service-account.json
info
Note
The FCM_DRIVE_PATH points to your Firebase Service Account JSON file, and
FIREBASE_PROJECT_ID is your Firebase project identifier, which can be found in the Firebase Console.
Here's a secure implementation example for sending push notifications using the FCM v1 API with OAuth 2.0 authentication:
// FCM v1 API Notification Sender
// Uses OAuth 2.0 authentication with service account
use Google\Cloud\Firestore\FirestoreClient;
use Google\Cloud\Core\ServiceBuilder;
// Initialize Firebase with service account
$firestore = new FirestoreClient([
'keyFilePath' => env('FCM_DRIVE_PATH'),
'projectId' => env('FIREBASE_PROJECT_ID')
]);
// Construct the FCM v1 endpoint
$url = "https://fcm.googleapis.com/v1/projects/" . env('FIREBASE_PROJECT_ID') . "/messages:send";
// Get OAuth 2.0 access token
$token = $firestore->getCredentialsFetcher()?->fetchAuthToken();
$accessToken = $token['access_token'];
// Construct the notification payload (v1 format)
$data = [
"message" => [
"token" => "device_registration_token_here",
"notification" => [
"title" => "Notification Title",
"body" => "Notification Message Body"
],
"data" => [
"key1" => "value1",
"key2" => "value2"
],
"android" => [
"priority" => "high"
],
"apns" => [
"headers" => [
"apns-priority" => "10"
]
]
]
];
// Send the notification
$options = [
'http' => [
'header' => "Authorization: Bearer $accessToken\r\n" .
"Content-Type: application/json\r\n",
'method' => 'POST',
'content' => json_encode($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
Verify the service account JSON file path is correct and the file has proper read permissions. Ensure the project ID matches.
The device registration token may be invalid or expired. Request a new token from the client app.
The service account needs the "Firebase Cloud Messaging Admin" role in IAM settings.
Success
The modern FCM HTTP v1 API provides enhanced security, improved reliability, and supports all the latest Firebase Cloud Messaging features.
Log in to your Gmail account and click on your profile picture in the top right corner. Select "Manage your Google Account" from the dropdown menu.
Navigate to the "Security" tab in the left sidebar.
Under "Signing in to Google," enable 2-Step Verification if not already active.
Note: You must have 2-Step Verification enabled to generate an App Password.
While still in the Security section:
Find the "App passwords" option (under 2-Step Verification)
Click "create"
Copy the 16-character password shown
Add these configurations to your .env file:
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=youremail@gmail.com
MAIL_PASSWORD=your_generated_app_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=youremail@gmail.com
MAIL_FROM_NAME="${APP_NAME}"
Verify 2-Step Verification is enabled and you're using an App Password.
Check if your server/firewall allows outbound connections on port 587.
Gmail has sending limits (500 emails/day for free accounts).
Advisable: Copy the source files to D: or E: drive rather than C: drive.
adb devicesConfirm the device appears in the list.
cd D:\Drmech_customernpm installnpx react-native run-androidnpm install or yarn install)Cause: Missing or outdated Node.js version, unstable internet connection, or running commands from the wrong directory.
Solution:
npm installrm -rf node_modules package-lock.json
npm installCause: Missing dependencies, incorrect import paths, or incomplete project extraction.
Solution:
npm installCause: Firebase project setup is incomplete or configuration files are missing.
Solution:
google-services.json (Android)GoogleService-Info.plist (iOS)Cause: Missing or incomplete environment configuration.
Solution:
.env.Example:
API_URL=https://your-api-url.com
APP_NAME=DrMechCause: USB debugging is disabled or device drivers are not installed.
Solution:
adb devicesCause: Invalid, missing, or incorrectly entered Envato purchase code.
Solution:
Cause: Missing configuration, incorrect API URL, or application initialization errors.
Solution:
Cause: Incorrect database credentials or failed SQL import.
Solution:
Cause: Firebase Cloud Messaging (FCM) is not configured properly.
Solution:
Admin Panel → Settings → FCM Notifications
Cause: RouteMappy configuration is incomplete or map services are unavailable.
Solution:
Admin Panel → App Configuration → Map Settings
Cause: Partner account is awaiting administrator approval.
Solution:
Partners Module → Documents
Cause: Payment credentials are incorrect or payment methods are disabled.
Solution:
Payments → Payment Types
Payments → Payment Modes
Cause: SMS service provider configuration is incomplete or delayed.
Solution:
Cause: Incorrect credentials, inactive account, or account suspension.
Solution:
Cause: File size exceeds server limits or unsupported file format.
Solution:
Cause: Partner service area, categories, or status configuration is incorrect.
Solution:
If you encounter any issues that are not covered in this documentation, please contact our support team.
Monday – Friday
Response Time: Within 24–48 Business Hours
This will help us provide faster and more accurate assistance.
If you encounter an error that is not listed above, please feel free to contact our support team for further assistance. We’re here to help.
If you need any custom work, additional features, or modifications to this application, our team is ready to help you build and scale your project efficiently.
Custom feature development based on your business needs
UI/UX design improvements and branding customization
Third-party API integrations (payment, SMS, maps, etc.)
Performance optimization and scalability improvements
Full project setup and deployment assistance
Building large-scale applications from scratch
You can hire our development team for complete project development, from idea to deployment, including frontend, backend, and server setup.
+91 9150 441 443
sales@menpanitech.com
Custom development services may involve additional cost and timeline depending on the scope and complexity of the project.
We’re happy to collaborate and bring your ideas to life