InAllCart Documentation
v2.0.0
Source Code Pricing Expert Team Installation

Introduction

InAllCart is a comprehensive multi-vendor delivery platform connecting customers, store owners, and delivery partners through a powerful Laravel backend and Flutter mobile apps.

Enterprise-Grade Solution

Built for scalability — supports thousands of concurrent transactions with real-time tracking, automated workflows, and comprehensive analytics.

Third-Party Services — Additional Costs May Apply

InAllCart integrates with several external paid services. These services are not included in the purchase price and require separate accounts and API keys. You may incur additional charges based on usage:

  • Firebase (Google) — Free Spark plan available; Blaze (pay-as-you-go) plan required for production FCM and Firestore at scale. See firebase.google.com/pricing.
  • Google Maps Platform — Requires a billing-enabled Google Cloud account. Charges apply for Maps SDK, Geocoding, and Directions API calls beyond the free tier. See mapsplatform.google.com/pricing.
  • Pusher — Real-time WebSocket service with a free Sandbox tier and paid plans for higher concurrency. See pusher.com/pricing.
  • OpenAI — AI-assisted features (if enabled) use the OpenAI API, billed per token. See openai.com/pricing.
  • Google Gemini — Alternative AI provider billed per request. See ai.google.dev/pricing.
  • SMS Gateways (Twilio, MSG91, etc.) — Charged per SMS sent.
  • Payment Gateways (Stripe, Razorpay, PayPal, etc.) — Transaction fees apply per payment processed.

You are responsible for creating accounts and managing billing for each service you enable. API keys must never be shared or committed to version control.

Platform Overview

Admin Dashboard

Powerful Laravel-based admin panel for complete platform control, analytics, and configuration.

Mobile Apps

Native Flutter apps for customers, store partners, and delivery personnel with offline support.

Real-time Updates

Firebase-powered real-time notifications, chat, and live order tracking.

Secure & Scalable

Built with security best practices and designed to scale from startup to enterprise.

Key Features

  • Multi-Vendor Support — Unlimited stores with individual dashboards and analytics
  • Real-time Order Tracking — Live GPS tracking with automated status updates
  • 12+ Payment Gateways — Stripe, PayPal, Razorpay, Paystack, Flutterwave, Paytm, PhonePe, Midtrans, MyFatoorah, Instamojo, COD, Bank Transfer
  • Advanced Analytics — Comprehensive reports and insights for data-driven decisions
  • Wallet & Loyalty System — Built-in wallet, referral rewards, and loyalty points
  • Flexible Vendor Modes — Single vendor or multi-vendor marketplace with configurable cart behaviour

Technology Stack

Backend

  • Laravel 10.x — PHP Framework
  • MySQL 8.0 — Database
  • Redis — Caching & Queues
  • Firebase — Real-time Features

Mobile Apps

  • Flutter 3.x — Cross-platform Framework
  • Dart 3.x — Programming Language
  • Bloc — State Management
  • Firebase SDK — Push Notifications

Services

  • Google Maps / OSM — Location Services
  • Twilio / MSG91 — SMS OTP
  • Cloudflare — CDN & Edge Cache
  • SendGrid / SMTP — Email Delivery

System Requirements

Before installing InAllCart, ensure your system meets the following requirements.

Server Requirements

For Backend (Laravel)

Component Minimum Recommended
PHP 8.1 8.2+
MySQL 5.7 8.0+
RAM 2 GB 4 GB+
Storage 10 GB 20 GB SSD
CPU 2 Cores 4+ Cores

Required PHP Extensions

bash
BCMath, Ctype, Fileinfo, JSON, Mbstring, OpenSSL, PDO, Tokenizer, XML, cURL, GD/Imagick, Zip

Web Server

  • Apache 2.4+ with mod_rewrite enabled
  • Nginx 1.18+ with proper configuration

Mobile Development Requirements

Tool Version Purpose
Flutter SDK 3.0+ Mobile framework
Dart SDK 3.0+ Programming language
Android Studio Latest Android development
Xcode 13+ (macOS) iOS development

SSL Required

An SSL certificate is required for production. Use Let's Encrypt or Cloudflare's free SSL.

Install On cPanel

Follow this step-by-step guide to install InAllCart on a cPanel hosting environment. Each step includes a screenshot for reference.

Before You Begin

Make sure your cPanel hosting meets the System Requirements — PHP 8.1+, MySQL 5.7+, and an SSL certificate are required.

Step 1: Create a Domain / Subdomain

1

Add Your Domain in cPanel

Log in to your cPanel account. Navigate to Domains section and click Create A New Domain (or add a subdomain). Enter your domain name and confirm the document root path (e.g., public_html/yourdomain.com), then click Submit.

Create a domain in cPanel
Creating a new domain/subdomain in cPanel Domains manager

Step 2: Open File Manager & Navigate to Your Domain Folder

2

Access File Manager

From your cPanel domain list, click the File Manager icon next to your domain. This will open the cPanel File Manager directly in the document root of your domain.

Go to File Manager from domain list
Opening File Manager directly from the domain list in cPanel

Step 3: Upload the Backend ZIP File

3

Click Upload in File Manager

Inside the File Manager, make sure you are inside your domain's document root folder. Click the Upload button in the toolbar at the top.

Click Upload in File Manager
Clicking the Upload button inside the File Manager

Upload the InAllCart Backend ZIP

Select and upload the InAllCart-backend.zip file to the document root of your domain. Wait for the upload to complete (100%), then go back to the File Manager and Extract the ZIP file in place.

Upload the backend ZIP file
Uploading the InAllCart backend ZIP file to the domain root

Step 4: Create a MySQL Database

4

Create a New Database

Go to cPanel → MySQL Databases. Under Create New Database, enter a database name (e.g., InAllCart_db) and click Create Database.

Create a MySQL database in cPanel
Creating a new MySQL database in cPanel MySQL Databases

Step 5: Create a Database User

5

Add a New MySQL User

Still in MySQL Databases, scroll down to MySQL Users. Enter a username and a strong password, then click Create User. Note down the username and password — you will need them during installation.

