v2.0

Prerequisites

Important
Please ensure all prerequisites are met before proceeding with the installation.

Server Requirements

PHP 8.1+, MySQL 5.7+ / MariaDB 10.3+, Apache or Nginx, SSL certificate (production), 2GB+ RAM, 10GB+ disk.

PHP Extensions

OpenSSL, PDO, Mbstring, Tokenizer, XML, GD Library, cURL, Fileinfo.

Detailed Server Requirements

RequirementMinimumRecommended
PHP8.08.1 or 8.2
MySQL5.78.0 / MariaDB 10.6+
Web ServerApache 2.4 or Nginx 1.18Latest stable
RAM2 GB4 GB+
Disk Space10 GB20 GB+ (for product images & assets)
PHP ExtensionsOpenSSL, PDO, Mbstring, Tokenizer, XML, GD, cURL, Fileinfo, BCMath, JSON, Zip
SSL CertificateRequired for productionLet's Encrypt (free) or commercial
Composer2.xLatest
Node.js16.x (for asset compilation)18.x LTS

Verify your PHP version:

Terminal
php -v

Installation

How to Purchase a MyntCart License

1

Visit the License Portal

Go to https://license.codemynt.in — this is the official CodeMynt license purchase website. Create an account or log in.

2

Purchase MyntCart License

Select the MyntCart eCommerce CMS package and complete the payment. After purchase, you receive:

  • Purchase Key — format: XXXX-XXXX-XXXX-XXXX (e.g. 99F2-5085-DADC-A47B)
  • Buyer Username — your registered email (e.g. you@email.com)
  • Project Files — downloadable MyntCart zip file

You can also find your purchase key anytime by logging into license.codemynt.in → My Purchases.

3

Download Project Files

Download the MyntCart project zip from the license portal. This contains the full Laravel application, database schema, and all required assets.

Keep Your License Key Safe
Your purchase key is required during installation and cannot be recovered if lost. Store it securely. You can find it in your purchase confirmation email.

Pre-Installation — Upload Files to Server

Localhost (WAMP / XAMPP / Laragon)

  1. Extract the MyntCart zip file
  2. Copy the project folder to your web server root:
Paths
# WAMP
C:\wamp64\www\myntcart\

# XAMPP
C:\xampp\htdocs\myntcart\

# Laragon
C:\laragon\www\myntcart\
  1. Create an empty database named myntcart in phpMyAdmin (collation: utf8mb4_unicode_ci)
  2. Open your browser and go to: http://localhost/myntcart/secure-install

cPanel / Shared Hosting

  1. Login to cPanel → File Manager → Navigate to public_html
  2. Upload the MyntCart zip and extract it
  3. Create MySQL database: cPanel → MySQL Databases → Create DB + User → Add user with ALL PRIVILEGES
  4. Open your browser and go to: https://yourdomain.com/secure-install

