System Overview & Installation
Everything you need to install, configure, and deploy the MyntCart e-commerce platform and its Flutter mobile applications.
Prerequisites
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
| Requirement | Minimum | Recommended |
|---|---|---|
| PHP | 8.0 | 8.1 or 8.2 |
| MySQL | 5.7 | 8.0 / MariaDB 10.6+ |
| Web Server | Apache 2.4 or Nginx 1.18 | Latest stable |
| RAM | 2 GB | 4 GB+ |
| Disk Space | 10 GB | 20 GB+ (for product images & assets) |
| PHP Extensions | OpenSSL, PDO, Mbstring, Tokenizer, XML, GD, cURL, Fileinfo, BCMath, JSON, Zip | |
| SSL Certificate | Required for production | Let's Encrypt (free) or commercial |
| Composer | 2.x | Latest |
| Node.js | 16.x (for asset compilation) | 18.x LTS |
Verify your PHP version:
php -v
Installation
How to Purchase a MyntCart License
Visit the License Portal
Go to https://license.codemynt.in — this is the official CodeMynt license purchase website. Create an account or log in.
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.
Download Project Files
Download the MyntCart project zip from the license portal. This contains the full Laravel application, database schema, and all required assets.
Pre-Installation — Upload Files to Server
Localhost (WAMP / XAMPP / Laragon)
- Extract the MyntCart zip file
- Copy the project folder to your web server root:
# WAMP C:\wamp64\www\myntcart\ # XAMPP C:\xampp\htdocs\myntcart\ # Laragon C:\laragon\www\myntcart\
- Create an empty database named
myntcartin phpMyAdmin (collation:utf8mb4_unicode_ci) - Open your browser and go to:
http://localhost/myntcart/secure-install
cPanel / Shared Hosting
- Login to cPanel → File Manager → Navigate to
public_html - Upload the MyntCart zip and extract it
- Create MySQL database: cPanel → MySQL Databases → Create DB + User → Add user with ALL PRIVILEGES
- Open your browser and go to:
https://yourdomain.com/secure-install
VPS / Dedicated Server
- Install PHP 8.1+, MySQL, Apache/Nginx, and required PHP extensions
- Upload/clone the project to your server (e.g.
/var/www/myntcart) - Point your virtual host / Nginx server block to the
publicdirectory - Set permissions:
chmod -R 775 storage bootstrap/cache - Configure SSL (Let's Encrypt recommended)
- 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.
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.
- Open phpMyAdmin (
http://localhost/phpmyadmin) - Click "New" in the left sidebar
- Enter database name:
myntcart - Select collation:
utf8mb4_unicode_ci - Click "Create"
- Login to cPanel → MySQL Databases
- Under "Create New Database" → enter name (e.g.
username_myntcart) → click Create Database - Under "MySQL Users" → create a new user with a strong password
- Under "Add User To Database" → select your user + database → grant ALL PRIVILEGES → click Make Changes
-- 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;
Configure the .env File
In the MyntCart project root, copy .env.example to .env and update the following values with your actual credentials:
# 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
cpaneluser_myntcart and cpaneluser_dbuser). Use the full prefixed names in .env.
Open the Installer
Now open your browser and navigate to the secure installer 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/,.envwritable
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.
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
Database Setup
Enter your database connection details. The installer tests the connection before proceeding:
| Field | Value | Notes |
|---|---|---|
| Database Host | localhost | or 127.0.0.1 |
| Port | 3306 | Default MySQL port |
| Database Name | myntcart | The empty database you created earlier |
| Username | root | Your 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
Admin Account Setup
Create your super administrator account with full access to all system features:
| Field | Description |
|---|---|
| Full Name | Admin's display name shown in the panel |
| Email Address | Used for login (e.g. admin@yourdomain.com) |
| Phone Number | Admin contact number |
| Password | Minimum 8 characters — include uppercase, lowercase, numbers, and symbols |
Click "Create Account & Finish" to complete the installation.
Admin Panel URL:
https://yourdomain.com/admin (or http://localhost/myntcart/admin)Email:
admin@gmail.comPassword:
123456Change 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.
Post-Installation (cPanel / VPS only)
If deploying on a live server, complete these additional steps after the wizard finishes:
Setup Cron Jobs
Required for scheduled tasks (order expiry, session cleanup, notifications). Add in cPanel → Cron Jobs or via crontab:
* * * * * /usr/local/bin/php /home/username/public_html/artisan schedule:run
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://.
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
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
APP_NAME="MyntCart" APP_ENV=local APP_KEY=base64:your_app_key_here APP_DEBUG=true APP_URL=http://localhost
Mail Configuration
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
| Path | Permission | Purpose |
|---|---|---|
storage/ | 775 | Cache, logs, sessions, uploads |
bootstrap/cache/ | 775 | Framework bootstrap cache |
public/assets/ | 775 | Public uploaded files, images |
.env | 644 | Environment config (sensitive) |
artisan | 755 | Laravel CLI entry point |
# 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
Go to Google Cloud Console
Open console.cloud.google.com → Sign in with your Google account.
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 Name | Used For in MyntCart |
|---|---|
| Maps JavaScript API | Displaying maps on the website (store locator, checkout address picker, admin delivery map) |
| Maps SDK for Android | Maps in all Flutter Android apps (customer, vendor, store, delivery) |
| Maps SDK for iOS | Maps in all Flutter iOS apps |
| Places API | Address autocomplete / search-as-you-type on checkout and address forms |
| Geocoding API | Converting addresses to lat/long coordinates and vice versa |
| Directions API | Route planning and navigation for delivery personnel |
| Distance Matrix API | Calculating delivery distance and time between store and customer (Haversine shipping) |
| Geolocation API | Detecting user's current location on the website |
3. Create an API Key
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)
Click "Edit API Key"
Click on your newly created API key → "Edit" or the pencil icon.
Application Restrictions
For the web backend key: Select "HTTP referrers (websites)" → Add:
https://yourdomain.com/* http://localhost/*
API Restrictions
Select "Restrict key" → Check only the 8 APIs you enabled above. Click Save.
5. Enable Billing
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).
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)
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:
<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:
GMSServices.provideAPIKey("YOUR_IOS_MAPS_API_KEY")
Google Maps Config Summary
| Where | File / Location | Key Type |
|---|---|---|
| Web backend | .env + Admin Panel → 3rd Party → Google Map APIs | HTTP referrer restricted key |
| Android apps (all 4) | android/app/src/main/AndroidManifest.xml | Android apps restricted key |
| iOS apps (all 4) | ios/Runner/AppDelegate.swift | iOS apps restricted key |
reCAPTCHA Setup (Complete Guide)
Google reCAPTCHA protects login, registration, contact, and checkout forms from spam bots.
1. Go to reCAPTCHA Console
Open reCAPTCHA Admin
Go to google.com/recaptcha/admin → Sign in with your Google account.
2. Create a New Site
Click "+" (Create)
Click the "+" button to register a new site.
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:
yourdomain.com www.yourdomain.com localhost staging.yourdomain.com
Accept Terms & Submit
Check "Accept the reCAPTCHA Terms of Service" → Click Submit.
3. Copy Your Keys
After submission, Google shows two keys:
| Key | Where It's Used | Example |
|---|---|---|
| Site Key | Frontend HTML — displayed to the user in the reCAPTCHA widget | 6LcXXXXXXXXXXXXXXXXXXXXXXX |
| Secret Key | Server-side — used to verify the response with Google's API (never expose publicly) | 6LcXXXXXXXXXXXXXXXXXXXXXXX |
4. Configure in MyntCart
Add to .env file
RECAPTCHA_SITE_KEY=6LcXXXXXXXXXXXXXXXXXXXXXXX RECAPTCHA_SECRET_KEY=6LcXXXXXXXXXXXXXXXXXXXXXXX
Enable in Admin Panel
- Go to Admin Panel → System Settings → 3rd Party & Other Configs → Recaptcha
- Enter Site Key and Secret Key
- Select status: Active
- Click Save
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
Go to Firebase Console
Open console.firebase.google.com → Sign in with your Google account → Click "Create a project" (or "Add project").
Enter Project Name
Name your project (e.g. myntcart). Firebase auto-generates a Project ID below. Click Continue.
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)
Register Web App
In the project dashboard, click the Web icon (</>) → Enter nickname: MyntCart Web → Click Register app.
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 Variable | Where to Find in Firebase Console | Example Value |
|---|---|---|
FIREBASE_API_KEY | Project Settings (⚙ gear icon) → General tab → scroll to "Your apps" → Web app → apiKey | AIzaSyDSb3S-PbqQC-xxxxx |
FIREBASE_AUTH_DOMAIN | Same location → authDomain | myntcart.firebaseapp.com |
FIREBASE_PROJECT_ID | Same location → projectId (also visible at top of Project Settings page) | myntcart |
FIREBASE_STORAGE_BUCKET | Same location → storageBucket | myntcart.firebasestorage.app |
FIREBASE_MESSAGING_SENDER_ID | Same location → messagingSenderId (also shown in Cloud Messaging tab as "Sender ID") | 540949947647 |
FIREBASE_APP_ID | Same location → appId | 1:540949947647:web:abc123 |
FIREBASE_SERVER_KEY | Project 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
# 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).
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.
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.
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:
| Method | Used For | How to Enable |
|---|---|---|
| Phone | OTP login in all Flutter apps | Click Phone → Enable toggle → Save. No extra config needed. |
| Google sign-in on customer app & website | Click Google → Enable → Select support email → Save. Add SHA-1 key for Android (see below). | |
| Email/Password | Email-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).
Generate Key
Go to Project Settings (⚙ gear) → Service accounts tab → Click "Generate new private key" → Click "Generate key" → A JSON file downloads automatically.
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
Add Path to .env
Add this line to your .env file:
FIREBASE_CREDENTIALS=storage/app/firebase-service-account.json
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:
| App | Android Package Name | iOS Bundle ID |
|---|---|---|
| myntcartapp (Customer) | com.myntcart.app | com.myntcart.app |
| myntcart_vendor | com.myntcart.vendor | com.myntcart.vendor |
| myntcart_store | com.myntcart.store | com.myntcart.store |
| myntcart_delivery | com.myntcart.delivery | com.myntcart.delivery |
Register Android App
Open Project Settings
In Firebase Console → Project Settings (⚙ gear) → General tab → scroll to "Your apps"
Add Android App
Click "Add app" → Select Android icon
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").
Enter SHA-1 Fingerprint
Enter your SHA-1 fingerprint (required for Google Sign-In — see step 10 below)
Register & Download Config
Click Register app → Download google-services.json → Place at android/app/google-services.json in the Flutter project
Skip SDK Steps
Firebase shows "Add Firebase SDK" steps — skip these (Flutter already has it) → Click Continue to console
Register iOS App
Add iOS App
Click "Add app" → Select iOS icon
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.
Download Config
Download GoogleService-Info.plist → Place at ios/Runner/GoogleService-Info.plist in the Flutter project
Skip & Finish
Skip the remaining SDK steps → Click Continue to console
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)
# 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:
keytool -list -v -keystore %USERPROFILE%\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android
# 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.
- Copy the SHA1 fingerprint from the output (format:
XX:XX:XX:...:XX) - Go to Firebase Console → Project Settings → Your apps → select the Android app
- Click "Add fingerprint" → Paste the SHA-1 → Save
- For Play Store release, add the release keystore SHA-1 too
- 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:
| Config | Where in Admin Panel | What to Enter |
|---|---|---|
| Firebase Auth | System Settings → 3rd Party & Other Configs → Firebase Auth | API Key, Auth Domain, Project ID, Storage Bucket, Messaging Sender ID, App ID |
| Push Notifications | System Settings → 3rd Party & Other Configs → Push Notifications Setup | FCM Server Key, VAPID Key |
And in the .env file:
| Config | File | What to Enter |
|---|---|---|
| All Firebase web config | .env | FIREBASE_API_KEY, AUTH_DOMAIN, PROJECT_ID, STORAGE_BUCKET, MESSAGING_SENDER_ID, APP_ID, SERVER_KEY |
| Service Account | storage/app/firebase-service-account.json | Downloaded JSON file from Firebase Console → Service accounts |
Firebase Configuration Summary
| What | Where to Configure | Source in Firebase Console |
|---|---|---|
| Web API Key, Project ID, etc. | .env file + Admin Panel → Firebase Auth | Project Settings → General → Your apps → Web app config |
| FCM Server Key | .env + Admin Panel → Push Notifications | Project Settings → Cloud Messaging → Server key (Legacy) |
| VAPID Key | Admin Panel → Push Notifications | Project Settings → Cloud Messaging → Web Push certificates |
| Service Account JSON | storage/app/firebase-service-account.json | Project Settings → Service accounts → Generate new private key |
| Auth methods | Firebase Console directly | Build → Authentication → Sign-in method |
| Android config (per app) | android/app/google-services.json | Project Settings → Your apps → Android app → Download |
| iOS config (per app) | ios/Runner/GoogleService-Info.plist | Project Settings → Your apps → iOS app → Download |
| SHA-1 fingerprint | Firebase Console → Android app → Add fingerprint | Generated 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
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.
Get Your Account Credentials
After login, you land on the Twilio Console Dashboard. Your credentials are shown right on this page:
| Credential | Where to Find | Example |
|---|---|---|
| Account SID | Twilio Console → Dashboard → "Account SID" (shown at top) | ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| Auth Token | Same page → Click "Show" next to Auth Token to reveal it | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
2. Enable WhatsApp Sandbox (for Testing)
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.
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.
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)
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.
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).
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
Open Twilio WhatsApp Config
Go to Admin Panel → System Settings → 3rd Party & Other Configs → Twilio WhatsApp Config.
Enter Credentials
Fill in the following fields:
| Field | Value | Where to Get |
|---|---|---|
| Twilio Account SID | ACxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | Twilio Console → Dashboard |
| Twilio Auth Token | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx | Twilio Console → Dashboard → Click "Show" |
| WhatsApp From Number | +919876543210 | Your approved WhatsApp Business number (or sandbox number for testing) |
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.
- Go to Admin Panel → Store Management → Store Settings (or select a specific store)
- Find the WhatsApp Number field
- Enter the store's WhatsApp number with country code (e.g.
+919876543210) - Click Save
6. Test WhatsApp Messaging
- Go to Admin Panel → Store Management → Bulk WhatsApp
- Select a store with a configured WhatsApp number
- Enter a test message
- Click Preview to see the formatted WhatsApp message
- Click Send — verify the message arrives on WhatsApp
WhatsApp Features in MyntCart
| Feature | Description | Where in Admin |
|---|---|---|
| Bulk WhatsApp Orders | Send orders to multiple stores at once via WhatsApp with customizable messages | Store Management → Bulk WhatsApp |
| Order Confirmation | Automatic message with order ID, items, total when order is placed | Automatic (after config) |
| Ready for Pickup | Notify customers when their order is packed and ready | Triggered on status change |
| Delivery Updates | Out for delivery, delivered, and failed delivery notifications | Triggered on status change |
| Custom Templates | Pre-built message templates with variables: {{customer_name}}, {{order_id}}, {{amount}}, {{store_name}}, {{store_address}} | Store WhatsApp Templates |
| Store-Level WhatsApp | Each branch has its own WhatsApp number for direct customer contact | Store Management → Store Settings |
| Invoice Sharing | Share order invoices and receipts directly to customer's WhatsApp | Order Details page |
| Chat Widget | Floating WhatsApp chat button on storefront for instant support | Social Media Settings → Social Media Chat |
Twilio Pricing
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
- Priority-Based Adapters — Each shipping provider (Shiprocket, Easyship, ShipEngine, Manual) is an adapter with a configurable priority (1–100)
- Automatic Fallback — If the highest-priority adapter fails, the system automatically tries the next adapter
- Manual Fallback — Manual shipping is always available as the last-resort fallback adapter
- Multi-Option Display — Show customers multiple shipping options from different providers so they can choose
- Category-wise Shipping — Set different shipping costs per product category
- Order-wise Shipping — Flat shipping rate per order
Configure Shipping Calculator
Access Settings
Go to Admin Panel → Shipping Calculator Settings to view all available adapters and their status.
Enable & Prioritize
Toggle each adapter on/off and set priority numbers (lower = higher priority). The system processes adapters in priority order.
Test Connection
Use the Test button for each adapter to verify API credentials and connectivity before going live.
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
| Tool | Required Version | Notes |
|---|---|---|
| Flutter SDK | 3.38.0 or higher | Stable channel recommended |
| Dart SDK | 3.10.0 or higher | Bundled with Flutter — no separate install needed |
| Java JDK | JDK 17 | Exactly version 17 — not 11, not 21. Required for Android Gradle |
| Android Studio | Latest (Hedgehog / Iguana / Ladybug) | With Flutter & Dart plugins installed |
| Android SDK | compileSdk 36, minSdk (Flutter default), targetSdk 36 | Install via Android Studio SDK Manager |
| Xcode | 15.0+ (macOS only) | Required for iOS builds |
| CocoaPods | Latest (macOS only) | sudo gem install cocoapods |
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)
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).
# Extract to C:\flutter (or your preferred path) # Then add to System PATH: C:\flutter\bin
Install Java JDK 17
Download and install Oracle JDK 17 or OpenJDK 17 (Adoptium Temurin recommended). After installation, set the JAVA_HOME environment variable.
# Set JAVA_HOME (System Variable) JAVA_HOME = C:\Program Files\Java\jdk-17 # Add to PATH (System Variable) %JAVA_HOME%\bin
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.
Install Flutter & Dart Plugins
Open Android Studio → File → Settings → Plugins → Search "Flutter" → Install (it auto-installs the Dart plugin too). Restart Android Studio.
Configure System Environment Variables
Open System Properties → Environment Variables and add/update these:
| Variable | Value (example path) | Type |
|---|---|---|
JAVA_HOME | C:\Program Files\Java\jdk-17 | System Variable |
ANDROID_HOME | C:\Users\YourName\AppData\Local\Android\Sdk | System Variable |
PATH (append) | C:\flutter\bin | System Variable |
PATH (append) | %JAVA_HOME%\bin | System Variable |
PATH (append) | %ANDROID_HOME%\platform-tools | System Variable |
Verify Installation
Open a new terminal window (old ones don't see PATH changes) and run:
# 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)
Download & Extract Flutter
Download Flutter SDK and extract to your home directory (e.g. ~/flutter). Add to PATH in your shell 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"
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
Install Xcode & CocoaPods
Xcode is required for building iOS apps. It's only available on macOS.
- Open the Mac App Store → Search "Xcode" → Click Get / Install (it's free, ~12 GB download)
- Wait for installation to complete (can take 20–40 minutes)
- Open Xcode once after installation → Accept the license agreement → Let it install additional components
- Set Xcode command line tools — open Terminal and run:
# 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
- Verify Xcode installation:
# Check Xcode version xcodebuild -version # Should show: Xcode 15.x or higher # Check CocoaPods version pod --version # Should show: 1.x.x
brew install cocoapods) which works natively on ARM.
Install Android Studio + Plugins
Same as Windows — install Android Studio, then install Flutter & Dart plugins from Settings → Plugins.
Verify
Run source ~/.zshrc then flutter doctor — fix any issues it reports. Accept Android licenses: flutter doctor --android-licenses
Import Project into Android Studio
- Open Android Studio → File → Open
- Browse to the project folder (e.g.
E:\AppDevelopment\CodeMynt\myntcartapp) - Select the root folder that contains
pubspec.yaml— click OK - Android Studio detects it as a Flutter project and loads it
- Wait for "Running pub get..." to finish (bottom status bar)
- If prompted to configure Dart/Flutter SDK path → point to
C:\flutter - Connect a device or start an emulator → Click the green Run ▶ button
- Open Android Studio → File → Open
- Browse to the project folder (e.g.
~/Projects/myntcartapp) - Select the root folder that contains
pubspec.yaml— click Open - Android Studio detects it as a Flutter project and loads it
- Wait for "Running pub get..." to finish
- For iOS: run
cd ios && pod install && cd ..in the terminal - Select target device (Android emulator or iOS Simulator) → Click 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.
# 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.
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 }
| Constant | What to Change | Example |
|---|---|---|
appName | Your brand name displayed inside the app (splash screen, headers, about page) | 'MyStore' |
slogan | Short tagline shown below the logo on the splash screen | 'Shop Smart' |
appVersion | Current version — update on each release to match pubspec.yaml | '2.0.0' |
baseUrl | Your MyntCart backend URL (no trailing slash). For local testing use your machine IP, not localhost | 'https://shop.example.com' |
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.
| Image | File Path | Usage |
|---|---|---|
| App Logo | assets/images/agx_logo.png | Main app icon used inside the app (splash, about, headers) |
| Logo with Name | assets/images/logo_with_name.png | Full brand logo with text — splash screen, login page |
| Placeholder | assets/images/placeholder_1x1.png | Default placeholder for product images that haven't loaded yet |
| Login Background | assets/images/login.png | Background illustration on the login/registration screen |
| Empty Cart | assets/images/empty_cart.png | Illustration shown when the shopping cart is empty |
| No Data | assets/images/no_data.png | Shown when a list/search returns no results |
| Maintenance | assets/images/maintenance.png | Displayed 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
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.
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.
Copy generated icons to the project
Extract the downloaded zip and copy the files to the correct folders:
# 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
# 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
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:
<application android:label="Your App Name" <!-- Change this --> ... >
iOS
Edit ios/Runner/Info.plist — find CFBundleDisplayName (or CFBundleName):
<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
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
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
- You need a Google account (Gmail). If you don't have one, create at accounts.google.com/signup
- Go to console.firebase.google.com
- Sign in with your Google account
6.2 — Create a Firebase Project
Click "Create a project"
On the Firebase Console dashboard, click the Create a project button (or "Add project" if you already have projects).
Enter Project Name
Enter your project name (e.g. myntcart or yourstore-app). Firebase auto-generates a project ID below it. Click Continue.
Google Analytics (Optional)
Toggle Google Analytics on or off. If enabled, select or create a Google Analytics account. Click Create project.
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.
| App | Android Package Name | iOS Bundle ID |
|---|---|---|
| myntcartapp (Customer) | com.myntcart.app | com.myntcart.app |
| myntcart_vendor | com.myntcart.vendor | com.myntcart.vendor |
| myntcart_store | com.myntcart.store | com.myntcart.store |
| myntcart_delivery | com.myntcart.delivery | com.myntcart.delivery |
For each app, repeat these steps:
Register Android App
Click the Android icon
In your Firebase project dashboard, click "Add app" → Select the Android icon.
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).
Download google-services.json
Click Download google-services.json. Save this file — you'll place it in your Flutter project next.
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
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.
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):
| Service | Where to Enable | Why MyntCart Needs It |
|---|---|---|
| Authentication | Build → Authentication → Sign-in method | Phone OTP login, Google sign-in, email/password login |
| Cloud Messaging (FCM) | Project Settings → Cloud Messaging | Push notifications to all mobile apps |
| Crashlytics (optional) | Build → Crashlytics | Automatic crash reporting and error tracking |
Enable Authentication Methods
- Go to Build → Authentication → Sign-in method
- Enable Phone — required for OTP login in all apps
- Enable Google — for Google sign-in on customer app
- Enable Email/Password — for email-based login
- Click Save for each
Get FCM Server Key (for Push Notifications)
- Go to Project Settings (gear icon) → Cloud Messaging tab
- Under Cloud Messaging API (V1) — note this is enabled by default
- You need the Server Key for your MyntCart admin panel. If using legacy API, copy the Server Key shown
- For VAPID (web push): Click Generate key pair under Web Push certificates
- 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.
# 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
- Copy the SHA1 fingerprint from the output
- Go to Firebase Console → Project Settings → Your Android app → Add fingerprint
- Paste the SHA-1 and save
- For release builds, use your release keystore SHA-1 instead
6.5 — Place Firebase Config Files in Flutter Project
Android — google-services.json
Place the downloaded file at exactly this path:
myntcartapp/android/app/google-services.json
Open the file and verify package_name matches your applicationId from build.gradle:
{
"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..." }]
}]
}
iOS — GoogleService-Info.plist
Firebase Console → Your iOS app → Download GoogleService-Info.plist → Place at exactly this path:
myntcartapp/ios/Runner/GoogleService-Info.plist
The BUNDLE_ID inside this plist must match your iOS Bundle Identifier set in Xcode.
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:
<meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_GOOGLE_MAPS_API_KEY" />
Edit ios/Runner/AppDelegate.swift:
GMSServices.provideAPIKey("YOUR_GOOGLE_MAPS_API_KEY")
Step 8 — Update Version
Edit pubspec.yaml in the root of the app directory:
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
# 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 Change | File Path |
|---|---|
| Base URL, app name, slogan, version | lib/utill/app_constants.dart |
| Logo, placeholder, illustrations | lib/utill/images.dart + assets/images/ |
| Android app name (home screen) | android/app/src/main/AndroidManifest.xml |
| Android package name | android/app/build.gradle |
| Android launcher icon | android/app/src/main/res/mipmap-*/ |
| Android Firebase | android/app/google-services.json |
| Android Google Maps key | android/app/src/main/AndroidManifest.xml |
| iOS app name | ios/Runner/Info.plist |
| iOS bundle identifier | Xcode → Runner → General → Bundle Identifier |
| iOS launcher icon | ios/Runner/Assets.xcassets/AppIcon.appiconset/ |
| iOS Firebase | ios/Runner/GoogleService-Info.plist |
| iOS Google Maps key | ios/Runner/AppDelegate.swift |
| App version + build number | pubspec.yaml → version: |
App-Specific Notes
| App | Package | Key Features |
|---|---|---|
| myntcartapp | com.myntcart.app | Shopping, cart, checkout, wallet, order tracking |
| myntcart_store | com.myntcart.store | POS, inventory, staff management, branch control |
| myntcart_vendor | com.myntcart.vendor | Product listing, order processing, earnings, withdrawal |
| myntcart_delivery | com.myntcart.delivery | Order 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
| Module | Description | Key Features |
|---|---|---|
| Shiprocket | Domestic courier aggregation with 17+ courier partners | Auto pickup, tracking, NDR management, COD |
| Shiprocket Local Quick | Hyperlocal same-day delivery for local businesses | Instant delivery, real-time tracking, local couriers |
| Easyship (Coming Soon) | Global multi-carrier shipping aggregator | 250+ couriers, rate comparison, customs, insurance |
| ShipEngine (Coming Soon) | Multi-carrier shipping with label generation | Label printing, rate shopping, address validation |
| Store Management | Multi-branch store operations with POS | Branch management, store managers, inventory, employees |
| Global Payment Gateways | 10 international payment providers | Adyen, Airwallex, Alipay, Apple Pay, Authorize.Net, Checkout.com, Google Pay, Klarna, Mollie, Square |
| Commercial Tax | Advanced international tax management | Tax 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.
•
upload_max_filesize >= 20MB•
post_max_size >= 20MB
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.
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.
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.
Run Migrations (if prompted)
Some modules need database tables. If prompted, run migrations via terminal:
php artisan migrate php artisan config:cache php artisan route:cache
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.
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.
After installation, the module files are placed at:
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
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).
Click "Activate" on the Module
Click the Activate button next to the module you want to license. This opens the module's activation page.
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.
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:
- Store Management section → first item is "Module Activation" — if not licensed, it shows a yellow
Requiredbadge. All other items (Dashboard, Branch Management, etc.) showLicense Requiredand are locked. - Commercial Tax Management section → first item is "Module Activation" — sub-items like Tax Dashboard, Tax Classes show locked until licensed.
- Shiprocket Management section → "Module Activation" with green ✓ (if active) or yellow warning (if not).
Click the Module Activation item → enter your purchase key → same activation flow as above.
| Module | Sidebar Section | Activation Path |
|---|---|---|
| Shiprocket | Shiprocket Management | Shiprocket Management → Module Activation |
| Shiprocket Local Quick | Shiprocket Local Quick | Shiprocket Local Quick → Module Activation |
| Easyship | Easyship Management | Easyship Management → Module Activation |
| ShipEngine | ShipEngine Management | ShipEngine Management → Module Activation |
| Store Management | Store Management | Store Management → Module Activation |
| Global Payment Gateways | Global Payment Gateways | Global Payment Gateways → Module Activation |
| Commercial Tax | Commercial Tax Management | Commercial Tax Management → Module Activation |
license.codemynt.in for activation and periodic license health checks.
How to Deactivate a Module License
Go to Module Licenses
Navigate to Admin Panel → Themes & Addons → Module Licenses.
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.
How to Delete / Remove a Module
Option A — From Addons Page (Recommended)
Deactivate License First
Go to Module Licenses → click Deactivate on the module (see above).
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.
Clear Caches
After deletion, clear caches so the framework stops looking for the removed module:
php artisan config:cache php artisan route:cache php artisan view:clear
Option B — Manual Deletion (Server Access)
Deactivate license first
Always deactivate the module license before removing files.
Delete the module folder via terminal
Remove the directory from your server:
# Example: remove Easyship module rm -rf Modules/Easyship # Clear caches php artisan config:cache php artisan route:cache php artisan view:clear
Production Deployment Checklist
- Set
APP_ENV=productionandAPP_DEBUG=false - Configure SSL certificate (HTTPS required)
- Change all default passwords (admin, database)
- Set proper file permissions (644 for files, 755 for directories)
- Configure cron jobs for scheduler
- Set up backup procedures
- Enable proper error logging (disable display_errors)
- Remove
setup.phpand installer routes - Configure payment gateway live keys
- Test all SMS and email notifications
- Verify Firebase push notifications on all apps
- Test Google Maps on all platforms
Update Guide (Version Upgrade)
How to safely update MyntCart from one version to the next without losing data, settings, or customizations.
Backup Everything
Before touching anything, create a full backup:
# 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/
Enable Maintenance Mode
Put the site in maintenance mode so customers don't see errors during the update.
php artisan down --message="Updating... We'll be back shortly."
Upload New Files
Replace the project files with the new version. Do NOT overwrite these files/folders — they contain your custom settings:
.env— your environment configurationstorage/— uploaded product images and filesModules/— your installed add-on modulespublic/assets/— if you've customized any static assets
Or use the Admin Panel → System Setup → Software Update page to upload the update zip — it handles file replacement automatically while preserving your data.
Run Migrations & Clear Caches
Apply any new database changes and clear all caches:
php artisan migrate --force php artisan config:cache php artisan route:cache php artisan view:clear php artisan optimize
Disable Maintenance Mode
Bring the site back online:
php artisan up
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
| Version | Date | Changes |
|---|---|---|
| v2.0.0 | 2025 |
|
| v1.0.0 | 2024 | Initial release — core eCommerce features, admin panel, basic payment gateways, customer app. |
License Information
Regular License
- Use for a single end product (one website/domain)
- End product is free for end users (no paid access/subscription)
- Includes all source code, Flutter apps, and documentation
- Includes 6 months of support from CodeMynt
- Lifetime updates for the purchased version
Extended License
- Use for a single end product where end users are charged (SaaS, subscription, paid marketplace)
- Everything in Regular License, plus:
- Permission to charge end users for access to the product
- Includes priority support
localhost or subdomains are allowed under the same license.
What's Included
| Item | Regular | Extended |
|---|---|---|
| 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
- Bug fixes and troubleshooting for the product as-is
- Help with installation and configuration issues
- Guidance on product features and built-in functionality
- Assistance with updating to the latest version
- Module activation and license issues
What's NOT Included in Support
- Custom feature development or modifications
- Third-party plugin/service integration beyond what's built-in
- Server setup, hosting configuration, or domain management
- Design customization (CSS, theme modifications, custom layouts)
- Data migration from non-WooCommerce platforms
- Issues caused by modifying the source code
How to Get Support
| Channel | Details | Response Time |
|---|---|---|
| support@codemynt.in | Within 24–48 hours (business days) | |
| License Portal | license.codemynt.in → Support Ticket | Within 24 hours |
| Documentation | This documentation site | Self-service (instant) |
Demo Access
| Panel / App | URL / Access | Credentials |
|---|---|---|
| Admin Panel | https://yourdomain.com/admin | Email: admin@gmail.com / Password: 123456 |
| Customer Website | https://yourdomain.com | Register a new account or use demo credentials |
| Vendor Panel | https://yourdomain.com/vendor | Register as vendor or contact admin for credentials |
| Customer App | myntcartapp (Flutter) | Register via app or use website credentials |
| Vendor App | myntcart_vendor (Flutter) | Use vendor panel credentials |
| Store App | myntcart_store (Flutter) | Assigned by admin (store manager account) |
| Delivery App | myntcart_delivery (Flutter) | Assigned by admin (delivery man account) |
admin@gmail.com / 123456) are for initial setup only. Change them immediately after first login via Admin Panel → Profile → Change Password.
Frequently Asked Questions
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.
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.
Are updates free?
Yes. All future updates for the version you purchased are free and lifetime. Download new versions from license.codemynt.in.
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.
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.
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.
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.
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.
Can I migrate from WooCommerce?
Yes. Built-in WooCommerce migration tools let you import products, categories, and customer accounts. See Data Import Tools documentation.
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.