Create a MySQL user in cPanel
Creating a new MySQL user in cPanel

Step 6: Add User to Database

6

Link the User to Your Database

Scroll to Add User To Database section. Select the user you just created and the database, then click Add.

Add user to the database
Adding the MySQL user to the database in cPanel

Step 7: Set User Privileges

7

Grant All Privileges

On the Manage User Privileges page that appears, check ALL PRIVILEGES and click Make Changes. This gives the user full access to the database.

Manage user privileges - grant all permissions
Granting ALL PRIVILEGES to the database user

Step 8: Open the Web Installer

8

Visit Your Domain to Start Installation

Open your browser and navigate to https://yourdomain.com OR https://yourdomain.com/public. The InAllCart web installer will automatically load. You will be guided through the setup wizard.

InAllCart web installer page
The InAllCart web installer welcome page

Step 9: Server Requirements Check

9

Verify Server Requirements

The installer will automatically check your server environment. All items must show a green Pass status before proceeding. If any requirement fails, fix it in your cPanel PHP configuration or contact your hosting provider.

Server requirements check page
Server requirements check — all items must pass before continuing

Step 10: Enter Database Details

10

Configure Database Connection

Enter the database credentials you created in Steps 4–7:

  • Database Host: localhost
  • Database Name: the name you created in Step 4
  • Database Username: the user you created in Step 5
  • Database Password: the password set in Step 5

Click Next to test the connection and proceed.

Enter database connection details
Entering database connection details in the installer

Step 11: Run Database Migration

11

Migrate the Database

The installer will now run all database migrations to create the required tables and seed initial data. This may take a few moments. Do not close the browser or refresh the page during this step.

Running database migration
Database migration running — wait for it to complete

Step 12: Installation Complete

12

Setup Finished Successfully

Once all steps are complete, you will see the Installation Completed screen. Your InAllCart platform is now live. Click the provided link to access the Admin Panel and log in with the default credentials shown on the screen.

Installation completed successfully
Installation completed — your InAllCart platform is ready

Security Reminder

After installation, delete or rename the install folder from your server to prevent unauthorized re-installation. Also change the default admin password immediately.

Next Steps

After completing the installation, visit the Environment Configuration section to set up payment gateways, Firebase, and email services.

Installation Guide

Follow these steps to install InAllCart. The process typically takes 15–30 minutes.

Before You Begin

Review System Requirements and prepare all third-party service credentials.

Step 1: Upload Files

1

Extract and Upload

Extract InAllCart-backend.zip and upload all contents to your server root (public_html or www).

bash
cd /path/to/your/webroot
unzip InAllCart-backend.zip
chmod -R 755 storage bootstrap/cache

Step 2: Create Database

2

Database Setup

sql
CREATE DATABASE InAllCart_db;
CREATE USER 'InAllCart_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON InAllCart_db.* TO 'InAllCart_user'@'localhost';
FLUSH PRIVILEGES;

Step 3: Run Web Installer

3

Access Installation Wizard

Visit https://yourdomain.com/install to start the automated wizard. It covers: server verification, database config, admin account creation, and basic settings.

Step 4: Cron Jobs

4
cron
* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

Step 5: Queue Workers

5
bash
php artisan queue:work --tries=3

Installation Complete!

Proceed to Configuration to set up payment gateways, Firebase, and other services.

App Installation Guide

Complete guide to installing and customizing your InAllCart mobile apps with your brand identity, colors, and configurations.

Before You Begin

Make sure you have Flutter SDK installed and the mobile app source code. All customizations apply to Customer App, Store Partner App, and Delivery Partner App unless specified otherwise.

Step 1: Change App Name

1

Replace "InAllCart" with Your App Name

Search and replace all instances of "InAllCart" with your desired app name throughout the codebase.

Files to Update:

  • android/app/src/main/AndroidManifest.xml
  • ios/Runner/Info.plist
  • pubspec.yaml
  • All Dart files in lib/ directory
# Use find and replace (Match Case)
# Press Ctrl+Shift+H in VS Code OR Ctrl+Shift+F in Android Studio 
Find: InAllCart
Replace: YourAppName
Find and replace InAllCart with your app name
Using VS Code's find and replace to change app name globally

Step 2: Update Tagline and Base URL

2

Configure App Constants

Update the app tagline and base URL in the constants file.

// File: lib/core/constants/app_constants.dart

class AppConstants {
  // Update this with your app tagline
  static const String appTagLine = 'Your Amazing Delivery Service';
  
  // Update this with your backend URL
  static const String baseUrl = 'https://yourdomain.com/api';
  
  // Other constants...
  static const String appName = 'YourAppName';
  static const String appVersion = '1.0.0';
}
Update app constants file
Configuring tagline and base URL in app_constants.dart

Step 3: Replace App Logo

3

Update App Logo Image

Replace the default logo with your app logo in the assets folder.

Requirements:

  • Format: PNG with transparent background
  • File location: assets/images/applogo.png
# Replace the logo file
cp your-logo.png assets/images/applogo.png

# Make sure it's referenced in pubspec.yaml
# Check that assets/images/applogo.png is listed under assets:
Replace app logo
Replace applogo.png with your custom logo

Step 4: Generate and Replace App Icons

4

Create App Icons for All Platforms

Generate app icons for Android and iOS using an online tool and replace the default icons.

Steps:

  1. Visit icon.kitchen
  2. Upload your logo (preferably 1024x1024px)
  3. Download the generated icon pack
  4. Replace icons in android/app/src/main/res/
  5. Replace icons in ios/Runner/Assets.xcassets/AppIcon.appiconset/
Generate app icons using icon.kitchen
Using icon.kitchen to generate app icons for all platforms

Android Icon Locations:

  • mipmap-hdpi/ic_launcher.png - 72x72px
  • mipmap-mdpi/ic_launcher.png - 48x48px
  • mipmap-xhdpi/ic_launcher.png - 96x96px
  • mipmap-xxhdpi/ic_launcher.png - 144x144px
  • mipmap-xxxhdpi/ic_launcher.png - 192x192px
