These services are not included with the purchase and must be configured by the buyer.
Admin Panel + Customer Website
Built with Laravel 13.x + React 19.2.8 (Inertia.js)
React Native Mobile App
Built with React Native 0.86.2
info Note:The Unified Application contains both the Admin Panel and Customer Website in one codebase. The Customer Application is a separate React Native mobile app.
Welcome to CarFindo, a modern used-car marketplace platform designed for automotive dealers, car resellers, and mobility businesses. It brings the entire car-buying and selling journey into one platform — from discovery and inspection to negotiation, purchase, and post-sale reputation.
Laravel + React (Admin Panel + Customer Website)
React Native (Mobile App - Separate)
This platform is distributed as a white-label solution, allowing complete customization of branding, configurations, and backend services to match your business requirements and scale your used-car operations efficiently.
Basic understanding of React-based website development and backend setup (Laravel / API) is recommended before installation and customization.
CarFindo integrates with third-party services to provide real-time chat functionality, email communications, cloud storage, and location-based services. These services are not included with the purchase package and must be configured using your own accounts and credentials where applicable.
| Service | Purpose | Required |
|---|---|---|
| Firebase Realtime Database | Real-time Chat & Messaging Between Buyers & Sellers | Yes |
| SMTP Mail Service (Gmail) | Email OTP Verification, Password Reset & Notifications | Yes |
| RouteMappy | Location Search & Place Autocomplete | Yes |
CarFindo utilizes Firebase Realtime Database for real-time chat functionality between buyers and sellers. Firebase enables instant message delivery, read receipts, and live conversation updates without requiring page refresh.
To set up Firebase Realtime Database for CarFindo:
CarFindo uses SMTP mail services for email OTP verification, password reset emails, and system notifications. Gmail's SMTP service is recommended for its reliability and ease of configuration.
To configure SMTP for CarFindo:
CarFindo utilizes RouteMappy for location search and place autocomplete functionality. RouteMappy provides location-based services for car listings, search, and place discovery.
To set up RouteMappy for CarFindo:
Firebase project setup, SMTP credentials, cloud storage accounts, RouteMappy API key, hosting services, domain registration, and SSL certificates are not included with the purchase package. Buyers are responsible for creating and maintaining their own third-party service accounts and subscriptions where applicable.
Ensure the following software versions are installed before proceeding:
| Tool/Software | Minimum Version | Recommended Version | Purpose |
|---|---|---|---|
| PHP | 8.3 | 8.3+ | Laravel backend |
| Laravel | 13.8 | 13.x | PHP Framework |
| React | 19.2.8 | 19.x | UI Library (Customer Website in Unified App) |
| React Native | 0.86.2 | 0.86.x | Mobile App Framework (Customer App - Separate) |
| Node.js | 18+ | 20+ | React & npm scripts |
| MySQL | 8.0 | 8.0+ | Database |
| Composer | 2.x | 2.x | PHP dependency manager |
| npm | 9+ | 10+ | Package management |
| Android Studio | 2024.1 | 2024.1+ | Android APK/AAB build (Customer App) |
| Java JDK | 17 | 17+ | Android compilation |
| Xcode (macOS only) | 16.0 | 16.x+ | iOS IPA build (Customer App) |
| 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 |
{
"require": {
"php": "^8.3",
"bezhansalleh/filament-shield": "^4.3",
"filament/filament": "^5.0",
"inertiajs/inertia-laravel": "^3.1",
"laravel/framework": "^13.8",
"laravel/sanctum": "^4.3",
"laravel/tinker": "^3.0",
"spatie/laravel-permission": "^8.3",
"wireui/heroicons": "^2.10"
},
"require-dev": {
"fakerphp/faker": "^1.23",
"laravel/pail": "^1.2.5",
"laravel/pao": "^1.0.6",
"laravel/pint": "^1.27",
"mockery/mockery": "^1.6",
"nunomaduro/collision": "^8.6",
"phpunit/phpunit": "^12.5.12"
}
}
{
"dependencies": {
"@dnd-kit/core": "^6.3.1",
"@dnd-kit/sortable": "^10.0.0",
"@dnd-kit/utilities": "^3.2.2",
"@inertiajs/react": "^3.6.1",
"@vitejs/plugin-react": "^6.0.4",
"lucide-react": "^1.26.0",
"react": "^19.2.8",
"react-dom": "^19.2.8",
"react-easy-crop": "^6.2.3",
"react-phone-number-input": "^3.4.17",
"sonner": "^2.0.7",
"swiper": "^14.0.6"
}
}
{
"dependencies": {
"@react-native-async-storage/async-storage": "^3.1.1",
"@react-native-community/geolocation": "^3.4.0",
"@react-native/new-app-screen": "0.86.2",
"@react-navigation/drawer": "^7.13.8",
"@react-navigation/native": "^7.3.16",
"@react-navigation/native-stack": "^7.18.8",
"lucide-react-native": "^1.31.0",
"react": "19.2.3",
"react-native": "0.86.2",
"react-native-gesture-handler": "^3.1.0",
"react-native-linear-gradient": "^2.8.3",
"react-native-reanimated": "^4.5.3",
"react-native-safe-area-context": "^5.5.2",
"react-native-screens": "^4.27.0",
"react-native-svg": "^15.15.5"
},
"devDependencies": {
"@babel/core": "^7.25.2",
"@babel/preset-env": "^7.25.3",
"@babel/runtime": "^7.25.0",
"@react-native-community/cli": "20.1.0",
"@react-native-community/cli-platform-android": "20.1.0",
"@react-native-community/cli-platform-ios": "20.1.0",
"@react-native/babel-preset": "0.86.2",
"@react-native/eslint-config": "0.86.2",
"@react-native/jest-preset": "0.86.2",
"@react-native/metro-config": "0.86.2",
"@react-native/typescript-config": "0.86.2",
"@types/jest": "^29.5.13",
"@types/react": "^19.2.0",
"@types/react-test-renderer": "^19.1.0",
"eslint": "^8.19.0",
"jest": "^29.6.3",
"prettier": "2.8.8",
"react-test-renderer": "19.2.3",
"typescript": "^5.8.3"
}
}
http://localhost in your browserNote: It's necessary to have a basic knowledge in both server side, website, and mobile app development.
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 v10.x or higher
# Check PHP version
php --version # Should show 8.3 or higher
# Check Composer version
composer --version # Should show 2.x or higher
# Check MySQL version
mysql --version # Should show 8.0 or higher
# Check React Native version (Customer App)
npx react-native --version # Should show 0.86.x
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.
CarFindo is built using modern and scalable technologies to power the Unified Application (Admin Panel + Customer Website) and the Customer Application (React Native - Separate).
Before installing and running the application, ensure the following technologies and tools are installed with the recommended versions.
| Tool/Software | Minimum Version | Recommended Version |
|---|---|---|
| PHP | 8.3 | 8.3+ |
| Laravel | 13.8 | 13.x |
| Filament | 5.0 | 5.x |
| React (Customer Website) | 19.2.8 | 19.x |
| Inertia.js | 3.6.1 | 3.x |
| React Native (Customer App) | 0.86.2 | 0.86.x |
| Node.js | 18+ | 20+ |
| MySQL | 8.0 | 8.0+ |
| Composer | 2.x | 2.x |
| npm | 9+ | 10+ |
| Vite | 8.0 | 8.x |
| Tailwind CSS | 4.0 | 4.x |
| Android Studio | 2024.1 | 2024.1+ |
| Java JDK | 17 | 17+ |
| Xcode | 16.0 | 16.x+ |
| Category | Technology | Version | Purpose |
|---|---|---|---|
| Unified Application (Admin Panel + Customer Website) | |||
| Backend Language | PHP | 8.3+ | Server-Side Programming |
| Backend Framework | Laravel | 13.x | PHP Framework (Serves both Admin & Website) |
| Admin Panel | Filament | 5.0 | Admin Dashboard (within Laravel app) |
| Admin Security | Filament Shield | 4.3 | Admin Panel Security & Permissions |
| Role & Permission | Spatie Laravel Permission | 8.3 | User Roles & Permissions Management |
| Database | MySQL / MariaDB | 8.0+ / 10.6+ | Relational Database |
| Dependency Manager | Composer | 2.x | PHP Package Management |
| Frontend Framework | React | 19.2.8 | UI Library (Customer Website) |
| Routing | Inertia.js | 3.6.1 | Server-side routing (Laravel + React) |
| Build Tool | Vite | 8.x | Build tool & development server |
| CSS Framework | Tailwind CSS | 4.x | Utility-first CSS framework |
| Customer Application (React Native - Separate App) | |||
| Framework | React Native | 0.86.2 | Cross-platform mobile framework |
| UI Library | React | 19.2.3 | Application User Interface |
| Navigation | React Navigation | 7.x | Screen navigation |
| Gesture Handler | React Native Gesture Handler | 3.1.0 | Gesture-based interactions |
| Animations | React Native Reanimated | 4.5.3 | Smooth animations |
| Storage | Async Storage | 3.1.1 | Local data persistence |
| Location | Geolocation | 3.4.0 | GPS location services |
| Icons | Lucide React Native | 1.31.0 | Icon library |
| Gradients | Linear Gradient | 2.8.3 | Linear gradient effects |
| SVG | React Native SVG | 15.15.5 | SVG rendering |
| Third-Party Integrations | |||
| Real-time Chat | Firebase Realtime Database | Latest | Real-time messaging |
| Email Service | SMTP (Gmail) | Latest | Email OTP & notifications |
This platform integrates with Firebase Realtime Database and SMTP (Gmail) which require separate accounts and may incur additional costs. See full details in Overview →
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 managing Node.js versions and Android Studio SDK Manager for maintaining Android SDK compatibility.
CarFindo consists of two main components:
Laravel + React (Admin Panel + Customer Website)
React Native mobile app (Separate)
Unified Application: Laravel 13.x with Filament 5.0 (Admin) + React 19.2.8 with Inertia.js 3.6.1 (Customer Website) — Same codebase
Customer App: React Native 0.86.2 with React 19.2.3, React Navigation 7.x — Separate application
The unified application includes both the Laravel backend (Admin Panel) and React frontend (Customer Website) in the same codebase:
The Laravel backend uses the following PHP dependencies:
| Package | Version | Purpose |
|---|---|---|
| Production Dependencies | ||
| php | ^8.3 | Server-side scripting language |
| laravel/framework | ^13.8 | Laravel PHP Framework |
| filament/filament | ^5.0 | Admin panel framework |
| bezhansalleh/filament-shield | ^4.3 | Filament security & permissions |
| spatie/laravel-permission | ^8.3 | User roles & permissions |
| inertiajs/inertia-laravel | ^3.1 | Inertia.js server-side adapter |
| laravel/sanctum | ^4.3 | API authentication |
| laravel/tinker | ^3.0 | Artisan REPL & interactive shell |
| wireui/heroicons | ^2.10 | Heroicons for Blade/Filament |
| Development Dependencies | ||
| fakerphp/faker | ^1.23 | Fake data generation |
| laravel/pail | ^1.2.5 | Log viewer |
| laravel/pao | ^1.0.6 | Package auto-discovery optimizer |
| laravel/pint | ^1.27 | PHP code style fixer |
| mockery/mockery | ^1.6 | Mocking framework for tests |
| nunomaduro/collision | ^8.6 | Error handling for console |
| phpunit/phpunit | ^12.5.12 | PHP testing framework |
The React frontend (Customer Website) uses the following dependencies:
| Package | Version | Purpose |
|---|---|---|
| react | ^19.2.8 | UI Library |
| react-dom | ^19.2.8 | React DOM rendering |
| @inertiajs/react | ^3.6.1 | Inertia.js integration for server-side routing |
| @vitejs/plugin-react | ^6.0.4 | Vite plugin for React |
| @dnd-kit/core | ^6.3.1 | Drag & drop core functionality |
| @dnd-kit/sortable | ^10.0.0 | Sortable drag & drop lists |
| @dnd-kit/utilities | ^3.2.2 | Utilities for drag & drop |
| lucide-react | ^1.26.0 | Icon library |
| react-easy-crop | ^6.2.3 | Image cropping component |
| react-phone-number-input | ^3.4.17 | Phone number input with country codes |
| sonner | ^2.0.7 | Toast notifications |
| swiper | ^14.0.6 | Touch slider/carousel component |
The customer app is a separate React Native application with its own dependencies:
| Package | Version | Purpose |
|---|---|---|
| Core Libraries | ||
| react | 19.2.3 | UI Library |
| react-native | 0.86.2 | Cross-platform mobile framework |
| react-native-gesture-handler | ^3.1.0 | Gesture-based interactions |
| react-native-reanimated | ^4.5.3 | Smooth animations |
| react-native-safe-area-context | ^5.5.2 | Safe area handling |
| react-native-screens | ^4.27.0 | Native screen optimization |
| react-native-svg | ^15.15.5 | SVG rendering |
| react-native-linear-gradient | ^2.8.3 | Linear gradient effects |
| lucide-react-native | ^1.31.0 | Icon library |
| Navigation | ||
| @react-navigation/native | ^7.3.16 | Core navigation library |
| @react-navigation/native-stack | ^7.18.8 | Stack navigation |
| @react-navigation/drawer | ^7.13.8 | Drawer/side menu navigation |
| Storage & Location | ||
| @react-native-async-storage/async-storage | ^3.1.1 | Local data persistence |
| @react-native-community/geolocation | ^3.4.0 | GPS location services |
The CarFindo Admin Panel provides complete control over the platform. Below is the detailed menu structure and functionality.
| Menu Section | Sub-Menu Items | Fields / Functionality | |
|---|---|---|---|
| Dashboard | |||
| Dashboard | - | Landing page after login. Summary stats (customers, listings, leads, blog posts, subscribers, cities, categories) as cards/widgets. Click any stat to jump to that section. | |
| Settings | |||
| App Settings | - |
Basic App Information: App Name*, App Version*, Default Country,
Phone Code, About Us* Currency Information: Default Currency*, Currency Symbol*, Currency Short Code* Application Logo & Theme: App Logo, Favicon (32x32 or 64x64px), Theme Color (Hex), Hero Section Image |
|
| User Management | |||
| Customers | - |
Customer Information: First Name*, Last Name, Display Name,
Gender*, Date of Birth* Contact Information: Email*, Country Code, Phone Number*, Password, Profile Photo Additional Information: Address, City*, State*, Country*, Status*, Notes |
|
| Users | - | Admin staff accounts. Fields: Name, Email, Role | |
| Marketplace | |||
| Categories | - | Fields: Category Name*, Status*, Show Brand Field, Show Model Field, Category Icon* | |
| Listings | - |
Listing Information: Title*, Description (HTML), Price (INR), Price
Negotiable, Certified Pre-Owned, Condition, Tags Vehicle Details: Body Type, VIN/Chassis Number*, RC Number*, Registration Year, Variant/Trim, Fuel Efficiency (kmpl), Exterior Color, Interior Color, Insurance Expiry, Guarantee (days), Warranty Type Category & Location: Category*, Location, City Seller Contact: Contact Name, Contact Phone, Contact Email Moderation & Visibility: Status*, Auto Renew, Expires At |
|
| Cities | - | Fields: City Name*, Slug*, State, Status* | |
| Subcategories | - | Fields: Parent Category*, Subcategory Name*, Slug, Status*, Subcategory Icon* | |
| Attributes | - |
Attribute Information: Attribute Name*, Slug*, Display Label*,
Field Type*, Placeholder, Help Text Settings: Required, Filterable, Searchable, Active, Sort Order Applicable Subcategories: Subcategories* |
|
| Brands | - | Fields: Brand Name*, Slug*, Brand Icon (small square icon shown on home page brand tiles), Applicable Subcategories* | |
| Content | |||
| Blog Posts | - |
Post Content: Title*, Slug*, Short Description, Content* Status & Publishing: Status, Publish Date, Category, Featured Image, Author Image |
|
| About Pages | - |
About Us: Title*, Short Description, About Content Mission & Vision: Mission, Vision Banner Image: Banner/Story Image (800x600px recommended) Settings: Active Statistics: Value*, Label* Core Values: Icon (Lucide), Title*, Description |
|
| Communication | |||
| Contact Page | - |
Company & Contact Information: Company Name, Email, Contact Number,
WhatsApp Number, Form Submissions Email Address & Working Hours: Office Address, Working Hours, Opening Time, Closing Time Settings: Active Social Media Links: Facebook URL, Instagram URL, Twitter (X) URL, LinkedIn URL, YouTube URL |
|
| Contact Messages | - | Fields: Name, Email, Subject, Phone, Status (Read/Unread/Replied), Received | |
| Marketing | |||
| Newsletter Subscribers | - | Fields: Email, Status (Active/Unsubscribed), Subscribed At | |
| Newsletter Campaigns | - |
Fields: Subject*, Email Title*, Message*, Send To* (All Subscribers
or Selected) Workflow: Create → Draft → Send Now → Sending → Sent (queued job) |
|
| Legal | |||
| Privacy Policies | - | Fields: Title*, Status*, Description* | |
| Terms Conditions | - | Fields: Title*, Status*, Description* | |
| FAQs | - | Fields: Question*, Status*, Answer* | |
| Trust & Certification | |||
| Inspection Reports | - |
Report: Vehicle Listing*, Status (auto derives Passed/Failed/In
Progress), Inspector, Report ID, Inspected At Summary: Score (computed automatically) Categories: Exterior (6 pts), Interior (5 pts), Engine & Mechanical (3 pts), Transmission (2 pts), Suspension & Steering (2 pts), Brakes (2 pts), Tyres & Wheels (3 pts), Electrical & Electronics (2 pts), Documents & Legal (4 pts), Test Drive (2 pts) |
|
| Verification Requests | - | Fields: Dealer, Document, Status (Pending/Approved/Rejected), Business, Reviewed, Submitted | |
| Inspection Points | - | Fields: Point Name*, Category*, Description, Sort Order, Required for Pass (all required points must be checked for the report to pass), Active (inactive points excluded from new inspection forms) | |
| Vehicle History Reports | - |
Report: Vehicle Listing*, VIN (optional — falls back to listing
VIN), Status (Verified by team), Checked At Summary: Summary, Accidents, Service Records, Ownership History |
|
| Filament Shield | |||
| Roles | - |
Fields: Name*, Guard Name, Select All (Enables/Disables all
Permissions for this role) Default Roles: Super Admin, Admin, Moderator, Content Manager |
|
http://yourdomain.com/admin
The Android build configuration defines the SDK versions, build tools, and other essential parameters required for compiling the application.
File Location: android/build.gradle
| Configuration | Value |
|---|---|
| Build Tools Version | 36.0.0 |
| Minimum SDK Version | 24 |
| Compile SDK Version | 36 |
| Target SDK Version | 36 |
| Android NDK Version | 27.1.12297006 |
| Kotlin Version | 2.1.20 |
buildToolsVersion = "36.0.0"
minSdkVersion = 24
compileSdkVersion = 36
targetSdkVersion = 36
ndkVersion = "27.1.12297006"
kotlinVersion = "2.1.20"
Gradle properties control the build performance, memory allocation, and Android compatibility settings.
File Location: android/gradle.properties
org.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=3g -Dfile.encoding=UTF-8
org.gradle.daemon=true
org.gradle.parallel=true
org.gradle.caching=true
android.useAndroidX=true
reactNativeArchitectures=arm64-v8a
newArchEnabled=true
hermesEnabled=true
edgeToEdgeEnabled=false
| Property | Value | Description |
|---|---|---|
| org.gradle.jvmargs | -Xmx8g -XX:MaxMetaspaceSize=3g -Dfile.encoding=UTF-8 | JVM memory allocation for Gradle builds |
| org.gradle.daemon | true | Enables Gradle daemon for faster builds |
| org.gradle.parallel | true | Enables parallel execution of tasks |
| org.gradle.caching | true | Enables build caching for faster builds |
| android.useAndroidX | true | Enables AndroidX support libraries |
| reactNativeArchitectures | arm64-v8a | Target architecture for React Native |
| newArchEnabled | true | Enables React Native New Architecture |
| hermesEnabled | true | Enables Hermes JavaScript engine |
| edgeToEdgeEnabled | false | Disables edge-to-edge display mode |
File Location: android/build.gradle
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")
newArchEnabled=true)The Admin Panel and Customer Website are part of the same Laravel application. They share the same codebase, database, and backend. The Customer Website is built with React + Inertia.js and is served directly from the Laravel application.
This admin panel requires PHP 8.3. Please ensure you have the correct version installed before proceeding.
php --version # Should show PHP 8.3.x
The React website is located inside the admin project folder:
CarFindo/
├── app/
│ ├── Http/
│ │ ├── Controllers/ ← Web + API Controllers
│ │ │ ├── Api/ ← JSON API Endpoints
│ │ │ │ ├── Auth/ ← Login, OTP, Password Reset
│ │ │ │ ├── CategoryController.php
│ │ │ │ ├── ListingApiController.php
│ │ │ │ ├── BrandModelController.php
│ │ │ │ ├── SearchController.php
│ │ │ │ └── ...
│ │ │ ├── ListingController.php ← Web Listing Flows
│ │ │ ├── ChatController.php ← Messages
│ │ │ ├── MyAccountController.php
│ │ │ └── ...
│ │ ├── Middleware/ ← HandleInertiaRequests, Auth Guards
│ │ ├── Requests/ ← Form Validation Requests
│ │ └── Resources/ ← API Resources / JSON Shape
│ │
│ ├── Models/ ← Eloquent Models
│ │
│ ├── Services/ ← Business Logic
│ │ ├── SearchService.php
│ │ ├── ListingService.php
│ │ ├── ChatRealtimeService.php ← Firebase Sync
│ │ ├── EmailOtpService.php
│ │ ├── NewsletterService.php
│ │ ├── VinService.php
│ │ ├── RcNumberService.php
│ │ └── ...
│ │
│ ├── Filament/ ← Admin Panel
│ │ ├── Resources/ ← One Folder Per Menu
│ │ │ ├── Listings/
│ │ │ ├── Brands/
│ │ │ ├── Subcategories/
│ │ │ ├── Attributes/
│ │ │ ├── Customers/
│ │ │ ├── AppSettings/
│ │ │ ├── HomeSettings/
│ │ │ ├── NewsletterCampaign/
│ │ │ ├── BlogPosts/
│ │ │ └── ...
│ │ └── Pages/
│ │ └── Dashboard.php
│ │
│ ├── Jobs/ ← Queued Jobs
│ │
│ ├── Mail/ ← Mailables
│ │
│ ├── Notifications/ ← In-App / Email Notifications
│ │
│ ├── Policies/ ← Authorization Policies
│ │
│ ├── Rules/ ← Custom Validation Rules
│ │
│ ├── Providers/ ← Service Providers
│ │
│ └── Console/
│
├── bootstrap/ ← App Bootstrap + Cache
│
├── config/ ← Configuration Files
│
├── database/
│ ├── migrations/ ← Table Schemas
│ ├── seeders/ ← Default Data
│ └── factories/
│
├── public/
│ ├── storage/
│ └── ...
│
├── resources/
│ ├── views/ ← Blade Templates (Server-Rendered Shell)
│ │ ├── app.blade.php ← Main HTML Layout (Inertia Root)
│ │ ├── emails/ ← Email Templates (OTP, Newsletter)
│ │ └── filament/ ← Filament Admin Views
│ │
│ ├── js/ ← React SPA
│ │ ├── app.jsx ← Entry Point (Inertia + React Mount)
│ │ │
│ │ ├── Pages/ ← Screen Components (One Per Route)
│ │ │ ├── Home.jsx
│ │ │ ├── Listings.jsx
│ │ │ ├── ListingDetail.jsx
│ │ │ ├── SearchResults.jsx
│ │ │ ├── CreateListing.jsx
│ │ │ ├── SellCar.jsx
│ │ │ ├── Messages.jsx
│ │ │ ├── MessagesConversation.jsx
│ │ │ ├── Wishlist.jsx
│ │ │ ├── Notifications.jsx
│ │ │ ├── Login.jsx
│ │ │ ├── Register.jsx
│ │ │ ├── ForgotPassword.jsx
│ │ │ ├── About.jsx
│ │ │ ├── Contact.jsx
│ │ │ ├── FAQ.jsx
│ │ │ ├── Blog.jsx
│ │ │ └── ...
│ │ │
│ │ │ └── MyAccount/ ← Account Sub-Pages
│ │ │ ├── Dashboard.jsx
│ │ │ ├── MyListings.jsx
│ │ │ ├── EditProfile.jsx
│ │ │ ├── CreateListing.jsx
│ │ │ └── EditListing.jsx
│ │ │
│ │ ├── Components/ ← Reusable UI Components
│ │ │ ├── Header.jsx
│ │ │ ├── Footer.jsx
│ │ │ ├── SearchBar.jsx
│ │ │ ├── SearchFilters.jsx
│ │ │ ├── ListingCard.jsx
│ │ │ ├── DynamicFieldRenderer.jsx
│ │ │ ├── LocationSearch.jsx
│ │ │ ├── InspectionReport.jsx
│ │ │ └── ...
│ │ │
│ │ ├── Layouts/ ← Page Layouts
│ │ │ ├── MainLayout.jsx ← Header + Footer Wrapper
│ │ │ └── MyAccountLayout.jsx
│ │ │
│ │ ├── stores/ ← Zustand State
│ │ │ └── wishlist.js
│ │ │
│ │ ├── hooks/ ← Custom React Hooks
│ │ │
│ │ ├── utils/ ← Helpers (Placeholders, VIN/RC)
│ │ │
│ │ ├── config/ ← Firebase Config etc.
│ │ │
│ │ └── css/
│ │ └── app.css ← Tailwind v4 + Custom Animations
│ │
│ └── ...
│
├── routes/
│ ├── web.php ← All Frontend Page Routes (Inertia)
│ ├── api.php ← JSON API Routes
│ └── console.php
│
├── storage/ ← Logs, Cache, Uploads
│
└── tests/ ← PHP Tests
Set up the Laravel backend and Filament admin panel
Extract the downloaded source files to your working directory.
Copy the admin folder and paste it inside XAMPP → htdocs.
Rename your project folder (e.g., CarFindo_admin).
Navigate to your project folder:
cd C:\xampp\htdocs\CarFindo_admin
Run the following command to install all PHP dependencies:
composer install
When finished, verify the vendor folder
has been created in your project.
Follow these steps in phpMyAdmin:
http://localhost/phpmyadmin
in your browserCarFindo_admin)
Import the SQL file located at database/CarFindo_admin.sql
using phpMyAdmin:
CarFindo_admin.sql
file from your projectRun the following command to generate a unique application key:
php artisan key:generate
If .env file is not
visible, enable "show hidden files" in your system settings. Update the .env file in
your project root with the following settings:
APP_URL=http://localhost:8000
APP_ASSET_URL=http://localhost:8000/storage
APP_ENV=local
APP_DEBUG=true
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=CarFindo_admin
DB_USERNAME=root
DB_PASSWORD=
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:
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.
Important: Replace all placeholder values with your actual credentials before running the application.
Run the following command to create the database tables:
php artisan migrate
Run the following command to seed the database with default data:
php artisan db:seed --force
--force flag
is used to run the seeder in production environments. For local development, you can
omit it.
Run the following command to generate all Shield permissions:
php artisan shield:generate --all --option=permissions --panel=admin
After generating permissions, run this command to assign the super admin role to your admin user:
php artisan tinker --execute="
$role = DB::table('roles')->where('name','super_admin')->first();
$perms = DB::table('permissions')->pluck('id')->toArray();
$rows = array_map(fn($id) => ['permission_id'=>$id,'role_id'=>$role->id], $perms);
DB::table('role_has_permissions')->insertOrIgnore($rows);
DB::table('model_has_roles')->insertOrIgnore(['role_id'=>1,'model_type'=>'App\\Models\\User','model_id'=>1]);
echo 'Done: Admin assigned to super_admin role';
"
Run the following command to optimize the application for production:
php artisan optimize
Set up the React frontend website located inside the admin project
Create a .env file in the
website folder
and add the following configurations:
# API Configuration (Points to the admin backend)
APP_NAME=enter_your_app_name
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_URL=enter_your_app_url
APP_LOCALE=en
APP_FALLBACK_LOCALE=en
APP_FAKER_LOCALE=en_US
APP_MAINTENANCE_Customer=file
# APP_MAINTENANCE_STORE=database
# PHP_CLI_SERVER_WORKERS=4
BCRYPT_ROUNDS=12
LOG_CHANNEL=stack
LOG_STACK=single
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug
# Database Configuration
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=enter_your_database_name
DB_USERNAME=enter_your_database_username
DB_PASSWORD=enter_your_database_password
DB_SOCKET=
# Session
SESSION_Customer=file
SESSION_LIFETIME=120
SESSION_ENCRYPT=false
SESSION_PATH=/
SESSION_DOMAIN=null
# Broadcasting
BROADCAST_CONNECTION=log
# Firebase Realtime Database
FIREBASE_FILE=
FIREBASE_DB=
# Filesystem
FILESYSTEM_DISK=local
# Queue
QUEUE_CONNECTION=database
# Cache
CACHE_STORE=file
# CACHE_PREFIX=
# Memcached
MEMCACHED_HOST=127.0.0.1
# Redis
REDIS_CLIENT=phpredis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=
REDIS_PORT=6379
# Mail Configuration
MAIL_MAILER=smtp
MAIL_SCHEME=
MAIL_HOST=enter_your_smtp_host
MAIL_PORT=587
MAIL_USERNAME=enter_your_email@example.com
MAIL_PASSWORD=enter_your_email_password_or_app_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=enter_your_email@example.com
MAIL_FROM_NAME="${APP_NAME}"
# AWS (Optional)
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=
AWS_USE_PATH_STYLE_ENDPOINT=false
# Frontend
VITE_APP_NAME="${APP_NAME}"
MODE=DEMO
.env
file before running the application.APP_URL
to your application's domain or local URL..env
file, run php artisan optimize:clear
followed by php artisan optimize.
In a separate terminal, navigate to the admin project root and serve the Laravel backend:
php artisan serve
The Laravel backend runs at http://localhost:8000
admin@gmail.com
admin
Run these commands in sequence to set up both admin panel and website:
# Navigate to admin project
cd C:\xampp\htdocs\CarFindo_admin
# Install PHP dependencies
composer install
# Generate application key
php artisan key:generate
# Run migrations
php artisan migrate
# Seed the database
php artisan db:seed --force
# Generate Shield permissions
php artisan shield:generate --all --option=permissions --panel=admin
# Optimize the application
php artisan optimize
# Start Laravel server (in one terminal)
php artisan serve
# Navigate to website folder
# Create .env file with configurations
# (Copy .env.example to .env and update values)
Use these default credentials to log in to the admin panel:
| Email: | admin@gmail.com |
| Password: | admin |
| Access Level: | Super Administrator |
Security Alert: Change these credentials immediately after first login.
If the application is not working correctly, verify:
.env
file exists in the project root.APP_URL
points to your application URL.php artisan optimize:clear
after modifying the .env file.
Verify the following:
.env file
are correct.php artisan migrate
if the tables have not been created.If uploaded images or files are not displayed:
php artisan storage:link.
storage
directory has write permission.php artisan optimize:clear.
If push notifications are not working:
.env file
are correct.If recent changes are not reflected:
php artisan optimize:clear.
php artisan optimize.
php artisan serve.
App Settings in Admin Panel
Go to: Settings → App Settings
| Field | What It Changes | Action |
|---|---|---|
| App Name* | Shows in browser tab title + footer bottom | Edit |
| App Version* | Current application version number | Edit |
| Default Country | Default country for users | Edit |
| Phone Code | Default prefix in registration phone field (e.g., +91) | Edit |
| About Us* | Company description | Edit |
| Theme Color (Hex) | Changes entire website color scheme — buttons, highlights, header accents, borders, icons, hover states | Edit |
| Default Currency* | Every price (₹, $, etc.) on listings/search/detail changes | Edit |
| Currency Symbol* | Symbol shown next to prices (₹, $, €) | Edit |
| Currency Short Code* | Short code (INR, USD, EUR) | Edit |
| App Logo | Top-left header logo changes | Add | Edit |
| Favicon | Browser tab icon changes (32x32 or 64x64px) | Add | Edit |
| Hero Section Image | Home page hero background image changes | Add | Edit |
Home Settings in Admin Panel
Go to: Settings → CMS
| Section | Field | What It Changes | Action |
|---|---|---|---|
| Hero Section | Hero Badge | Small badge above main title | Edit |
| Hero Title | Big text under navbar (main heading) | Edit | |
| Hero Subtitle | Text below main heading | Edit | |
| Hero Card Title / Subtitle / Button | Orange box inside hero (left side) | Edit | |
| Trust Badges | Trust Badge 1 | Icon + Title + Subtitle (e.g., "200-Point Inspection") | Add | Edit |
| Trust Badge 2 | Icon + Title + Subtitle (e.g., "Warranty") | Add | Edit | |
| Trust Badge 3 | Icon + Title + Subtitle (e.g., "Verified Dealers") | Add | Edit | |
| Brand Section | Brand Title | Heading above "Shop by Brand" grid | Edit |
| Brand Subtitle | Text below Brand Title | Edit | |
| Featured Section | Featured Title | Heading above "Featured Cars" carousel | Edit |
| Featured Subtitle | Text below Featured Title | Edit | |
| Why Section | Why Title | Heading above "Why buy from us" 4-card grid | Edit |
| Why Card 1 | Icon + Title + Description | Add | Edit | |
| Why Card 2 | Icon + Title + Description | Add | Edit | |
| Why Card 3 | Icon + Title + Description | Add | Edit | |
| Sell Section | Sell Title | Heading above "Sell your car" banner section | Edit |
| Sell Subtitle | Text below Sell Title | Edit | |
| Sell Button | Button text on sell banner | Edit | |
| CTA Section | CTA Title | Bottom "Can't find what you're looking for?" section | Edit |
| CTA Description | Text below CTA Title | Edit |
Categories in Admin Panel
Go to: Marketplace → Categories
| Field | What It Changes | Action |
|---|---|---|
| Category Name* | Appears on Home (category nav) + /categories page + category cards | Add | Edit |
| Status* | Toggle Active ON/OFF — appears/disappears everywhere | Toggle |
| Show Brand Field | Toggle brand field visibility | Toggle |
| Show Model Field | Toggle model field visibility | Toggle |
| Category Icon* | Icon shown on category cards | Add | Edit |
Subcategories in Admin Panel
Go to: Marketplace → Subcategories
| Field | What It Changes | Action |
|---|---|---|
| Parent Category* | Assign to parent category | Dropdown |
| Subcategory Name* | Appears as chips on Home "Browse by Body Type" + search filter sidebar + Add Listing form | Add | Edit |
| Slug | URL-friendly slug | Auto-generate | Edit |
| Status* | Toggle Active ON/OFF — appears/disappears everywhere | Toggle |
| Subcategory Icon* | Icon shown on body type chips | Add | Edit |
Brands in Admin Panel
Go to: Marketplace → Brands
| Field | What It Changes | Action |
|---|---|---|
| Brand Name* | Home "Shop by Brand" grid + Sell Car page brand boxes + search filter + Add Listing brand dropdown | Add | Edit |
| Slug* | URL-friendly slug | Auto-generate | Edit |
| Brand Icon | Icon shown on brand tiles | Add | Edit |
| Applicable Subcategories | Which body types this brand applies to | Select |
| Status | Toggle Active OFF → brand disappears from all pages. Toggle ON → brand reappears everywhere | Toggle |
Models in Admin Panel
Go to: Marketplace → Models
| Field | What It Changes | Action |
|---|---|---|
| Brand | Parent brand (e.g., Maruti) | Dropdown |
| Model Name* | Add Listing Model dropdown (after selecting a brand) → e.g., Baleno, Swift | Add | Edit |
| Slug | URL-friendly slug | Auto-generate | Edit |
| Status | Active/Inactive status | Toggle |
Go to: Marketplace → Attributes
| Field | What It Changes | Action |
|---|---|---|
| Attribute Name* | Add Listing "Car Attributes" section + listing detail specs + search filter options (e.g., Body Type, Fuel) | Add | Edit |
| Slug* | URL-friendly slug | Auto-generate | Edit |
| Display Label* | Label shown in UI | Edit |
| Field Type* | Text, Select, Checkbox, etc. | Dropdown |
| Required | Make attribute mandatory in form | Toggle |
| Filterable | Show as filter in search sidebar | Toggle |
| Active | Toggle Active ON/OFF | Toggle |
| Applicable Subcategories | Which body types this attribute applies to | Select |
Cities in Admin Panel
Go to: Marketplace → Cities
| Field | What It Changes | Action |
|---|---|---|
| City Name* | Search location filter dropdown + location suggestions | Add | Edit |
| Slug* | URL-friendly slug | Auto-generate | Edit |
| State | State of the city | Edit |
| Status* | Active/Inactive status | Toggle |
Listings in Admin Panel
Go to: Marketplace → Listings
| Field | What It Changes | Action |
|---|---|---|
| Title* | Car listing title | Edit |
| Price (INR) | Car price on Home/Listings/Search + listing detail page | Edit |
| Description | Car description on listing detail page | Edit |
| Images | Car photos on Home/Listings/Search + listing detail page | Add | Edit | Delete |
| Status* | Set status Sold / Paused → car hides from active browse; shows as sold on detail | Dropdown |
| Price Negotiable | Toggle price negotiability | Toggle |
| Certified Pre-Owned | Toggle CPO status | Toggle |
| Admin Panel Location | What It Changes | Action |
|---|---|---|
| Content → Blog Posts | Publish → new article appears on /blog + clicking opens /blog/{slug} | Add | Edit | Delete |
| Content → About Pages | /about content | Edit |
| Communication → Contact Page | /contact content/form | Edit |
| Legal → FAQ | /faq accordion items | Add | Edit | Delete |
| Legal → Terms Condition | /terms page | Edit |
| Legal → Privacy Policy | /privacy page | Edit |
| Admin Panel Location | What It Changes | Action |
|---|---|---|
| Trust & Certification → Verification Requests | Approve → dealer's profile + listings show a verified badge immediately | View | Approve | Reject |
| Trust & Certification → Vehicle History | History shown on that car's detail page | View | Edit | Delete |
| Trust & Certification → Inspection Reports | 200-point inspection report shown on that car's detail page | View | Edit | Delete |
| Admin Panel Location | What It Changes | Action |
|---|---|---|
| Marketing → Newsletter Campaigns | Click "Send Now" → all active subscribers receive the email | Add | Edit | Send Now |
| Marketing → Newsletter Subscribers | The footer subscribe adds a new subscriber here | View | Delete |
| # | Section | Admin Panel Location | What It Changes | Actions |
|---|---|---|---|---|
| 1 | App Settings | Settings → App Settings | App Name, Logo, Favicon, Theme Color, Currency, Hero Image, Phone Code | Add | Edit |
| 2 | CMS - Home Settings | Settings → CMS | Hero Badge/Title/Subtitle, Hero Card, Trust Badges, Brand Section, Featured Section, Why Cards, Sell Section, CTA Section | Add | Edit |
| 3 | Categories | Marketplace → Categories | Category name, icon, status — appears on Home, /categories page, category cards | Add | Edit | Delete |
| 4 | Subcategories | Marketplace → Subcategories | Body Type names, icons, status — Home chips, search filter, Add Listing form | Add | Edit | Delete |
| 5 | Brands | Marketplace → Brands | Brand name, icon, status — Home "Shop by Brand" grid, Sell Car page, search filter, Add Listing dropdown | Add | Edit | Delete |
| 6 | Models | Marketplace → Models | Add Listing Model dropdown (after selecting brand) | Add | Edit | Delete |
| 7 | Attributes | Marketplace → Attributes | Add Listing "Car Attributes" section, listing detail specs, search filter options | Add | Edit | Delete |
| 8 | Cities | Marketplace → Cities | Search location filter dropdown, location suggestions | Add | Edit | Delete |
| 9 | Listings | Marketplace → Listings | Title, Price, Images, Status (Sold/Paused hides from active browse) | View | Edit | Delete |
| 10 | Content Pages | Content → Blog, About | Blog posts on /blog, About page on /about | Add | Edit | Delete |
| 11 | Legal Pages | Legal → FAQ, Terms, Privacy | FAQ on /faq, Terms on /terms, Privacy on /privacy | Add | Edit | Delete |
| 12 | Verification | Trust & Certification → Verification Requests | Approve → dealer gets verified badge on profile + listings | View | Approve | Reject |
| 13 | Vehicle History & Inspections | Trust & Certification → Vehicle History, Inspection Reports | History + inspection report shown on car detail page | View | Edit | Delete |
| 14 | Newsletter | Marketing → Newsletter Campaigns, Newsletter Subscribers | Send campaigns to subscribers; footer subscribe adds subscribers | Add | Edit | Send Now | Delete |
#f97316, #4032ae)This guide explains how to install, configure and run the Customer Application (React Native) on both Android and iOS devices. This is a separate application from the Unified Application (Admin + Website). Follow every step carefully before building the application.
Download and install Node.js from the official website.
https://nodejs.org/en/download# Verify Installation
node -v
npm -v
Download Android Studio from the official website.
https://developer.android.com/studio
Copy the Customer folder into your preferred location.
Note: If you rename the folder, remember to update the Bundle ID before building the application.
Open terminal inside the Customer Application and run:
npm install
If you use Yarn, execute:
yarn install
Navigate into the iOS folder.
cd ios
pod install
Android
npx react-native run-android
iOS
npx react-native run-ios
The Customer Application will launch on your connected device or emulator after the build completes successfully.
You can personalize the Customer Application by changing the app name and launcher icon before publishing it to the Play Store or App Store.
For Android, open the following file:
folder_open CustomerApp/android/app/src/main/res/values/strings.xml
<string name="app_name">Your App Name</string>
Replace Your App Name with the name you want to display
on the device home screen.
Open the following project in Xcode:
folder_open ios/CustomerApp.xcodeproj
Replace the default launcher icons with your own branded icons.
android/app/src/main/res/mipmap-*.mipmap-anydpi-v26.Make sure all launcher icons follow Android and Apple size guidelines. Incorrect icon dimensions may cause build or submission errors.
Your application name and launcher icon have been successfully customized. Rebuild the application to see the updated branding.
Before publishing your application, update the package name (Android) and Bundle Identifier (iOS) so your application has a unique identity on Google Play and the App Store.
Open the following file:
folder_open CustomerApp/android/app/build.gradle
android {
defaultConfig {
applicationId "com.yourcompany.yourapp"
}
}
build.gradleAndroidManifest.xmlOpen the following project:
folder_open ios/CustomerApp.xcodeproj
Never use a package name that already exists on Google Play or App Store. Every published application must have a unique package name.
Important: If you change the package name after publishing your application, Google Play and Apple App Store will treat it as a completely new application.
After updating the package name and bundle identifier, clean the project and rebuild the application before generating a release build.
If you require additional features, UI changes, third-party integrations, new modules, or any other customization that is not included in the default package, our development team can help tailor the application to your business requirements.
For custom development requests, please contact our team using the details below.
Note: Custom development services are not included with the regular purchase. The implementation cost and delivery time depend on the complexity of the requested features.
This is the first official release of the CarFindo platform, introducing the core functionality required to operate a complete used-car marketplace solution.
First stable release of the CarFindo used-car marketplace platform.
Email + phone registration with OTP verification, login, and forgot/reset password functionality.
Categories, subcategories, filters/search with live suggestions, trending and recent searches.
Multi-step wizard with auto-save draft, VIN/RC validation, normalization, and masking. Manage, edit, pause, clone, relist, and mark sold.
DB-persisted conversations mirrored to Firebase Realtime DB with live subscriptions, emoji picker, and photo attachment.
Seller selects buyer, buyer confirms/denies purchase, seller rates buyer with stars and review.
Business/GST/license submission with admin review and verified dealer badges on profiles.
Notification feed, unread counts, and mark-all-read functionality.
Subscribe/unsubscribe with queued campaign delivery.
Manage customers, listings, brands, categories, inspections, vehicle history, blog, FAQ, legal pages, and more.
React Native application for customers to browse, buy, and sell cars on the go.
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 fileCarFindo_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.CarFindo
Update in:
folder_open android/app/build.gradle
applicationId "com.clientname.CarFindo"
Rename the Java package directory:
folder_open android/app/src/main/java/com/clientname/CarFindo
keytool -genkey -v \
-keystore CarFindo.keystore \
-alias CarFindo \
-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=CarFindo.keystore
MYAPP_UPLOAD_KEY_ALIAS=CarFindo
MYAPP_UPLOAD_STORE_PASSWORD=yourpassword
MYAPP_UPLOAD_KEY_PASSWORD=yourpassword
cd android
./gradlew assembleRelease
APK location:
android/app/build/outputs/apk/release/app-release.apk
cd android
./gradlew bundleRelease
Output: 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/CarFindo/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/CarFindo.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/CarFindo/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/CarFindo.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/CarFindo/Images.xcassets/AppIcon.appiconset
The application uses MapLibre for map rendering and location-based services.
These features enable the application to display car locations, listing maps, and search results 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
RouteMappy maps integration requires a valid API key. Please contact RouteMappy directly for licensing and pricing information:
Edit the following file:
folder_open CarFindo/src/config/Constants.js
export const ROUTEMAPPY_API_KEY = 'enter_your_routemappy_key';
RouteMappy maps integration requires a valid API key. Please contact RouteMappy directly for licensing and pricing information:
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 devices
Confirm the device appears in the list.
cd D:\CarFindo_customer
npm install
npx react-native run-android
npm install or composer install)Cause: Missing or outdated Node.js/PHP version, unstable internet connection, or running commands from the wrong directory.
Solution:
npm install
composer install
rm -rf node_modules package-lock.json
npm install
✓ Success
Indicator: After successful installation, you should see a node_modules folder and
vendor folder created.
Cause: Missing dependencies, incorrect import paths, or incomplete project extraction.
Solution:
resources/js/ files.npm install
npm run build
Cause: Firebase project setup is incomplete or configuration files are missing.
Solution:
firebase.json in config/ directory.
google-services.json (Android)GoogleService-Info.plist (iOS)💡 Tip: Always download the latest configuration files from Firebase Console. Old files may contain outdated credentials.
Cause: Missing or incomplete environment
configuration in .env file.
Solution:
.env.example to .env.APP_URL=ENTER_YOUR_APP_URL
DB_DATABASE=CarFindo_db
FIREBASE_FILE=ENTER_YOUR_FIREBASE_FILE
MAIL_HOST=ENTER_YOUR_SMTP_HOST
php artisan optimize:clear after updating .env.⚠️
Important: Never commit your .env file to version control. It
contains sensitive credentials.
Cause: USB debugging is disabled or device Customers are not installed.
Solution:
adb devices
Cause: Database connection issues or listing status is incorrect.
Solution:
.env are correct.php artisan migrate to ensure tables exist.php artisan optimize:clear.storage/logs/laravel.log for errors.Cause: Firebase Realtime Database configuration issues.
Solution:
FIREBASE_DB URL is correct in .env.google-services.json (Android) or
GoogleService-Info.plist (iOS) is placed correctly.
Cause: Payment credentials are incorrect or payment methods are disabled.
Solution:
.env:RAZORPAY_KEY=ENTER_YOUR_RAZORPAY_KEY
RAZORPAY_SECRET=ENTER_YOUR_RAZORPAY_SECRET
Cause: Firebase Cloud Messaging (FCM) is not configured properly.
Solution:
FIREBASE_FILE and FIREBASE_DB are set in
.env.
google-services.json (Android) or
GoogleService-Info.plist (iOS) is placed correctly.
Cause: SMTP service provider configuration is incomplete or delayed.
Solution:
.env:MAIL_USERNAME=ENTER_YOUR_MAIL_USERNAME
MAIL_PASSWORD=ENTER_YOUR_MAIL_PASSWORD
MAIL_HOST=ENTER_YOUR_SMTP_HOST
Cause: Incorrect credentials, inactive account, or account suspension.
Solution:
Cause: Listing status is set to Draft/Pending or admin approval is required.
Solution:
Cause: PHP version mismatch, missing dependencies, or permission issues.
Solution:
composer install to install all dependencies.php artisan key:generate.php artisan migrate.storage and bootstrap/cache.storage/logs/laravel.log for detailed errors.Cause: File size exceeds server limits or unsupported file format.
Solution:
php artisan storage:link to create symbolic link.Cause: Missing configuration, incorrect
.env values, or database connection issues.
Solution:
.env configuration is complete.php artisan optimize:clear.php artisan optimize.php artisan serve.Cause: Search index issues or database connection problems.
Solution:
php artisan optimize:clear to clear cache.Cause: Dealer account is awaiting administrator approval.
Solution:
Cause: Missing dependencies or configuration issues.
Solution:
npm install to install all dependencies.google-services.json is in android/app/.
pod install in ios/ folder.npx react-native-clean-project.API_URL in src/config/const.js is correct.Cause: Cache issues or incorrect settings in Admin Panel.
Solution:
php artisan optimize:clear.#4032ae).php artisan storage:link if images are not displaying.APP_URL in .env matches your domain.💡 Tip: After
making changes in the Admin Panel, use php artisan optimize:clear and
php artisan optimize to ensure all caches are cleared.
Cause: SMTP configuration issues or queued jobs not running.
Solution:
.env are correct.php artisan queue:work.Cause: Invalid URLs or missing social media links in Website Settings.
Solution:
https://facebook.com/yourpage).
https://.php artisan optimize:clear.Cause: Data not added or status is not verified.
Solution:
Cause: Blog post status is Draft or unpublished.
Solution:
php artisan optimize:clear.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