VPS / Dedicated Server

  1. Install PHP 8.1+, MySQL, Apache/Nginx, and required PHP extensions
  2. Upload/clone the project to your server (e.g. /var/www/myntcart)
  3. Point your virtual host / Nginx server block to the public directory
  4. Set permissions: chmod -R 775 storage bootstrap/cache
  5. Configure SSL (Let's Encrypt recommended)
  6. Open your browser and go to: https://yourdomain.com/secure-install

Create Database & Configure .env

Before running the installer wizard, create the database and configure the environment file.

A

Create an Empty MySQL Database

Open phpMyAdmin (or cPanel → MySQL Databases) and create a new database. Note down the credentials — you'll need them in the next step and during the installer wizard.

  1. Open phpMyAdmin (http://localhost/phpmyadmin)
  2. Click "New" in the left sidebar
  3. Enter database name: myntcart
  4. Select collation: utf8mb4_unicode_ci
  5. Click "Create"
  1. Login to cPanel → MySQL Databases
  2. Under "Create New Database" → enter name (e.g. username_myntcart) → click Create Database
  3. Under "MySQL Users" → create a new user with a strong password
  4. Under "Add User To Database" → select your user + database → grant ALL PRIVILEGES → click Make Changes
MySQL
-- Login to MySQL
mysql -u root -p

-- Create database
CREATE DATABASE myntcart CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- Create user (production only)
CREATE USER 'myntcart_user'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON myntcart.* TO 'myntcart_user'@'localhost';
FLUSH PRIVILEGES;
B

Configure the .env File

In the MyntCart project root, copy .env.example to .env and update the following values with your actual credentials:

.env
# Application
APP_NAME="MyntCart"
APP_ENV=local                    # Change to 'production' on live server
APP_DEBUG=true                   # Change to 'false' on live server
APP_URL=http://localhost/myntcart # Your domain on live server

# Database — match the credentials you just created
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myntcart
DB_USERNAME=root               # Your DB username
DB_PASSWORD=                    # Your DB password (empty for localhost)

# License — from your purchase email
PURCHASE_CODE=XXXX-XXXX-XXXX-XXXX
BUYER_USERNAME=your@email.com
cPanel users
On shared hosting, the database name and username are prefixed with your cPanel username (e.g. cpaneluser_myntcart and cpaneluser_dbuser). Use the full prefixed names in .env.
C

Open the Installer

Now open your browser and navigate to the secure installer URL:

URL
# Localhost
http://localhost/myntcart/secure-install

# Live server
https://yourdomain.com/secure-install

Secure Installation Wizard (Step-by-Step)

The installer guides you through 7 steps. Do not close your browser during any step.

Welcome Screen

The installer shows a welcome page confirming you're about to install MyntCart eCommerce. It highlights three key points:

  • Secure Process — advanced security with no bypass methods or vulnerabilities
  • Step-by-Step — guided installation with real-time validation and progress tracking
  • Quick Setup — complete installation in minutes with automated configuration

Review the important requirements notice, then click "Start Installation" to proceed.

System Requirements Check

The system automatically checks if your server meets all requirements. Each item shows a ✓ Passed or ✗ Failed badge:

  • PHP version (8.0 or higher)
  • PHP Extensions: OpenSSL, PDO, Mbstring, Tokenizer, XML, GD, cURL, Fileinfo, BCMath, JSON, Zip
  • Directory permissions: storage/, bootstrap/cache/, .env writable

All passed? → Click "Continue to License Verification"

Any failed? → Fix the issues (update PHP, enable extensions via php.ini, set folder permissions to 775), then click "Recheck Requirements".

License Verification

Enter your license credentials purchased from license.codemynt.in:

  • Purchase Code — format: XXXX-XXXX-XXXX-XXXX (e.g. 99F2-5085-DADC-A47B). Found in your purchase confirmation email or license portal → My Purchases.
  • Buyer Username — your registered email (e.g. you@email.com)

The installer verifies these against license.codemynt.in. On success → proceeds to asset download. On failure → double-check credentials and try again.

Security
Development codes and bypass methods are blocked. Only valid purchase codes from CodeMynt are accepted. Your server must have outbound internet access to license.codemynt.in.

Download Application Assets

After license verification, the installer downloads required application assets from the secure CodeMynt distribution server:

  • A progress bar shows download status (e.g. 0/4 → 4/4 packages)
  • Requires a stable internet connection
  • May take 1–5 minutes depending on server speed
  • Do NOT close your browser or navigate away
Disk Space
The installer checks available disk space before downloading. Ensure you have at least 500MB free on your server.

Database Setup

Enter your database connection details. The installer tests the connection before proceeding:

FieldValueNotes
Database Hostlocalhostor 127.0.0.1
Port3306Default MySQL port
Database NamemyntcartThe empty database you created earlier
UsernamerootYour MySQL user with full privileges
Password(your password)Empty for localhost WAMP/XAMPP

The installer writes these to your .env file automatically. Click "Test Connection & Continue".

Database Import (Schema)

The installer imports the complete database with 132 tables and sample data. A progress bar tracks the import process.

  • Takes 1–3 minutes depending on server performance
  • Do NOT close your browser during import
  • Do NOT press back or refresh
  • Sample data and default configurations are included
  • If import fails, the installer offers a retry option
Important
This step writes all 132 tables into your database. If your database already has tables, they will be overwritten. Always use a fresh empty database.

Admin Account Setup

Create your super administrator account with full access to all system features:

FieldDescription
Full NameAdmin's display name shown in the panel
Email AddressUsed for login (e.g. admin@yourdomain.com)
Phone NumberAdmin contact number
PasswordMinimum 8 characters — include uppercase, lowercase, numbers, and symbols

Click "Create Account & Finish" to complete the installation.

Skip this step?
If you skip creating a custom admin account, the system uses default credentials:

Admin Panel URL: https://yourdomain.com/admin (or http://localhost/myntcart/admin)
Email: admin@gmail.com
Password: 123456

Change these immediately after first login — go to Admin Panel → Profile → Change Password.

Installation Complete!

The success screen confirms everything is set up:

  • ✓ Security Configured — all security measures activated
  • ✓ Database Imported — 132 tables with sample data
  • ✓ Admin Account Created — your super admin is ready

Default admin credentials are shown on this page (Email: admin@gmail.com / Password: 123456). Click "Go to Admin Panel" to log in.

First thing to do
Change the default admin password immediately after your first login. Go to Admin Panel → Profile → Change Password.

Post-Installation (cPanel / VPS only)

If deploying on a live server, complete these additional steps after the wizard finishes:

A

Setup Cron Jobs

Required for scheduled tasks (order expiry, session cleanup, notifications). Add in cPanel → Cron Jobs or via crontab:

Cron
* * * * * /usr/local/bin/php /home/username/public_html/artisan schedule:run
B

Configure SSL

Set up HTTPS with an SSL certificate. Let's Encrypt (free) or your hosting provider's SSL. Update APP_URL in .env to https://.

C

Set Production Mode

Edit .env → set APP_ENV=production and APP_DEBUG=false. This hides error details from users and enables caching.

Environment Settings

The .env file contains all essential configuration. Copy from .env.example and update each section.

Database Configuration

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myntcart
DB_USERNAME=your_username
DB_PASSWORD=your_password

Application Configuration

.env
APP_NAME="MyntCart"
APP_ENV=local
APP_KEY=base64:your_app_key_here
APP_DEBUG=true
APP_URL=http://localhost

Mail Configuration

.env
MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your_email@gmail.com
MAIL_PASSWORD=your_app_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=your_email@gmail.com
MAIL_FROM_NAME="MyntCart"

File & Folder Permissions

Never use 777 permissions
This is a major security vulnerability. Use the recommended permissions below.
PathPermissionPurpose
storage/775Cache, logs, sessions, uploads
bootstrap/cache/775Framework bootstrap cache
public/assets/775Public uploaded files, images
.env644Environment config (sensitive)
artisan755Laravel CLI entry point
Terminal
# Set permissions (Linux)
chmod -R 775 storage bootstrap/cache public/assets
chmod 644 .env
chmod 755 artisan

# Set ownership for Apache
sudo chown -R www-data:www-data storage bootstrap/cache public/assets

Google Maps API Setup (Complete Guide)

Google Maps powers store locator, delivery tracking, live map, address autocomplete, distance-based shipping calculation (Haversine), and route navigation across all MyntCart web and Flutter apps.

1. Create a Google Cloud Project

1

Go to Google Cloud Console

Open console.cloud.google.com → Sign in with your Google account.

2

Create New Project

Click "Select a Project" (top bar) → "New Project" → Enter name: MyntCart → Click Create. Wait for it to be created, then select it as the active project.

2. Enable Required APIs

Go to APIs & Services → Library in the left sidebar. Search for and enable each of these APIs one by one:

API NameUsed For in MyntCart
Maps JavaScript APIDisplaying maps on the website (store locator, checkout address picker, admin delivery map)
Maps SDK for AndroidMaps in all Flutter Android apps (customer, vendor, store, delivery)
Maps SDK for iOSMaps in all Flutter iOS apps
Places APIAddress autocomplete / search-as-you-type on checkout and address forms
Geocoding APIConverting addresses to lat/long coordinates and vice versa
Directions APIRoute planning and navigation for delivery personnel
Distance Matrix APICalculating delivery distance and time between store and customer (Haversine shipping)
Geolocation APIDetecting user's current location on the website
Enable ALL listed APIs
If you miss any API, the related feature will break silently — maps won't load, autocomplete won't work, or delivery tracking will fail. Enable all 8 APIs listed above.

3. Create an API Key

1

Generate Key

Go to APIs & Services → Credentials → Click "Create Credentials" → Select "API Key". A new key is generated instantly. Copy it.

4. Restrict the API Key (Important for Security)

1

Click "Edit API Key"

Click on your newly created API key → "Edit" or the pencil icon.

2

Application Restrictions

For the web backend key: Select "HTTP referrers (websites)" → Add:

Allowed Referrers
https://yourdomain.com/*
http://localhost/*
3

API Restrictions

Select "Restrict key" → Check only the 8 APIs you enabled above. Click Save.

Separate key for Flutter apps
For Flutter apps, create a second API key restricted to "Android apps" (by package name) and a third key restricted to "iOS apps" (by bundle ID). This is more secure than using one unrestricted key everywhere.

5. Enable Billing

1

Link a Billing Account

Go to Billing in Google Cloud Console → Link a billing account (credit card required). Google provides $200 free monthly credit which covers typical e-commerce usage (thousands of map loads and API calls).

2

Set Budget Alerts

Go to Billing → Budgets & alerts → Create a budget (e.g. $50/month) to get notified before exceeding the free tier.

6. Configure in MyntCart

Web Backend (.env + Admin Panel)

.env
GOOGLE_MAPS_API_KEY=AIzaSyXXXXXXXXXXXXXXXXXXXX

Then go to Admin Panel → System Settings → 3rd Party & Other Configs → Google Map APIs → Enter the API Key → Toggle Active → Click Save.

Flutter Apps (Android)

Edit android/app/src/main/AndroidManifest.xml in each Flutter app:

AndroidManifest.xml
<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="YOUR_ANDROID_MAPS_API_KEY" />

Flutter Apps (iOS)

Edit ios/Runner/AppDelegate.swift in each Flutter app:

AppDelegate.swift
GMSServices.provideAPIKey("YOUR_IOS_MAPS_API_KEY")

Google Maps Config Summary

WhereFile / LocationKey Type
Web backend.env + Admin Panel → 3rd Party → Google Map APIsHTTP referrer restricted key
Android apps (all 4)android/app/src/main/AndroidManifest.xmlAndroid apps restricted key
iOS apps (all 4)ios/Runner/AppDelegate.swiftiOS apps restricted key

reCAPTCHA Setup (Complete Guide)

Google reCAPTCHA protects login, registration, contact, and checkout forms from spam bots.

1. Go to reCAPTCHA Console

1

Open reCAPTCHA Admin

Go to google.com/recaptcha/admin → Sign in with your Google account.

2. Create a New Site

1

Click "+" (Create)

Click the "+" button to register a new site.

2

Fill in Details

Enter:

  • Label: MyntCart (any descriptive name)
  • reCAPTCHA type: Select reCAPTCHA v2"I'm not a robot" Checkbox
  • Domains: Add all your domains:
Domains
yourdomain.com
www.yourdomain.com
localhost
staging.yourdomain.com
3

Accept Terms & Submit

Check "Accept the reCAPTCHA Terms of Service" → Click Submit.

3. Copy Your Keys

After submission, Google shows two keys:

KeyWhere It's UsedExample
Site KeyFrontend HTML — displayed to the user in the reCAPTCHA widget6LcXXXXXXXXXXXXXXXXXXXXXXX
Secret KeyServer-side — used to verify the response with Google's API (never expose publicly)6LcXXXXXXXXXXXXXXXXXXXXXXX

4. Configure in MyntCart

Add to .env file

.env
RECAPTCHA_SITE_KEY=6LcXXXXXXXXXXXXXXXXXXXXXXX
RECAPTCHA_SECRET_KEY=6LcXXXXXXXXXXXXXXXXXXXXXXX

Enable in Admin Panel

  1. Go to Admin Panel → System Settings → 3rd Party & Other Configs → Recaptcha
  2. Enter Site Key and Secret Key
  3. Select status: Active
  4. Click Save
Where reCAPTCHA appears
Once enabled, the "I'm not a robot" checkbox appears on: customer login, customer registration, vendor registration, contact us form, and forgot password page. No code changes needed — it's automatic.

5. Manage & Monitor

Go back to reCAPTCHA Admin Console anytime to:

  • View request statistics (pass/fail rates, suspicious traffic)
  • Add or remove domains
  • Regenerate keys if compromised
  • Switch between reCAPTCHA v2 and v3

Firebase Setup (Complete Guide)

Firebase powers push notifications, OTP phone authentication, Google sign-in, and crash reporting in MyntCart. You need one Firebase project for the web backend and all Flutter apps.

1. Create Firebase Project

1

Go to Firebase Console

Open console.firebase.google.com → Sign in with your Google account → Click "Create a project" (or "Add project").

2

Enter Project Name

Name your project (e.g. myntcart). Firebase auto-generates a Project ID below. Click Continue.

3

Google Analytics (optional)

Toggle Analytics on/off. If on, select or create an Analytics account. Click Create project. Wait 30–60 seconds.

2. Add a Web App (for MyntCart Backend)

1

Register Web App

In the project dashboard, click the Web icon (</>) → Enter nickname: MyntCart Web → Click Register app.

2

Copy the Firebase Config Object

Firebase shows a JavaScript config object. Copy these values — you'll need them for your .env file.

3. Where to Find Each Config Value

Every Firebase config value has a specific location in the Firebase Console. Here's exactly where to find each one:

.env VariableWhere to Find in Firebase ConsoleExample Value
FIREBASE_API_KEYProject Settings (⚙ gear icon) → General tab → scroll to "Your apps" → Web app → apiKeyAIzaSyDSb3S-PbqQC-xxxxx
FIREBASE_AUTH_DOMAINSame location → authDomainmyntcart.firebaseapp.com
FIREBASE_PROJECT_IDSame location → projectId (also visible at top of Project Settings page)myntcart
FIREBASE_STORAGE_BUCKETSame location → storageBucketmyntcart.firebasestorage.app
FIREBASE_MESSAGING_SENDER_IDSame location → messagingSenderId (also shown in Cloud Messaging tab as "Sender ID")540949947647
FIREBASE_APP_IDSame location → appId1:540949947647:web:abc123
FIREBASE_SERVER_KEYProject Settings → Cloud Messaging tab → Server key (under Cloud Messaging API - Legacy). If not visible, click "Manage API" to enable it in Google Cloud Console.AAAA-xxxxx:APA91bHxxxxx

4. Add to .env File

.env
# Firebase Web Config (from Project Settings → General → Your apps)
FIREBASE_API_KEY=AIzaSyDxxxxxxxxxxxxxxxx
FIREBASE_AUTH_DOMAIN=your-project.firebaseapp.com
FIREBASE_PROJECT_ID=your-project-id
FIREBASE_STORAGE_BUCKET=your-project.firebasestorage.app
FIREBASE_MESSAGING_SENDER_ID=540949947647
FIREBASE_APP_ID=1:540949947647:web:xxxxxx

# FCM Server Key (from Project Settings → Cloud Messaging)
FIREBASE_SERVER_KEY=AAAA-xxxxx:APA91bHxxxxxxx

5. Cloud Messaging (FCM) — Push Notifications

FCM sends push notifications to all MyntCart Flutter apps (Customer, Vendor, Store, Delivery).

1

Get Server Key

Go to Project Settings (⚙ gear) → Cloud Messaging tab. Under "Cloud Messaging API (Legacy)" section, copy the Server key. If you see "Cloud Messaging API (Legacy) is disabled", click "Manage API in Google Cloud Console" → Enable the API → Go back and refresh.

2

Get VAPID Key (Web Push)

In the same Cloud Messaging tab, scroll to "Web Push certificates" → Click "Generate key pair". Copy the generated key — this is used for web push notifications.

3

Enter in MyntCart Admin Panel

Go to Admin Panel → System Settings → 3rd Party & Other Configs → Push Notifications Setup. Enter the FCM Server Key and VAPID Key. Click Save.

6. Authentication — Enable Sign-in Methods

Navigate to Build → Authentication → Sign-in method in Firebase Console. Enable each method MyntCart needs:

MethodUsed ForHow to Enable
PhoneOTP login in all Flutter appsClick Phone → Enable toggle → Save. No extra config needed.
GoogleGoogle sign-in on customer app & websiteClick Google → Enable → Select support email → Save. Add SHA-1 key for Android (see below).
Email/PasswordEmail-based login (if enabled in admin)Click Email/Password → Enable → Save.

7. Service Account Key (for Admin SDK)

The service account key lets your Laravel backend server communicate with Firebase (send push notifications, verify tokens).

1

Generate Key

Go to Project Settings (⚙ gear) → Service accounts tab → Click "Generate new private key" → Click "Generate key" → A JSON file downloads automatically.

2

Upload to Server

Rename the downloaded file to firebase-service-account.json → Upload it to storage/app/ directory on your server → Set permissions: chmod 600 storage/app/firebase-service-account.json

3

Add Path to .env

Add this line to your .env file:

.env
FIREBASE_CREDENTIALS=storage/app/firebase-service-account.json
Keep service account key secure
This file grants full access to your Firebase project. Never commit it to Git, never expose it publicly, and never share it. Add firebase-service-account.json to your .gitignore.

8. Configure in MyntCart Admin Panel

Go to Admin Panel → System Settings → 3rd Party & Other Configs → Firebase Auth. Enter all the values from the table above. Click Save.

9. Register Flutter Apps in Firebase Console

Each Flutter app needs its own Android + iOS registration inside the same Firebase project. Repeat these steps for every app:

AppAndroid Package NameiOS Bundle ID
myntcartapp (Customer)com.myntcart.appcom.myntcart.app
myntcart_vendorcom.myntcart.vendorcom.myntcart.vendor
myntcart_storecom.myntcart.storecom.myntcart.store
myntcart_deliverycom.myntcart.deliverycom.myntcart.delivery

Register Android App

1

Open Project Settings

In Firebase Console → Project Settings (⚙ gear) → General tab → scroll to "Your apps"

2

Add Android App

Click "Add app" → Select Android icon

3

Enter Package Name

Enter the Android package name from the table above (e.g. com.myntcart.app). Enter an app nickname (e.g. "MyntCart Customer Android").

4

Enter SHA-1 Fingerprint

Enter your SHA-1 fingerprint (required for Google Sign-In — see step 10 below)

5

Register & Download Config

Click Register app → Download google-services.json → Place at android/app/google-services.json in the Flutter project

6

Skip SDK Steps

Firebase shows "Add Firebase SDK" steps — skip these (Flutter already has it) → Click Continue to console

Register iOS App

1

Add iOS App

Click "Add app" → Select iOS icon

2

Enter Bundle ID

Enter the iOS Bundle ID from the table above (e.g. com.myntcart.app). Enter an app nickname (e.g. "MyntCart Customer iOS"). Click Register app.

3

Download Config

Download GoogleService-Info.plist → Place at ios/Runner/GoogleService-Info.plist in the Flutter project

4

Skip & Finish

Skip the remaining SDK steps → Click Continue to console

Repeat for all 4 apps
You need to register 8 apps total in Firebase (4 Android + 4 iOS). Each app gets its own google-services.json (Android) and GoogleService-Info.plist (iOS). The package name in the config file must match the applicationId in build.gradle and the Bundle ID in Xcode.

Config File Placement (per app)

File Paths
# Customer App
myntcartapp/android/app/google-services.json
myntcartapp/ios/Runner/GoogleService-Info.plist

# Vendor App
myntcart_vendor/android/app/google-services.json
myntcart_vendor/ios/Runner/GoogleService-Info.plist

# Store App
myntcart_store/android/app/google-services.json
myntcart_store/ios/Runner/GoogleService-Info.plist

# Delivery App
myntcart_delivery/android/app/google-services.json
myntcart_delivery/ios/Runner/GoogleService-Info.plist

10. SHA-1 Key (for Google Sign-In on Android)

Google Sign-In requires your app's SHA-1 fingerprint registered in Firebase. Get it with this command:

Command Prompt
keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android
Terminal
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
Terminal
# For release builds (Play Store), use your release keystore:
keytool -list -v -keystore /path/to/your-release-key.jks -alias your-key-alias

You'll be prompted for the keystore password.

  1. Copy the SHA1 fingerprint from the output (format: XX:XX:XX:...:XX)
  2. Go to Firebase Console → Project Settings → Your apps → select the Android app
  3. Click "Add fingerprint" → Paste the SHA-1 → Save
  4. For Play Store release, add the release keystore SHA-1 too
  5. After adding SHA-1, re-download google-services.json — it now includes the fingerprint data

11. Where to Configure Firebase in MyntCart Web Admin

The Firebase values go in two places on the web side:

ConfigWhere in Admin PanelWhat to Enter
Firebase AuthSystem Settings → 3rd Party & Other Configs → Firebase AuthAPI Key, Auth Domain, Project ID, Storage Bucket, Messaging Sender ID, App ID
Push NotificationsSystem Settings → 3rd Party & Other Configs → Push Notifications SetupFCM Server Key, VAPID Key

And in the .env file:

ConfigFileWhat to Enter
All Firebase web config.envFIREBASE_API_KEY, AUTH_DOMAIN, PROJECT_ID, STORAGE_BUCKET, MESSAGING_SENDER_ID, APP_ID, SERVER_KEY
Service Accountstorage/app/firebase-service-account.jsonDownloaded JSON file from Firebase Console → Service accounts

Firebase Configuration Summary

WhatWhere to ConfigureSource in Firebase Console
Web API Key, Project ID, etc..env file + Admin Panel → Firebase AuthProject Settings → General → Your apps → Web app config
FCM Server Key.env + Admin Panel → Push NotificationsProject Settings → Cloud Messaging → Server key (Legacy)
VAPID KeyAdmin Panel → Push NotificationsProject Settings → Cloud Messaging → Web Push certificates
Service Account JSONstorage/app/firebase-service-account.jsonProject Settings → Service accounts → Generate new private key
Auth methodsFirebase Console directlyBuild → Authentication → Sign-in method
Android config (per app)android/app/google-services.jsonProject Settings → Your apps → Android app → Download
iOS config (per app)ios/Runner/GoogleService-Info.plistProject Settings → Your apps → iOS app → Download
SHA-1 fingerprintFirebase Console → Android app → Add fingerprintGenerated from your keystore via keytool

SMS API Setup

Configure SMS providers for OTP delivery and order notifications. MyntCart supports multiple SMS providers.

Go to Admin Panel → System Settings → 3rd Party → SMS Configuration → Enter your provider credentials and select active provider.

WhatsApp Integration via Twilio (Complete Guide)

MyntCart uses Twilio's WhatsApp Business API to send order updates, bulk store notifications, delivery alerts, invoice sharing, and customer communication directly via WhatsApp.

1. Create a Twilio Account

1

Sign Up

Go to twilio.com/try-twilio → Create a free account with your email and phone number. Verify your email and phone via OTP.

2

Get Your Account Credentials

After login, you land on the Twilio Console Dashboard. Your credentials are shown right on this page:

CredentialWhere to FindExample
Account SIDTwilio Console → Dashboard → "Account SID" (shown at top)ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Auth TokenSame page → Click "Show" next to Auth Token to reveal itxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Keep Auth Token secret
Your Auth Token grants full API access to your Twilio account. Never share it, commit it to Git, or expose it in frontend code.

2. Enable WhatsApp Sandbox (for Testing)

1

Go to WhatsApp Sandbox

In Twilio Console, navigate to Messaging → Try it out → Send a WhatsApp message. Or go directly to Messaging → Settings → WhatsApp sandbox settings.

2

Join the Sandbox

Twilio shows a sandbox WhatsApp number (e.g. +1 415 523 8886) and a join code (e.g. join xxxxx-xxxxx). Send this join message from your personal WhatsApp to that number to activate the sandbox.

3

Note the Sandbox Number

The sandbox number is your temporary WhatsApp "from" number for testing. Use it in MyntCart config until you get a real WhatsApp Business number.

3. Get a WhatsApp Business Number (for Production)

1

Buy a Twilio Phone Number

In Twilio Console → Phone Numbers → Manage → Buy a number. Select a number with SMS and MMS capabilities in your country.

2

Register for WhatsApp Business

Go to Messaging → Senders → WhatsApp senders → Click "Register a WhatsApp sender". You need:

  • A verified Facebook Business Manager account
  • A Twilio phone number to link as WhatsApp sender
  • Your business display name and description

WhatsApp/Meta reviews and approves your sender (takes 1–7 business days).

3

Note Your WhatsApp Number

Once approved, your Twilio number is a verified WhatsApp Business sender. Use this number (with country code, e.g. +919876543210) in MyntCart configuration.

4. Configure in MyntCart

1

Open Twilio WhatsApp Config

Go to Admin Panel → System Settings → 3rd Party & Other Configs → Twilio WhatsApp Config.

2

Enter Credentials

Fill in the following fields:

FieldValueWhere to Get
Twilio Account SIDACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTwilio Console → Dashboard
Twilio Auth TokenxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxTwilio Console → Dashboard → Click "Show"
WhatsApp From Number+919876543210Your approved WhatsApp Business number (or sandbox number for testing)
3

Toggle Active & Save

Toggle the status to Active → Click Save. WhatsApp messaging is now enabled.

5. Configure Store-Level WhatsApp Numbers

Each store branch can have its own WhatsApp number for receiving bulk orders and customer messages.

  1. Go to Admin Panel → Store Management → Store Settings (or select a specific store)
  2. Find the WhatsApp Number field
  3. Enter the store's WhatsApp number with country code (e.g. +919876543210)
  4. Click Save

6. Test WhatsApp Messaging

  1. Go to Admin Panel → Store Management → Bulk WhatsApp
  2. Select a store with a configured WhatsApp number
  3. Enter a test message
  4. Click Preview to see the formatted WhatsApp message
  5. Click Send — verify the message arrives on WhatsApp

WhatsApp Features in MyntCart

FeatureDescriptionWhere in Admin
Bulk WhatsApp OrdersSend orders to multiple stores at once via WhatsApp with customizable messagesStore Management → Bulk WhatsApp
Order ConfirmationAutomatic message with order ID, items, total when order is placedAutomatic (after config)
Ready for PickupNotify customers when their order is packed and readyTriggered on status change
Delivery UpdatesOut for delivery, delivered, and failed delivery notificationsTriggered on status change
Custom TemplatesPre-built message templates with variables: {{customer_name}}, {{order_id}}, {{amount}}, {{store_name}}, {{store_address}}Store WhatsApp Templates
Store-Level WhatsAppEach branch has its own WhatsApp number for direct customer contactStore Management → Store Settings
Invoice SharingShare order invoices and receipts directly to customer's WhatsAppOrder Details page
Chat WidgetFloating WhatsApp chat button on storefront for instant supportSocial Media Settings → Social Media Chat

Twilio Pricing

Cost
Twilio charges per WhatsApp message sent. Rates vary by country — typically $0.005–$0.08 per message. Business-initiated messages (order updates) cost more than customer-initiated (replies). Free trial includes $15 credit. Check Twilio WhatsApp Pricing for current rates.

Shipping Auto-Calculation

MyntCart features a smart shipping calculation engine that automatically determines shipping costs using a priority-based adapter system. Instead of manual rate entry, the system tries each enabled shipping provider in priority order and uses the first successful result.

How It Works

Configure Shipping Calculator

1

Access Settings

Go to Admin Panel → Shipping Calculator Settings to view all available adapters and their status.

2

Enable & Prioritize

Toggle each adapter on/off and set priority numbers (lower = higher priority). The system processes adapters in priority order.

3

Test Connection

Use the Test button for each adapter to verify API credentials and connectivity before going live.

Available Shipping Adapters
Shiprocket (domestic courier aggregation), Shiprocket Local Quick (hyperlocal same-day), Easyship (Coming Soon) (global multi-carrier), ShipEngine (Coming Soon) (global multi-carrier with labels), and Manual (custom flat rates).

Flutter Apps — Complete Setup Guide

MyntCart ships with four Flutter mobile applications. This guide covers everything from installing Flutter to building a release APK — nothing left out.

Required Versions

ToolRequired VersionNotes
Flutter SDK3.38.0 or higherStable channel recommended
Dart SDK3.10.0 or higherBundled with Flutter — no separate install needed
Java JDKJDK 17Exactly version 17 — not 11, not 21. Required for Android Gradle
Android StudioLatest (Hedgehog / Iguana / Ladybug)With Flutter & Dart plugins installed
Android SDKcompileSdk 36, minSdk (Flutter default), targetSdk 36Install via Android Studio SDK Manager
Xcode15.0+ (macOS only)Required for iOS builds
CocoaPodsLatest (macOS only)sudo gem install cocoapods
Java version matters
MyntCart apps use sourceCompatibility JavaVersion.VERSION_17 and jvmTarget = '17'. If you use JDK 11 or JDK 21, the Android build will fail. Install exactly JDK 17.

Install Flutter (Windows)

1

Download Flutter SDK

Download the Flutter SDK zip from the official site. Extract it to a permanent location (e.g. C:\flutter). Do NOT place it inside Program Files (permission issues).

PowerShell
# Extract to C:\flutter (or your preferred path)
# Then add to System PATH:
C:\flutter\bin
2

Install Java JDK 17

Download and install Oracle JDK 17 or OpenJDK 17 (Adoptium Temurin recommended). After installation, set the JAVA_HOME environment variable.

System Environment Variables (Windows)
# Set JAVA_HOME (System Variable)
JAVA_HOME = C:\Program Files\Java\jdk-17

# Add to PATH (System Variable)
%JAVA_HOME%\bin
3

Install Android Studio

Download Android Studio from the official site. During installation, ensure Android SDK, Android SDK Command-line Tools, and Android SDK Platform-Tools are selected.

4

Install Flutter & Dart Plugins

Open Android Studio → File → Settings → Plugins → Search "Flutter" → Install (it auto-installs the Dart plugin too). Restart Android Studio.

5

Configure System Environment Variables

Open System Properties → Environment Variables and add/update these:

VariableValue (example path)Type
JAVA_HOMEC:\Program Files\Java\jdk-17System Variable
ANDROID_HOMEC:\Users\YourName\AppData\Local\Android\SdkSystem Variable
PATH (append)C:\flutter\binSystem Variable
PATH (append)%JAVA_HOME%\binSystem Variable
PATH (append)%ANDROID_HOME%\platform-toolsSystem Variable
6

Verify Installation

Open a new terminal window (old ones don't see PATH changes) and run:

Terminal
# Verify Flutter
flutter --version
# Should show: Flutter 3.38.x • Dart 3.10.x

# Verify Java
java -version
# Should show: openjdk version "17.x.x" or java version "17.x.x"

# Check everything at once
flutter doctor
# Fix any ✗ issues it reports

Install Flutter (macOS)

1

Download & Extract Flutter

Download Flutter SDK and extract to your home directory (e.g. ~/flutter). Add to PATH in your shell profile.

~/.zshrc (or ~/.bash_profile)
# Add Flutter to PATH
export PATH="$HOME/flutter/bin:$PATH"

# Set Java 17
export JAVA_HOME=$(/usr/libexec/java_home -v 17)

# Android SDK
export ANDROID_HOME="$HOME/Library/Android/sdk"
export PATH="$ANDROID_HOME/platform-tools:$PATH"
2

Install Java JDK 17

Use Homebrew: brew install openjdk@17 — then symlink: sudo ln -sfn $(brew --prefix openjdk@17)/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk-17.jdk

3

Install Xcode & CocoaPods

Xcode is required for building iOS apps. It's only available on macOS.

  1. Open the Mac App Store → Search "Xcode" → Click Get / Install (it's free, ~12 GB download)
  2. Wait for installation to complete (can take 20–40 minutes)
  3. Open Xcode once after installation → Accept the license agreement → Let it install additional components
  4. Set Xcode command line tools — open Terminal and run:
Terminal
# Set Xcode command line tools path
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer

# Accept license from terminal (if not done in GUI)
sudo xcodebuild -license accept

# Install CocoaPods (iOS dependency manager)
sudo gem install cocoapods

# If gem install fails on Apple Silicon (M1/M2/M3), use:
brew install cocoapods

# Setup CocoaPods master repo
pod setup
  1. Verify Xcode installation:
Terminal
# Check Xcode version
xcodebuild -version
# Should show: Xcode 15.x or higher

# Check CocoaPods version
pod --version
# Should show: 1.x.x
Apple Silicon Macs (M1/M2/M3/M4)
If you're on an Apple Silicon Mac, you may need to run Terminal via Rosetta for some older CocoaPods commands, or install using Homebrew (brew install cocoapods) which works natively on ARM.
4

Install Android Studio + Plugins

Same as Windows — install Android Studio, then install Flutter & Dart plugins from Settings → Plugins.

5

Verify

Run source ~/.zshrc then flutter doctor — fix any issues it reports. Accept Android licenses: flutter doctor --android-licenses

Import Project into Android Studio

  1. Open Android Studio → File → Open
  2. Browse to the project folder (e.g. E:\AppDevelopment\CodeMynt\myntcartapp)
  3. Select the root folder that contains pubspec.yaml — click OK
  4. Android Studio detects it as a Flutter project and loads it
  5. Wait for "Running pub get..." to finish (bottom status bar)
  6. If prompted to configure Dart/Flutter SDK path → point to C:\flutter
  7. Connect a device or start an emulator → Click the green Run ▶ button
  1. Open Android Studio → File → Open
  2. Browse to the project folder (e.g. ~/Projects/myntcartapp)
  3. Select the root folder that contains pubspec.yaml — click Open
  4. Android Studio detects it as a Flutter project and loads it
  5. Wait for "Running pub get..." to finish
  6. For iOS: run cd ios && pod install && cd .. in the terminal
  7. Select target device (Android emulator or iOS Simulator) → Click Run ▶
First time opening?
The first build takes 3–10 minutes as Gradle downloads all dependencies. Subsequent builds are much faster. If the build fails, run flutter clean then flutter pub get and try again.

App Configuration — Step by Step

Step 1 — Install Dependencies

Open the app directory in your terminal and install all Dart packages.

Terminal
# Navigate to app directory
cd myntcartapp

# Install dependencies
flutter pub get

# Run on device/emulator
flutter run

Step 2 — Configure App Constants

Open lib/utill/app_constants.dart — this is the central config file that controls your app's identity and backend connection.

lib/utill/app_constants.dart
class AppConstants {
  static const String appName    = 'YourAppName';       // Display name shown in app
  static const String slogan     = 'Your Slogan';       // Tagline on splash screen
  static const String appVersion = '1.0.1';              // App version number
  static const String baseUrl    = 'https://yourdomain.com'; // Your MyntCart backend URL
}
ConstantWhat to ChangeExample
appNameYour brand name displayed inside the app (splash screen, headers, about page)'MyStore'
sloganShort tagline shown below the logo on the splash screen'Shop Smart'
appVersionCurrent version — update on each release to match pubspec.yaml'2.0.0'
baseUrlYour MyntCart backend URL (no trailing slash). For local testing use your machine IP, not localhost'https://shop.example.com'
baseUrl — common mistake
Do NOT use http://localhost — the emulator/device cannot reach your computer's localhost. Use your machine's local IP (e.g. http://192.168.0.102:8000) for development, and your live domain for production.

Step 3 — Change Logo & Assets

All app images and icons are referenced in lib/utill/images.dart. Replace the actual image files in the assets/images/ directory.

ImageFile PathUsage
App Logoassets/images/agx_logo.pngMain app icon used inside the app (splash, about, headers)
Logo with Nameassets/images/logo_with_name.pngFull brand logo with text — splash screen, login page
Placeholderassets/images/placeholder_1x1.pngDefault placeholder for product images that haven't loaded yet
Login Backgroundassets/images/login.pngBackground illustration on the login/registration screen
Empty Cartassets/images/empty_cart.pngIllustration shown when the shopping cart is empty
No Dataassets/images/no_data.pngShown when a list/search returns no results
Maintenanceassets/images/maintenance.pngDisplayed when the server is in maintenance mode

To replace: simply overwrite the files in assets/images/ with your own images, keeping the exact same file names. If you want to use different file names, update the paths in lib/utill/images.dart.

App Launcher Icon (Home Screen Icon)

The launcher icon is separate from the in-app logo. You need one high-resolution PNG (1024x1024px, no transparency for iOS) and it must be exported in multiple sizes for each platform.

How to Generate App Icons

1

Create a 1024x1024 PNG icon

Design your icon at 1024x1024 pixels. Use PNG format. For iOS, do NOT use transparency (Apple rejects it). For Android, transparency is allowed.

2

Generate all sizes using AppIcon.co

Go to https://www.appicon.co/ — upload your 1024x1024 image → Select iPhone + Android → Click Generate → Download the zip file. It creates all required sizes for both platforms automatically.

3

Copy generated icons to the project

Extract the downloaded zip and copy the files to the correct folders:

Android Icons
# From the downloaded zip → android/ folder
# Copy each ic_launcher.png into the matching mipmap folder:

android/app/src/main/res/mipmap-mdpi/ic_launcher.png       # 48x48
android/app/src/main/res/mipmap-hdpi/ic_launcher.png       # 72x72
android/app/src/main/res/mipmap-xhdpi/ic_launcher.png      # 96x96
android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png     # 144x144
android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png    # 192x192
iOS Icons
# From the downloaded zip → ios/ folder
# Replace the entire AppIcon.appiconset folder:

ios/Runner/Assets.xcassets/AppIcon.appiconset/

# This folder contains all required sizes (20x20 to 1024x1024)
# plus the Contents.json manifest file
Adaptive Icons (Android 8+)
For modern Android adaptive icons (round icons with background layer), also replace ic_launcher_round.png in each mipmap folder, or use ic_launcher_foreground.png and ic_launcher_background.png in mipmap-anydpi-v26/.

Step 4 — Change App Name

The app name displayed on the device home screen is set in platform-specific config files (not in Dart code).

Android

Edit android/app/src/main/AndroidManifest.xml — find the android:label attribute:

android/app/src/main/AndroidManifest.xml
<application
    android:label="Your App Name"   <!-- Change this -->
    ...
>

iOS

Edit ios/Runner/Info.plist — find CFBundleDisplayName (or CFBundleName):

ios/Runner/Info.plist
<key>CFBundleDisplayName</key>
<string>Your App Name</string>

Step 5 — Change Package Name (Bundle ID)

The package name uniquely identifies your app on Play Store / App Store. You must change it from the default before publishing.

Android — android/app/build.gradle

android/app/build.gradle
namespace "com.yourcompany.yourapp"       // Line ~42
applicationId "com.yourcompany.yourapp"   // Line ~72 — must match namespace

Then rename the folder structure inside android/app/src/main/kotlin/ (or java/) to match your new package path. For example: com/yourcompany/yourapp/MainActivity.kt

iOS — Xcode

Open ios/Runner.xcworkspace in Xcode → Select Runner target → General tab → Change Bundle Identifier to com.yourcompany.yourapp

Quick tip
You can also use the change_app_package_name Flutter package to rename the package across all files automatically:
flutter pub run change_app_package_name:main com.yourcompany.yourapp

Step 6 — Firebase Configuration (Complete Guide)

Firebase powers push notifications, phone OTP verification, Google sign-in, and crash reporting in all MyntCart Flutter apps. You need one Firebase project for all four apps.

6.1 — Create a Google Account / Login

  1. You need a Google account (Gmail). If you don't have one, create at accounts.google.com/signup
  2. Go to console.firebase.google.com
  3. Sign in with your Google account

6.2 — Create a Firebase Project

1

Click "Create a project"

On the Firebase Console dashboard, click the Create a project button (or "Add project" if you already have projects).

2

Enter Project Name

Enter your project name (e.g. myntcart or yourstore-app). Firebase auto-generates a project ID below it. Click Continue.

3

Google Analytics (Optional)

Toggle Google Analytics on or off. If enabled, select or create a Google Analytics account. Click Create project.

4

Wait for Project Creation

Firebase takes 30–60 seconds to create the project. Once done, click Continue to enter the project dashboard.

6.3 — Register MyntCart Apps in Firebase

You need to register all four apps (or whichever ones you're deploying) in the same Firebase project — both Android and iOS versions.

AppAndroid Package NameiOS Bundle ID
myntcartapp (Customer)com.myntcart.appcom.myntcart.app
myntcart_vendorcom.myntcart.vendorcom.myntcart.vendor
myntcart_storecom.myntcart.storecom.myntcart.store
myntcart_deliverycom.myntcart.deliverycom.myntcart.delivery

For each app, repeat these steps:

Register Android App

1

Click the Android icon

In your Firebase project dashboard, click "Add app" → Select the Android icon.

2

Enter Android package name

Enter the applicationId from your app's android/app/build.gradle (e.g. com.myntcart.app). Enter an app nickname (e.g. "MyntCart Customer Android"). You can skip the SHA-1 for now (needed later for Google Sign-In).

3

Download google-services.json

Click Download google-services.json. Save this file — you'll place it in your Flutter project next.

4

Skip the SDK setup steps

Firebase shows "Add Firebase SDK" steps — skip these (the Flutter project already has Firebase dependencies configured). Click Continue to console.

Register iOS App

1

Click "Add app" → iOS icon

Enter the iOS Bundle ID (same as your Xcode Bundle Identifier, e.g. com.myntcart.app). Enter an app nickname (e.g. "MyntCart Customer iOS"). Click Register app.

2

Download GoogleService-Info.plist

Click Download GoogleService-Info.plist. Save this file. Skip the remaining SDK steps and click Continue to console.

6.4 — Enable Required Firebase Services

In your Firebase project, enable these services (left sidebar menu):

ServiceWhere to EnableWhy MyntCart Needs It
AuthenticationBuild → Authentication → Sign-in methodPhone OTP login, Google sign-in, email/password login
Cloud Messaging (FCM)Project Settings → Cloud MessagingPush notifications to all mobile apps
Crashlytics (optional)Build → CrashlyticsAutomatic crash reporting and error tracking

Enable Authentication Methods

  1. Go to Build → Authentication → Sign-in method
  2. Enable Phone — required for OTP login in all apps
  3. Enable Google — for Google sign-in on customer app
  4. Enable Email/Password — for email-based login
  5. Click Save for each

Get FCM Server Key (for Push Notifications)

  1. Go to Project Settings (gear icon) → Cloud Messaging tab
  2. Under Cloud Messaging API (V1) — note this is enabled by default
  3. You need the Server Key for your MyntCart admin panel. If using legacy API, copy the Server Key shown
  4. For VAPID (web push): Click Generate key pair under Web Push certificates
  5. Enter the Server Key in MyntCart Admin → System Settings → 3rd Party → Push Notifications Setup

Get SHA-1 Key (for Google Sign-In)

Google Sign-In requires your app's SHA-1 fingerprint registered in Firebase.

Terminal (get debug SHA-1)
# Windows
keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

# macOS / Linux
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
  1. Copy the SHA1 fingerprint from the output
  2. Go to Firebase Console → Project Settings → Your Android app → Add fingerprint
  3. Paste the SHA-1 and save
  4. For release builds, use your release keystore SHA-1 instead

6.5 — Place Firebase Config Files in Flutter Project

A

Android — google-services.json

Place the downloaded file at exactly this path:

File Location
myntcartapp/android/app/google-services.json

Open the file and verify package_name matches your applicationId from build.gradle:

google-services.json (key fields)
{
  "project_info": {
    "project_id": "your-firebase-project-id",
    "storage_bucket": "your-project.firebasestorage.app"
  },
  "client": [{
    "client_info": {
      "android_client_info": {
        "package_name": "com.yourcompany.yourapp"  ← must match applicationId
      }
    },
    "api_key": [{ "current_key": "AIza..." }]
  }]
}
B

iOS — GoogleService-Info.plist

Firebase Console → Your iOS app → Download GoogleService-Info.plist → Place at exactly this path:

File Location
myntcartapp/ios/Runner/GoogleService-Info.plist

The BUNDLE_ID inside this plist must match your iOS Bundle Identifier set in Xcode.

Mismatched package name = crash
If the package_name in google-services.json doesn't match your applicationId in build.gradle, Firebase will fail silently — push notifications won't work, Google sign-in will crash, and phone auth will return errors. Always verify they match.

Step 7 — Google Maps in Flutter

Add your Google Maps API key to each platform:

Edit android/app/src/main/AndroidManifest.xml:

AndroidManifest.xml
<meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="YOUR_GOOGLE_MAPS_API_KEY" />

Edit ios/Runner/AppDelegate.swift:

AppDelegate.swift
GMSServices.provideAPIKey("YOUR_GOOGLE_MAPS_API_KEY")

Step 8 — Update Version

Edit pubspec.yaml in the root of the app directory:

pubspec.yaml
name: flutter_codemynt_myntcart
version: 1.0.1+15   # format: version_name+build_number

The version before + is the display version (e.g. 1.0.1). The number after + is the build number — increment it on every Play Store / App Store upload.

Step 9 — Build & Release

Terminal
# Build Android APK (direct install)
flutter build apk --release

# Build Android App Bundle (Play Store upload)
flutter build appbundle --release

# Build iOS (requires macOS + Xcode)
flutter build ios --release

Configuration Summary per File

What to ChangeFile Path
Base URL, app name, slogan, versionlib/utill/app_constants.dart
Logo, placeholder, illustrationslib/utill/images.dart + assets/images/
Android app name (home screen)android/app/src/main/AndroidManifest.xml
Android package nameandroid/app/build.gradle
Android launcher iconandroid/app/src/main/res/mipmap-*/
Android Firebaseandroid/app/google-services.json
Android Google Maps keyandroid/app/src/main/AndroidManifest.xml
iOS app nameios/Runner/Info.plist
iOS bundle identifierXcode → Runner → General → Bundle Identifier
iOS launcher iconios/Runner/Assets.xcassets/AppIcon.appiconset/
iOS Firebaseios/Runner/GoogleService-Info.plist
iOS Google Maps keyios/Runner/AppDelegate.swift
App version + build numberpubspec.yamlversion:

App-Specific Notes

AppPackageKey Features
myntcartappcom.myntcart.appShopping, cart, checkout, wallet, order tracking
myntcart_storecom.myntcart.storePOS, inventory, staff management, branch control
myntcart_vendorcom.myntcart.vendorProduct listing, order processing, earnings, withdrawal
myntcart_deliverycom.myntcart.deliveryOrder pickup, route navigation, delivery confirmation

Add-on Modules

MyntCart supports premium add-on modules that extend the platform with additional shipping providers, payment gateways, tax systems, and store management capabilities. Each module requires a license key for activation.

Available Modules

ModuleDescriptionKey Features
ShiprocketDomestic courier aggregation with 17+ courier partnersAuto pickup, tracking, NDR management, COD
Shiprocket Local QuickHyperlocal same-day delivery for local businessesInstant delivery, real-time tracking, local couriers
Easyship (Coming Soon)Global multi-carrier shipping aggregator250+ couriers, rate comparison, customs, insurance
ShipEngine (Coming Soon)Multi-carrier shipping with label generationLabel printing, rate shopping, address validation
Store ManagementMulti-branch store operations with POSBranch management, store managers, inventory, employees
Global Payment Gateways10 international payment providersAdyen, Airwallex, Alipay, Apple Pay, Authorize.Net, Checkout.com, Google Pay, Klarna, Mollie, Square
Commercial TaxAdvanced international tax managementTax rules, compliance reports, multi-region tax

How to Install a Module (from Addons Page)

Modules are installed via the Addons page in the admin panel — not by manually copying files.

Server Requirements
Before uploading, ensure your server meets these PHP settings:
upload_max_filesize >= 20MB
post_max_size >= 20MB
1

Navigate to Addons Page

Go to Admin Panel → Themes & Addons → Addons. You will see a drag-and-drop upload area and a list of already installed modules below.

2

Upload Module Zip File

Drag & drop the module .zip file into the upload area, or click "browse file" to select it. Click the Upload button. The system extracts and installs the module into the Modules/ directory automatically.

3

Publish (Activate) the Module

After upload, the module appears in the installed modules list below. Click the ✓ (checkmark) button to publish/activate the module. This enables its routes and service provider in the application.

4

Run Migrations (if prompted)

Some modules need database tables. If prompted, run migrations via terminal:

Terminal
php artisan migrate
php artisan config:cache
php artisan route:cache
5

Module Appears in Sidebar

After publishing, the module's own section appears in the admin sidebar (e.g. Shiprocket Management, Store Management, Commercial Tax Management). The first sub-item is always "Module Activation" with a yellow Required badge — all other features are locked until the license is activated.

6

Activate License from the Module's Sidebar

Click the module's "Module Activation" menu item in the sidebar → Enter your purchase key → Click Activate. The key is verified against license.codemynt.in. On success, all locked features unlock immediately and the yellow badge disappears.

Alternative: Activate from Module Licenses page
You can also activate from Themes & Addons → Module Licenses — all installed modules are listed there with Activate/Deactivate buttons. Both methods do the same thing.

After installation, the module files are placed at:

Directory Structure
myntcart/
├── Modules/
│   ├── Shiprocket/
│   ├── ShiprocketLocalQuick/
│   ├── Easyship/
│   ├── ShipEngine/
│   ├── StoreManagement/
│   ├── GlobalPaymentGateways/
│   └── CommercialTax/

How to Activate a Module License

Installing a module and activating its license are two separate steps. Installation makes the module available; license activation unlocks its features.

Option A — From Module Licenses Page

1

Navigate to Module Licenses

Go to Admin Panel → Themes & Addons → Module Licenses. All installed modules are listed with their activation status. The badge shows the count of installed modules (e.g. 6).

2

Click "Activate" on the Module

Click the Activate button next to the module you want to license. This opens the module's activation page.

3

Enter Purchase Key

Enter the license / purchase key you received after purchasing the module. Click Activate. The key is verified against the CodeMynt license server at license.codemynt.in.

4

Activation Complete

On successful verification, the module is activated immediately. Its sidebar menu section appears, and all features become accessible.

Option B — From the Module's Own Sidebar Section

Every installed module also has its own Module Activation menu item inside its sidebar section. For example:

Click the Module Activation item → enter your purchase key → same activation flow as above.

ModuleSidebar SectionActivation Path
ShiprocketShiprocket ManagementShiprocket Management → Module Activation
Shiprocket Local QuickShiprocket Local QuickShiprocket Local Quick → Module Activation
EasyshipEasyship ManagementEasyship Management → Module Activation
ShipEngineShipEngine ManagementShipEngine Management → Module Activation
Store ManagementStore ManagementStore Management → Module Activation
Global Payment GatewaysGlobal Payment GatewaysGlobal Payment Gateways → Module Activation
Commercial TaxCommercial Tax ManagementCommercial Tax Management → Module Activation
License Verification
Each module license is verified online via the CodeMynt license server. Your server must have outbound internet access to license.codemynt.in for activation and periodic license health checks.

How to Deactivate a Module License

1

Go to Module Licenses

Navigate to Admin Panel → Themes & Addons → Module Licenses.

2

Click "Deactivate"

Click the Deactivate button next to the active module. The license is released on the CodeMynt server and the module's features are disabled immediately. The module's sidebar items revert to showing "License Required" locks.

Deactivation Warning
Deactivating a module disables all its features. Orders already in progress via that module's shipping/payment provider will not be affected, but new orders cannot use the deactivated module.

How to Delete / Remove a Module

Option A — From Addons Page (Recommended)

1

Deactivate License First

Go to Module Licenses → click Deactivate on the module (see above).

2

Delete from Addons Page

Go to Themes & Addons → Addons. Find the module in the installed modules list. Click the 🗑️ (delete/trash) icon next to the module name. Confirm the deletion.

3

Clear Caches

After deletion, clear caches so the framework stops looking for the removed module:

Terminal
php artisan config:cache
php artisan route:cache
php artisan view:clear

Option B — Manual Deletion (Server Access)

1

Deactivate license first

Always deactivate the module license before removing files.

2

Delete the module folder via terminal

Remove the directory from your server:

Terminal
# Example: remove Easyship module
rm -rf Modules/Easyship

# Clear caches
php artisan config:cache
php artisan route:cache
php artisan view:clear
Data Retention
Removing a module does not delete its database tables or stored data. If you reinstall the module later, previous data (orders, settings, transactions) will still be available.

Production Deployment Checklist

Before going live
Complete every item below before exposing your application to the public.

Update Guide (Version Upgrade)

How to safely update MyntCart from one version to the next without losing data, settings, or customizations.

Always backup before updating
Take a full backup of both your files and database before every update. Updates cannot be rolled back without a backup.
1

Backup Everything

Before touching anything, create a full backup:

Terminal
# Backup database
mysqldump -u root -p myntcart > myntcart_backup_$(date +%Y%m%d).sql

# Backup files
tar -czf myntcart_files_backup_$(date +%Y%m%d).tar.gz /path/to/myntcart/
2

Enable Maintenance Mode

Put the site in maintenance mode so customers don't see errors during the update.

Terminal
php artisan down --message="Updating... We'll be back shortly."
3

Upload New Files

Replace the project files with the new version. Do NOT overwrite these files/folders — they contain your custom settings:

Or use the Admin Panel → System Setup → Software Update page to upload the update zip — it handles file replacement automatically while preserving your data.

4

Run Migrations & Clear Caches

Apply any new database changes and clear all caches:

Terminal
php artisan migrate --force
php artisan config:cache
php artisan route:cache
php artisan view:clear
php artisan optimize
5

Disable Maintenance Mode

Bring the site back online:

Terminal
php artisan up
6

Verify

Check the admin dashboard — the version number should show the new version. Test key flows: login, product listing, cart, checkout, payment, order processing.

Changelog / Version History

VersionDateChanges
v2.0.0 2025
  • Complete multi-vendor eCommerce CMS
  • 4 Flutter mobile apps (Customer, Vendor, Store, Delivery)
  • 26+ payment gateways (15 core + 10 global module + COD/offline)
  • 5 shipping providers (Shiprocket, Shiprocket Quick, Easyship, ShipEngine, Manual)
  • Store Management module with multi-branch POS
  • Smart shipping calculator with Haversine distance-based pricing
  • WhatsApp commerce via Twilio (bulk orders, templates, notifications)
  • WooCommerce migration tools (products, categories, customers)
  • Commercial Tax module with international tax support
  • Payment Analytics dashboard with A/B testing
  • GST management with CGST/SGST/IGST invoice generation
  • SEO settings (webmaster tools, robots.txt, sitemap, meta content)
  • Advanced SMS templates with dynamic variables
  • File Manager for server-side file management
v1.0.0 2024 Initial release — core eCommerce features, admin panel, basic payment gateways, customer app.

License Information

Regular License

Extended License

One license = one domain
Each license key is valid for a single production domain. If you need to use MyntCart on multiple domains, you need separate licenses for each. Development/staging environments on localhost or subdomains are allowed under the same license.

What's Included

ItemRegularExtended
Full Laravel source code
4 Flutter app source code
Admin panel
All 7 add-on modules
Documentation
Lifetime updates
6 months support
Charge end users
SaaS / subscription use
Priority support

Support Policy

What's Included in Support

What's NOT Included in Support

How to Get Support

ChannelDetailsResponse Time
Emailsupport@codemynt.inWithin 24–48 hours (business days)
License Portallicense.codemynt.in → Support TicketWithin 24 hours
DocumentationThis documentation siteSelf-service (instant)
Support Period
Your purchase includes 6 months of support from the date of purchase. After 6 months, you can renew support for an additional period through the license portal.

Demo Access

Panel / AppURL / AccessCredentials
Admin Panelhttps://yourdomain.com/adminEmail: admin@gmail.com / Password: 123456
Customer Websitehttps://yourdomain.comRegister a new account or use demo credentials
Vendor Panelhttps://yourdomain.com/vendorRegister as vendor or contact admin for credentials
Customer Appmyntcartapp (Flutter)Register via app or use website credentials
Vendor Appmyntcart_vendor (Flutter)Use vendor panel credentials
Store Appmyntcart_store (Flutter)Assigned by admin (store manager account)
Delivery Appmyntcart_delivery (Flutter)Assigned by admin (delivery man account)
Change default credentials immediately
The default admin credentials (admin@gmail.com / 123456) are for initial setup only. Change them immediately after first login via Admin Panel → Profile → Change Password.

Frequently Asked Questions

Q

Can I use MyntCart on multiple domains?

No. Each license key is valid for one production domain. You need a separate license for each live domain. Localhost and staging subdomains are allowed under the same license.

Q

Do I get the full source code?

Yes. You receive complete unencrypted source code for the Laravel backend, admin panel, user website, and all 4 Flutter mobile apps.

Q

Are updates free?

Yes. All future updates for the version you purchased are free and lifetime. Download new versions from license.codemynt.in.

Q

Can I customize the code?

Yes. You have full access to the source code and can modify it freely. However, support does not cover issues caused by custom code modifications.

Q

What PHP version is required?

PHP 8.0 minimum. PHP 8.1 or 8.2 is recommended for best performance. The Flutter apps require Flutter SDK 3.38.0+ and JDK 17.

Q

Does it work on shared hosting?

Yes. MyntCart works on shared hosting (cPanel) as long as your host supports PHP 8.0+, MySQL 5.7+, and allows SSH/terminal access for artisan commands. VPS or dedicated hosting is recommended for better performance.

Q

How do I publish the Flutter apps to Play Store / App Store?

Follow the Flutter app configuration guide above (change package name, app name, icons, Firebase, Maps key), build the release APK/IPA, then upload to Google Play Console or Apple App Store Connect. Standard store submission process applies.

Q

Is RTL (right-to-left) language supported?

Yes. MyntCart supports RTL languages (Arabic, Hebrew, Urdu, etc.) with full UI mirroring on both web and Flutter apps. Add RTL languages via System Setup → Language.

Q

Can I migrate from WooCommerce?

Yes. Built-in WooCommerce migration tools let you import products, categories, and customer accounts. See Data Import Tools documentation.

Q

How do I get my license key if I lost it?

Log into license.codemynt.in → My Purchases. Your license key is always available there. If you can't access your account, email support@codemynt.in with your purchase email.