replace res folder in your project
Using icon.kitchen to generate app icons for all platforms

Step 5: Customize App Colors

5

Update App Color Scheme

Replace the default colors with your brand colors in the theme file.

// File: lib/core/theme/app_colors.dart

import 'package:flutter/material.dart';

class AppColors {
  // Replace with your primary brand color
  static const Color primary = Color(0xFF1976D2);  // Example: Blue
  
  // Replace with your secondary brand color
  static const Color secondary = Color(0xFFFF9800); // Example: Orange
  
  // Light and dark variants
  static const Color primaryLight = Color(0xFF42A5F5);
  static const Color primaryDark = Color(0xFF1565C0);
  
  // Background colors
  static const Color background = Color(0xFFFAFAFA);
  static const Color surface = Color(0xFFFFFFFF);
  
  // Text colors
  static const Color onPrimary = Color(0xFFFFFFFF);
  static const Color onSurface = Color(0xFF212121);
  
  // Status colors
  static const Color success = Color(0xFF4CAF50);
  static const Color warning = Color(0xFFFF9800);
  static const Color error = Color(0xFFF44336);
  static const Color info = Color(0xFF2196F3);
}

Color Picker Tips:

  • Use tools like Coolors to create color palettes
  • Ensure good contrast ratios for accessibility
  • Test colors in both light and dark themes
Customize app colors
Updating color scheme in app_colors.dart

Step 6: Firebase Setup

6

Configure Firebase for Push Notifications

Set up Firebase project and add configuration files to enable push notifications and real-time features.

Replace Demo Firebase Credentials

The source code ships with a demo Firebase project in lib/firebase_options.dart across all three apps (User, Store, Driver). You must replace all values in each app's firebase_options.dart with your own Firebase project credentials. Using the demo credentials will cause push notifications and real-time features to fail in production and may expose your data.

After creating your Firebase project, run the FlutterFire CLI to auto-generate the correct file:

# Install FlutterFire CLI
dart pub global activate flutterfire_cli

# Configure each app (run inside each app directory)
flutterfire configure --project=your-firebase-project-id

Step 6.1: Create Firebase Project

  1. Visit Firebase Console
  2. Click "Add project" and enter your app name
  3. Enable Analytics (recommended)
  4. Click "Create project"
Create Firebase project
Creating a new Firebase project

Step 6.2: Add Android App

  1. Click Android icon to add Android app
  2. Enter package name (e.g., com.yourappname.order)
  3. Download google-services.json
  4. Place it in android/app/ directory
Firebase Android setup
Adding Android app to Firebase project

Step 6.3: Add iOS App

  1. Click iOS icon to add iOS app
  2. Enter bundle ID (e.g., com.yourappname.order)
  3. Download GoogleService-Info.plist
  4. Place it in ios/Runner/ directory
Firebase iOS setup
Adding iOS app to Firebase project

Important

After adding Firebase files, run flutter clean and flutter pub get to ensure dependencies are properly configured.

Step 7: Change Package Name

7

Update Android Package Name

Replace the default package name with your unique package identifier.

Files to Update:

  • android/app/src/main/kotlin/com/quixko/quixko_app/MainActivity.kt
  • android/app/build.gradle
Change package name in AndroidManifest.xml
Updating package name in AndroidManifest.xml

Update build.gradle:

// File: android/app/build.gradle
android {
    namespace 'com.yourappname.order'  // Change this line
    compileSdk 36                      // Pin to SDK 36 explicitly
    // ...
}

Set compileSdk = 36 Explicitly

Replace compileSdkVersion flutter.compileSdkVersion with compileSdk 36 in the android block of android/app/build.gradle for both the User App and Store App. This ensures consistent build behaviour across all three apps.

For iOS (Optional):

Update bundle identifier in Xcode or in ios/Runner.xcodeproj/project.pbxproj

Step 8: Add Google Maps API Key

8

Configure Google Maps API

Add your Google Maps API key to enable map features in the app.

Replace the Stadia Maps Placeholder Key

The User App's lib/core/constants/app_constants.dart contains a Maps API key constant. The demo key has been replaced with the placeholder YOUR_STADIA_MAPS_API_KEY. You must replace this placeholder with your own key before building for production. Choose your map provider in the Admin Panel under Settings → Map Provider (Google Maps or OpenStreetMap/Stadia Maps).

Step 8.1: Get Google Maps API Key

  1. Visit Google Cloud Console
  2. Create a new project or select existing
  3. Enable "Maps SDK for Android" and "Maps SDK for iOS"
  4. Go to Credentials → Create Credentials → API Key
  5. Restrict the key to your apps for security

Step 8.2: Add API Key to Android

Add the API key in android/app/src/main/AndroidManifest.xml inside the <application> tag:

<application>
    <!-- Other application configurations -->
    
    <!-- Google Maps API Key -->
    <meta-data
        android:name="com.google.android.geo.API_KEY"
        android:value="YOUR_STADIA_MAPS_API_KEY"/>
        
</application>

Step 8.3: Add API Key to iOS

Add the API key in ios/Runner/AppDelegate.swift:

import UIKit
import Flutter
import GoogleMaps  // Add this import

@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
  override func application(
    _ application: UIApplication,
    didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
  ) -> Bool {
    GMSServices.provideAPIKey("YOUR_STADIA_MAPS_API_KEY")  // Add this line
    GeneratedPluginRegistrant.register(with: self)
    return super.application(application, didFinishLaunchingWithOptions: launchOptions)
  }
}
Add Google Maps API key
Adding Google Maps API key to AndroidManifest.xml

API Key Security

Never commit your actual API key to version control. Use environment variables or secure storage methods in production.

Final Steps

Build and Test Your Customized App

After completing all customizations:

  1. Run flutter clean to clear cache
  2. Run flutter pub get to fetch dependencies
  3. Test the app: flutter run
  4. Verify all customizations are working
  5. Build for production: flutter build apk or flutter build ios
# Clean and rebuild
flutter clean
flutter pub get

# Run on connected device
flutter run

# Build for release
flutter build apk --release
flutter build ios --release

Ready for Publishing

Your app is now customized with your brand! You can proceed to publish it to Google Play Store and Apple App Store under your developer account.

Troubleshooting Common Issues

Build Errors After Customization

  • Solution: Run flutter clean and rebuild
  • Check for any hardcoded references to old app name
  • Ensure all Firebase files are correctly placed

Maps Not Loading

  • Solution: Verify API key is correct and properly configured
  • Check that Maps SDK is enabled in Google Cloud Console
  • Ensure API key restrictions allow your app

Push Notifications Not Working

  • Solution: Verify Firebase configuration files
  • Check that Cloud Messaging is enabled
  • Ensure app package/bundle ID matches Firebase setup

App Signing and Store Deployment

Before publishing to Google Play or the Apple App Store, you must configure release signing for each app. Without correct signing, release builds cannot be distributed.

Required Before Publishing

Debug builds use an automatically generated debug keystore. Never use the debug keystore for production releases. Create a dedicated release keystore and keep it securely backed up — if lost, you cannot update your app on the Play Store.

Android — Generating a Release Keystore

1

Create a Keystore File

Run the following command once per app. Store the .jks file in a secure, backed-up location outside of version control.

bash
keytool -genkey -v \
  -keystore ~/release-keystore.jks \
  -keyalg RSA -keysize 2048 -validity 10000 \
  -alias your_key_alias

You will be prompted for a keystore password, your name, organisation, and location. Remember these values — they are required every time you build a release APK or AAB.

2

Create a key.properties File

Create android/key.properties in each app (do not commit this file — add it to .gitignore):

key.properties
storePassword=YOUR_KEYSTORE_PASSWORD
keyPassword=YOUR_KEY_PASSWORD
keyAlias=your_key_alias
storeFile=/absolute/path/to/release-keystore.jks
3

Configure android/app/build.gradle for Signing

build.gradle
// At the top of android/app/build.gradle, before android {}
def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

android {
    compileSdk 36
    namespace 'com.yourcompany.yourapp'

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : null
            storePassword keystoreProperties['storePassword']
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
            minifyEnabled true
            shrinkResources true
        }
    }
}
4

Build a Signed Release AAB (Recommended for Play Store)

bash
flutter build appbundle --release
# Output: build/app/outputs/bundle/release/app-release.aab

# Or build a signed APK
flutter build apk --release
# Output: build/app/outputs/flutter-apk/app-release.apk

Upload the .aab file to Google Play Console under Production → Releases → Create New Release.

iOS — Provisioning Profiles and Code Signing

macOS and Xcode Required

iOS builds and signing must be performed on a Mac with Xcode 13 or later installed. An active Apple Developer Program membership ($99/year) is required to distribute on the App Store.

1

Register an App ID and Bundle Identifier

  1. Sign in to developer.apple.com
  2. Go to Certificates, Identifiers and Profiles → Identifiers
  3. Click + and register a new App ID with your bundle identifier (e.g., com.yourcompany.yourapp)
  4. Enable the capabilities your app needs (Push Notifications, etc.)
2

Create a Distribution Certificate

  1. In Xcode, open Settings → Accounts and add your Apple ID
  2. Click Manage Certificates and add an Apple Distribution certificate
  3. Xcode will automatically create and install the certificate in your keychain
3

Create an App Store Distribution Provisioning Profile

  1. In Apple Developer portal, go to Profiles → +
  2. Select App Store Connect distribution
  3. Choose your App ID and distribution certificate
  4. Download and double-click the .mobileprovision file to install
4

Configure Signing in Xcode

  1. Open ios/Runner.xcworkspace in Xcode
  2. Select the Runner target → Signing and Capabilities
  3. Uncheck Automatically manage signing
  4. Set Team, Bundle Identifier, and select your provisioning profile
bash
# Update bundle ID in Flutter
# Edit ios/Runner/Info.plist
# Change CFBundleIdentifier to your bundle ID

# Or set via command line
flutter build ipa --release \
  --export-options-plist=ios/ExportOptions.plist
5

Build and Upload to App Store Connect

bash
# Build the IPA archive
flutter build ipa --release

# The .ipa is located at:
# build/ios/ipa/YourApp.ipa

# Upload via Xcode Organizer:
# Product → Archive → Distribute App → App Store Connect

# Or upload via command line using xcrun altool:
xcrun altool --upload-app \
  --type ios \
  --file build/ios/ipa/YourApp.ipa \
  --username "[email protected]" \
  --password "@keychain:AC_PASSWORD"

After upload, submit the build for review in App Store Connect under your app's TestFlight or App Store tab.

Repeat for All Three Apps

Perform the signing setup above independently for each of the three Flutter apps:

Each app requires its own unique bundle identifier / package name, its own Firebase app registration, and its own Play Store / App Store listing.

Google Play App Signing

Google Play now manages your app signing key on their servers (Play App Signing). When creating a new app in Play Console, enroll in Play App Signing and upload an upload keystore. Google will re-sign the final APK/AAB with their managed key. This protects you if your upload keystore is ever lost.

Quick Start Guide

Get your InAllCart platform up and running in minutes.

1. Initial Configuration

General Settings

Set site name, logo, timezone, currency.

Configure →

Payment Gateway

Connect Stripe, Razorpay, or other gateways.

Setup →

Firebase

Enable real-time features and push notifications.

Connect →

Email Service

Configure SMTP or email service provider.

Setup →

2. Create Your First Store

  1. Navigate to Admin → Stores → Add New
  2. Fill in store details (name, address, contact)
  3. Upload store logo and banner
  4. Set operating hours and delivery zones
  5. Activate the store

3. Add Products

  1. Go to Admin → Products → Add New
  2. Enter product details and pricing
  3. Upload product images
  4. Set inventory and variants
  5. Publish the product

Admin Dashboard

The admin dashboard provides a real-time overview of your platform with five key metrics: Gross Revenue, Net Commission, Active Orders, Active Products, and Active Stores. Each card links to the relevant management page.

Dashboard Metrics

Metric What It Shows Links To
Gross Revenue Total from all delivered orders Orders (delivered)
Net Commission Sum of all order item commissions Commissions page
Active Orders Confirmed + Packed orders pending delivery Orders (confirmed)
Active Products All published products across stores Products page
Active Stores Approved stores, with pending badge Stores page

Revenue Chart

A 7-day line chart shows daily revenue from delivered orders. The data updates in real-time and can be downloaded as a PDF report via the Download Report button.

Recent Transactions & Store Verifications

The bottom section shows the latest 5 orders (with customer, store, amount, status) and pending store approvals (stores awaiting KYC verification). Click any store to review and approve/reject.

Store Management

Manage all stores on the platform — from creation and approval to payouts and commission rules.

Store Statuses

Status Description
Pending Newly registered, awaiting admin approval
Active Approved and visible to customers
Suspended Temporarily disabled by admin
Rejected Application declined

Adding a New Store

  1. Go to Admin → Stores → Add New
  2. Select an existing Store Owner user (or create one under Users first)
  3. Fill in: Name, Address, City, State, Postal Code, Country, Coordinates
  4. Set Delivery Type: global (use platform rate), custom (flat/percentage/per-km), or self
  5. Assign Delivery Zones
  6. Set Commission percentage
  7. Save — store is created as Active immediately

Store Detail Tabs

KYC Verification

Stores must submit KYC documents. Admin can approve or reject each document individually. Once all documents pass, the KYC status changes to Verified.

Product Management

Add, edit, and manage all products across all stores from a single interface.

Product Fields

Field Description
Name / Description Product title and detailed description
Category / Brand For filtering and display
Base Price / Sale Price Regular and discounted pricing
Stock Quantity Inventory tracking with low-stock alerts
Variants Size, colour, weight etc. — each with own price/stock
Attributes Custom fields (e.g. Material, Brand)
Store Assign to a specific store (null = admin's own product)
Commission Per-product commission override

Import / Export

Bulk import products via Excel/CSV at Admin → Products → Import. Export the current product list for editing at Admin → Products → Export.

Categories

Organise products into a two-level hierarchy: parent categories and sub-categories.

Managing Categories

  1. Go to Admin → Categories
  2. Click Add New Category
  3. Enter Name, Slug (auto-generated), Image
  4. Optionally set a Parent Category to create a sub-category
  5. Toggle Active to make it visible

Categories can also be imported/exported via Admin → Categories → Import/Export.

Category Screen Content

Each category supports customised mobile app content — banners, promotional cards, product layout styles — controlled from Admin → Settings → Category Screen Content.

Order Management

View, filter, update, and manage all orders across the platform.

Order Filters

Order Actions

Action Description
Update Status Manually advance or change order status
Assign Delivery Partner Pick an active partner; chat is auto-initialised
Unassign Partner Only allowed before out-for-delivery stage
Remove Item Remove individual items and recalculate totals
Cancel Order Requires a reason; triggers refund if paid

Order Statistics Panel

At the top of the orders list: Total orders, Pending, Processing, Delivered, Cancelled, Today's Revenue, and Today's Commission.

Users & Roles

Manage all platform users across four roles.

User Roles

Role Access
admin Full platform access
store_owner Store partner portal — manage own store, products, orders
delivery_partner Delivery app — accept rides, track earnings
customer Customer app — browse, order, track

Role-Based Permissions

Admin can create custom roles at Admin → Roles with fine-grained permission toggles for each module (stores, products, orders, reports, settings, etc.).

Admin Staff

Create sub-admin accounts at Admin → Staff and assign them a custom role to limit their access scope.

Delivery Partners

Manage your fleet of delivery partners — approve, track earnings, and handle payouts.

Delivery Partner Statuses

Key Features

Assigning Partners to Orders

From any order detail page, click Assign Delivery Partner, select an active partner. The system auto-initialises a delivery chat and sends a push notification to the partner.

Zones

Delivery zones define geographic service areas. Stores and delivery partners are assigned to zones to control where orders can be placed and delivered.

Creating a Zone

  1. Go to Admin → Zones → Add New
  2. Draw the zone boundary on the map (polygon)
  3. Set zone name and activate it
  4. Assign stores to the zone from their store detail page

Global Zone

Enable Global Zone in General Settings to allow orders from any location without zone restrictions — useful for single-city platforms.

Coupons & Discounts

Create and manage promotional coupons for customers.

Coupon Types

Type Description
Percentage e.g. 20% off the order total
Fixed Amount e.g. ₹50 off
Free Delivery Waives delivery charge

Coupon Settings

Wallets

The built-in wallet system allows customers to hold a balance for instant checkout. Admins can view, credit, and manage customer wallets.

Wallet Features

Loyalty & Referrals

Configure at Admin → Settings → Loyalty. Set referral reward type (money or free delivery credits), amount, and conditions.

Reports & Analytics

Comprehensive reporting tools to understand platform performance.

Available Reports

Report Shows
Dashboard PDF Snapshot of all dashboard metrics
Sales Report Revenue by date range, store, category
Commission Report Admin earnings from each store
Delivery Earnings Per-partner earnings breakdown
Product Export Full product catalogue in Excel
Category Export Category tree in Excel

Download Dashboard Report

Click Download Report on the dashboard to get a PDF snapshot of all current metrics, generated via DomPDF.

Admin Settings

All platform settings are managed from Admin → Settings. The settings are organised into tabs:

General Settings

Configure Vendor Mode (Single or Multi-Vendor), Global Delivery Charge, Single Store Cart mode, default commission percentage, and order confirmation behaviour.

Mobile App Settings

Section Controls
Map Provider Google Maps or OpenStreetMap
Push Notifications Enable/disable; order updates, promotions, new products
Firebase Server key, Project ID, Service account JSON
Currency Default currency, symbol position, decimal places, multi-currency
Timezone System timezone, date/time format
Onboarding Enable onboarding screens; add/edit/reorder screens with images

Payment Settings

12 payment gateways are supported and configurable from the admin panel:

Each gateway has an enable/disable toggle and credential fields. Settings are saved to the .env file.

Authentication Settings

Configure login methods: Manual (email/password), Phone OTP, or Email OTP. Set OTP length, expiry, max attempts, and resend cooldown. Supported SMS gateways: Twilio, MSG91, 2Factor, Nexmo.

Other Settings Tabs

Customer App

The Flutter customer app (InAllCart_app) lets customers browse stores, add products to cart, checkout, and track orders in real time.

Known: Orders List Route is a Placeholder

In the current release, the orders list route in lib/core/router/app_router.dart (line 423) returns a Placeholder() widget instead of the full orders list page. The individual Order Detail page and order tracking are fully functional. The orders list page will be completed in the next update. If you need it immediately, you can implement the screen by connecting to the existing GET /api/orders endpoint.

Key Screens

Store Partner App

The Flutter store partner app (InAllCartstorepartner) lets store owners manage their orders, products, and earnings on mobile.

Key Features

Delivery Partner App

The Flutter delivery partner app (InAllCart_deliverypartner) lets drivers manage their availability, view assigned orders, and track earnings.

Key Features

Order Lifecycle

Every order passes through a defined series of statuses from placement to delivery.

%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f0f9ff','primaryTextColor':'#0c4a6e','primaryBorderColor':'#0ea5e9','lineColor':'#64748b','fontSize':'14px','fontFamily':'Inter, system-ui, sans-serif'}}}%%
flowchart TD
    Start(["🛒 Browse & Add to Cart"])
    Payment(["💳 Checkout & Pay"])
    Pending(["⏳ PENDING"])
    Confirmed(["✅ CONFIRMED"])
    Packed(["📦 PACKED"])
    PickedUp(["🏍️ PICKED UP"])
    OutForDelivery(["🚚 OUT FOR DELIVERY"])
    Delivered(["🎉 DELIVERED"])
    Cancelled(["❌ CANCELLED"])

    Start --> Payment
    Payment -->|Success| Pending
    Payment -.->|Failed| Cancelled
    Pending -->|Store Accepts| Confirmed
    Pending -.->|Store Rejects| Cancelled
    Confirmed -->|Store Prepares| Packed
    Packed -->|Delivery Picks Up| PickedUp
    PickedUp -->|En Route| OutForDelivery
    OutForDelivery -->|Delivered| Delivered
    Confirmed -.->|Any Time| Cancelled
    Packed -.->|Any Time| Cancelled

    classDef startStyle fill:#f0f9ff,stroke:#0ea5e9,stroke-width:3px,color:#0c4a6e
    classDef pendingStyle fill:#fef3c7,stroke:#f59e0b,stroke-width:3px,color:#78350f
    classDef confirmedStyle fill:#dbeafe,stroke:#3b82f6,stroke-width:3px,color:#1e40af
    classDef packedStyle fill:#e0e7ff,stroke:#6366f1,stroke-width:3px,color:#3730a3
    classDef completedStyle fill:#dcfce7,stroke:#22c55e,stroke-width:3px,color:#166534
    classDef cancelledStyle fill:#fee2e2,stroke:#ef4444,stroke-width:3px,color:#991b1b

    class Start,Payment startStyle
    class Pending pendingStyle
    class Confirmed confirmedStyle
    class Packed packedStyle
    class PickedUp,OutForDelivery packedStyle
    class Delivered completedStyle
    class Cancelled cancelledStyle
                    
Complete Order Lifecycle — from cart to delivery

Status Explanations

1

Pending

Order placed, waiting for store to accept

2

Confirmed

Store accepted the order

3

Packed

Order is packed and ready for pickup

4

On the Way

Delivery partner picked up the order

5

Delivered

Order successfully delivered!

Who Does What?

%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#e3f2fd','primaryTextColor':'#1565c0','primaryBorderColor':'#1976d2','lineColor':'#42a5f5'}}}%%
graph LR
    Customer["👤 Customer"] -->|Places Order| System["⚙️ System"]
    System -->|Notifies| Store["🏪 Store"]
    Store -->|Confirms & Packs| System
    System -->|Assigns| Delivery["🏍️ Delivery Partner"]
    Delivery -->|Delivers to| Customer

    style Customer fill:#e3f2fd,stroke:#1976d2
    style Store fill:#f3e5f5,stroke:#7b1fa2
    style Delivery fill:#fff9c4,stroke:#f9a825
    style System fill:#e8f5e9,stroke:#388e3c
                    
System Participants — four main actors in every order

Environment Configuration

Configure your InAllCart installation by editing the .env file in the root directory.

Basic Configuration

.env
APP_NAME="InAllCart"
APP_ENV=production
APP_KEY=base64:your_app_key_here
APP_DEBUG=false
APP_URL=https://yourdomain.com

# Timezone and Locale
APP_TIMEZONE=UTC
APP_LOCALE=en

Database Configuration

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=InAllCart_db
DB_USERNAME=InAllCart_user
DB_PASSWORD=your_secure_password

Cache & Queue Configuration

.env
# Cache Driver (file, redis, memcached)
CACHE_DRIVER=redis

# Queue Driver (sync, database, redis)
QUEUE_CONNECTION=redis

# Redis Configuration
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

File Storage Configuration

.env
# Filesystem Driver (local, s3, cloudinary)
FILESYSTEM_DISK=local

# AWS S3 Configuration (if using S3)
AWS_ACCESS_KEY_ID=your_access_key
AWS_SECRET_ACCESS_KEY=your_secret_key
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=your_bucket_name
AWS_USE_PATH_STYLE_ENDPOINT=false

Google Maps Configuration

.env
GOOGLE_MAPS_API_KEY=your_google_maps_api_key

Security Note

Never commit your .env file to version control. Keep sensitive credentials secure and use environment-specific values.

After Configuration Changes

After modifying the .env file, clear the configuration cache:

bash
php artisan config:clear
php artisan cache:clear

Payment Gateway Configuration

Configure payment gateways to accept payments from customers. InAllCart supports multiple payment providers.

Stripe Configuration

1. Get Stripe Credentials

  1. Sign up at stripe.com
  2. Navigate to Developers → API Keys
  3. Copy your Publishable Key and Secret Key

2. Configure in .env

.env
STRIPE_KEY=pk_test_your_publishable_key
STRIPE_SECRET=sk_test_your_secret_key
STRIPE_WEBHOOK_SECRET=whsec_your_webhook_secret

3. Setup Webhooks

Configure webhook endpoint in Stripe Dashboard:

PayPal Configuration

1. Get PayPal Credentials

  1. Sign up at developer.paypal.com
  2. Create a REST API app
  3. Copy Client ID and Secret

2. Configure in .env

.env
PAYPAL_MODE=sandbox  # or 'live' for production
PAYPAL_CLIENT_ID=your_client_id
PAYPAL_SECRET=your_secret_key

Razorpay Configuration (India)

.env
RAZORPAY_KEY=rzp_test_your_key_id
RAZORPAY_SECRET=your_secret_key

Enable/Disable Payment Methods

Configure available payment methods in Admin Panel:

  1. Go to Settings → Payment Methods
  2. Toggle payment gateways on/off
  3. Set display order
  4. Configure gateway-specific settings

Testing Payments

Stripe Test Cards

Card Number Result
4242 4242 4242 4242 Success
4000 0000 0000 9995 Declined
4000 0025 0000 3155 Requires authentication

Use any future expiry date and any 3-digit CVC.

Firebase Configuration

Firebase powers real-time features, push notifications, and cloud messaging in InAllCart.

1. Create Firebase Project

  1. Go to Firebase Console
  2. Click "Add Project" and follow the setup wizard
  3. Enable Blaze (pay-as-you-go) plan for production use

2. Enable Required Services

3. Get Service Account Key

  1. In Firebase Console, go to Project Settings → Service Accounts
  2. Click "Generate New Private Key"
  3. Download the JSON file
  4. Place it in storage/app/firebase/ directory
  5. Rename to firebase-credentials.json

4. Configure in .env

.env
FIREBASE_CREDENTIALS=firebase-credentials.json
FIREBASE_DATABASE_URL=https://your-project.firebaseio.com

5. Configure Mobile Apps

Android App

  1. In Firebase Console, add an Android app
  2. Enter package name (e.g., com.yourcompany.InAllCart)
  3. Download google-services.json
  4. Place in android/app/ directory

iOS App

  1. In Firebase Console, add an iOS app
  2. Enter bundle ID (e.g., com.yourcompany.InAllCart)
  3. Download GoogleService-Info.plist
  4. Add to Xcode project in ios/Runner/

6. Test Firebase Connection

bash
php artisan firebase:test

Connection Successful

If the test passes, Firebase is properly configured and ready to use.

Firebase Security Rules

Configure Firestore security rules to protect your data:

Firestore Rules
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /orders/{orderId} {
      allow read: if request.auth != null;
      allow write: if request.auth != null && 
                      request.auth.uid == resource.data.userId;
    }
  }
}

Email Service Configuration

Configure email delivery for transactional emails, notifications, and marketing campaigns.

SMTP Configuration

Using Gmail SMTP

.env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=your-app-password
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME="${APP_NAME}"

Gmail App Password

For Gmail, you need to generate an App Password from your Google Account settings. Regular passwords won't work with 2FA enabled.

SendGrid Configuration

  1. Sign up at sendgrid.com
  2. Create an API key with "Mail Send" permissions
  3. Configure in .env:
.env
MAIL_MAILER=smtp
MAIL_HOST=smtp.sendgrid.net
MAIL_PORT=587
MAIL_USERNAME=apikey
MAIL_PASSWORD=your_sendgrid_api_key
MAIL_ENCRYPTION=tls

Mailgun Configuration

.env
MAIL_MAILER=mailgun
MAILGUN_DOMAIN=mg.yourdomain.com
MAILGUN_SECRET=your_mailgun_api_key
MAILGUN_ENDPOINT=api.mailgun.net

Email Templates

Customize email templates in Admin Panel:

  1. Go to Settings → Email Templates
  2. Select template to edit (Order Confirmation, Password Reset, etc.)
  3. Customize subject and body with variables
  4. Preview and save changes

Available Variables

Variable Description
{{name}} Customer name
{{order_number}} Order number
{{total}} Order total amount
{{store_name}} Store name
{{tracking_url}} Order tracking link

Test Email Configuration

bash
php artisan mail:test [email protected]

Troubleshooting

Common issues and their solutions to help you resolve problems quickly.

Installation Issues

500 Internal Server Error

Symptoms: White screen or 500 error after installation

Solutions:

  1. Check file permissions:
    bash
    chmod -R 755 storage bootstrap/cache
    chown -R www-data:www-data storage bootstrap/cache
  2. Clear cache:
    bash
    php artisan cache:clear
    php artisan config:clear
    php artisan view:clear
  3. Check error logs in storage/logs/laravel.log

Database Connection Failed

Symptoms: "SQLSTATE[HY000] [2002] Connection refused"

Solutions:

Composer Dependencies Error

Symptoms: Missing vendor directory or class not found errors

Solution:

bash
composer install --no-dev --optimize-autoloader

Payment Issues

Stripe Payments Failing

Checklist:

PayPal Redirect Issues

Solutions:

Mobile App Issues

App Not Connecting to API

Symptoms: Network errors or "Unable to connect" messages

Solutions:

  1. Verify API URL in app configuration
  2. Check SSL certificate is valid
  3. Ensure API endpoints are accessible (test with Postman)
  4. Check CORS settings in backend

Push Notifications Not Working

Checklist:

Google Maps Not Loading

Solutions:

Performance Issues

Slow Page Load Times

Optimizations:

  1. Enable caching:
    bash
    php artisan config:cache
    php artisan route:cache
    php artisan view:cache
  2. Use Redis for cache and sessions
  3. Enable OPcache in PHP configuration
  4. Optimize images and use CDN

Queue Jobs Not Processing

Solutions:

  1. Check queue worker is running:
    bash
    php artisan queue:work --tries=3
  2. Verify queue connection in .env
  3. Check failed jobs table: php artisan queue:failed
  4. Restart queue workers after code changes

Email Issues

Emails Not Sending

Debugging steps:

  1. Test email configuration:
    bash
    php artisan mail:test [email protected]
  2. Check mail logs in storage/logs/
  3. Verify SMTP credentials
  4. Check if emails are in spam folder
  5. Ensure queue workers are running (if using queued emails)

Getting Help

Need More Help?

If you can't find a solution here, check the FAQ section or contact support with detailed error messages and logs.

Frequently Asked Questions

Quick answers to common questions about InAllCart.

General Questions

What is InAllCart?

InAllCart is a complete multi-vendor delivery platform that connects customers, store owners, and delivery partners. It includes a Laravel backend, Flutter mobile apps, and a comprehensive admin panel.

What are the system requirements?

You need PHP 8.1+, MySQL 5.7+, and a web server (Apache/Nginx). For mobile apps, you need Flutter 3.0+ for development. See the System Requirements section for complete details.

Can I use InAllCart for my specific business type?

Yes! InAllCart is flexible and can be adapted for restaurants, grocery stores, pharmacies, retail shops, and any business that needs delivery services.

Is the source code included?

Yes, you receive full source code for both backend and mobile applications with no encryption or obfuscation.

Installation & Setup

How long does installation take?

Typical installation takes 15-30 minutes using the automated installer. Additional time may be needed for third-party service configuration.

Do I need coding knowledge to install?

Basic server management knowledge is helpful, but the web-based installer guides you through the process. For customization, PHP and Flutter knowledge is required.

Can I install on shared hosting?

While possible, we recommend VPS or dedicated hosting for better performance and control. Shared hosting may have limitations with queue workers and cron jobs.

Features & Functionality

Does it support multiple languages?

Yes, InAllCart includes multi-language support with RTL (right-to-left) compatibility. You can add translations through the admin panel.

Can I customize the mobile apps?

Absolutely! You have full access to the Flutter source code and can customize colors, branding, features, and functionality. See App Customization guide.

What payment gateways are supported?

InAllCart supports Stripe, PayPal, Razorpay, and cash on delivery. Additional gateways can be integrated with custom development.

Is real-time tracking included?

Yes, customers can track delivery partners in real-time using GPS tracking powered by Google Maps and Firebase.

Mobile Applications

How many mobile apps are included?

Three Flutter apps are included: Customer App, Store Partner App, and Delivery Partner App. All work on both iOS and Android.

Can I publish apps under my own brand?

Yes, you can rebrand the apps with your logo, colors, and name, then publish to App Store and Play Store under your developer account.

Do apps work offline?

Apps require internet connection for most features, but include offline caching for better performance and can queue actions when offline.

Pricing & Licensing

Is there a monthly fee?

No monthly fees for the software itself. You only pay for hosting, domain, and third-party services (Firebase, payment gateways, etc.).

Can I use it for multiple domains?

The regular license allows one installation. Extended license permits multiple installations. Check your license terms for details.

Do I get free updates?

Yes, you receive free updates for the duration of your support period. Updates include bug fixes, security patches, and new features.

Support & Maintenance

What support is included?

Support includes installation assistance, bug fixes, and general usage questions. Custom development and modifications are not included.

How do I get support?

Submit a ticket through our support portal with your purchase code. See the Support section for contact details.

Is documentation included?

Yes, comprehensive documentation (this guide) covers installation, configuration, API reference, and troubleshooting.

Support

Get help with installation, configuration, and troubleshooting.

Before Contacting Support

Please check these resources first:

  • Read the relevant documentation section
  • Check the Troubleshooting guide
  • Review the FAQ section
  • Search for similar issues in support portal

Support Channels

Support Tickets

Submit a ticket for technical issues, bugs, or installation help.

Open Ticket

Email Support

For general inquiries and pre-sales questions.

Email Us

Documentation

Comprehensive guides and API reference.

Browse Docs

Community Forum

Connect with other users and share knowledge.

Visit Forum

What to Include in Support Requests

To help us resolve your issue quickly, please include:

Response Times

Priority Response Time Examples
Critical 4-8 hours Site down, payment failures, security issues
High 12-24 hours Major features not working, installation issues
Normal 24-48 hours General questions, minor bugs, configuration help
Low 48-72 hours Feature requests, enhancement suggestions

Support Hours

Our support team operates Monday-Friday, 9 AM - 6 PM EST. Tickets submitted outside business hours will be addressed on the next business day.

Custom Development

Need custom features or modifications beyond standard support?

Contact us at [email protected] for a quote.

Changelog

Track updates, new features, and bug fixes across versions.

Version 1.0.0

March 6, 2026

🎉 Initial Release

First stable release of InAllCart multi-vendor platform.

Features

  • Complete multi-vendor marketplace system
  • Laravel 10.x backend with RESTful API
  • Three Flutter mobile applications (Customer, Store, Delivery)
  • Real-time order tracking with Firebase
  • Multiple payment gateway support (Stripe, PayPal, Razorpay)
  • Comprehensive admin panel
  • Store management dashboard
  • Delivery partner app with earnings tracking
  • Push notifications via Firebase Cloud Messaging
  • Multi-language and RTL support
  • Advanced analytics and reporting
  • Coupon and promotion system
  • Review and rating system
  • Wallet and loyalty points
  • Email and SMS notifications

Backend Features

  • User role management (Admin, Store Owner, Delivery Partner, Customer)
  • Product management with variants
  • Order management with status tracking
  • Commission management system
  • Payout management for stores and delivery partners
  • Zone-based delivery configuration
  • Tax calculation system
  • Automated email templates

Mobile App Features

  • Intuitive user interfaces
  • Google Maps integration
  • Real-time GPS tracking
  • In-app chat system
  • Offline support with caching
  • Social login integration
  • Multiple payment methods
  • Order history and reordering

Security

  • Laravel Sanctum API authentication
  • CSRF protection
  • XSS prevention
  • SQL injection protection
  • Rate limiting on API endpoints
  • Secure password hashing

Stay Updated

Subscribe to our newsletter or check the support portal regularly for update notifications and new version releases.