(Flutter Version Setup Documentation)
First of all, Thank you so much for purchasing this template and for being our loyal customer. You are awesome!
This document is based on the above mentioned version. If you are running a different version, please use the appropriate commands.
This documentation is to help you regarding each step of the installation. Please go through the documentation carefully to understand how to set up the code and get everything running smoothly. We have tried our best to document each and every steps for any beginners or with intermediate expertise to get the app up and running.
You will need the following sofwares to customize this template.
We assume you to have some basic knowlege of Mobile programing or Web to get this up and running. How ever we made every attempt to document all steps to get you going. Please note that this app was built using Flutter and requires additional knowledge of using the Flutter Dev environment.
If you need more detailed Step-By-Step guide, please click here Flutter Setup
The showcase website can be viewed here https://garage.v1tl.com/showcase/
You may register as a new user to try the full order flow.
The backend admin control panel can be viewed here https://garage.v1tl.com/login
URL: https://garage.v1tl.com/login
Username: admin@demo.com
Password: demo123
The iOs Demo App can be viewed here iOs App for Customers Demo
The Android Demo App can be viewed here Android App for Customers Demo
The LEMP software stack is a group of software that can be used to serve dynamic web pages and web applications. This is an acronym that describes a Linux operating system, with an Nginx (Pronounced like “Engine-X”) web server. The backend data is stored in the MySQL database and the dynamic processing is handled by PHP.
This guide demonstrates how to install a LEMP stack on an Ubuntu 18.04 server. The Ubuntu operating system takes care of the first requirement. We will describe how to get the restof the components up and running.
Before you complete this tutorial, you should have a regular, non-root user account on your server with sudo privileges. Set up this account by completing our initial server setup guide for Ubuntu 18.04.
Once you have your user available, you are ready to begin the steps outlined in this guide.
In order to display web pages to our site visitors, we are going to employ Nginx, a modern, efficient web server.
All of the software used in this procedure will come from Ubuntu’s default package repositories. This means we can use the apt package management suite to complete the necessary installations.
Since this is our first time using apt for this session, start off by updating your server’s package index. Following that, install the server:
$ ssh root@ip $ sudo apt update $ sudo apt install nginx
On Ubuntu 18.04, Nginx is configured to start running upon installation.
If you have the ufw firewall running, as outlined in the initial setup guide, you will need to allow connections to Nginx. Nginx registers itself with ufw upon installation, so the procedure is rather straightforward.
It is recommended that you enable the most restrictive profile that will still allow the traffic you want. Since you haven’t configured SSL for your server in this guide, you will only need to allow traffic on port 80.
Enable this by typing:
$ sudo ufw enable $ sudo ufw allow 'Nginx HTTP' $ sudo ufw allow ssh $ sudo ufw allow http $ sudo ufw allow https
You can verify the change by running:
$ sudo ufw status
This command’s output will show that HTTP traffic is allowed:
Output status: active To Action From -- ------ ------ openSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
With the new firewall rule added, you can test if the server is up and running by accessing your server’s domain name or public IP address in your web browser.
If you do not have a domain name pointed at your server and you do not know your server’s public IP address, you can find it by running the following command:
$ ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
This will print out a few IP addresses. You can try each of them in turn in your web browser.
As an alternative, you can check which IP address is accessible, as viewed from other locations on the internet:
$ curl -4 icanhazip.com
Type the address that you receive in your web browser and it will take you to Nginx’s default landing page:
http://server_domain_or_IP
If you see the above page, you have successfully installed Nginx.
Now that you have a web server, you need to install MySQL (a database management system) to store and manage the data for your site.
Install MySQL by typing:
$ sudo apt install mysql-server
The MySQL database software is now installed, but its configuration is not yet complete.
To secure the installation, MySQL comes with a script that will ask whether we want to modify some insecure defaults. Initiate the script by typing:
$ sudo mysql_secure_installation
This script will ask if you want to configure the VALIDATE PASSWORD PLUGIN.
Answer Y for yes, or anything else to continue without enabling.
VALIDATE PASSWORD PLUGIN can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD plugin? Press y|Y for Yes, any other key for No:
If you’ve enabled validation, the script will also ask you to select a level of password validation. Keep in mind that if you enter 2 – for the strongest level – you will receive errors when attempting to set any password which does not contain numbers, upper and lowercase letters, and special characters, or which is based on common dictionary words.
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Next, you’ll be asked to submit and confirm a root password:
Please set the password for root here. New password: Re-enter new password:
For the rest of the questions, you should press Y and hit the ENTER key at each prompt. This will remove some anonymous users and the test database, disable remote root logins, and load these new rules so that MySQL immediately respects the changes we have made.
Note that in Ubuntu systems running MySQL 5.7 (and later versions), the root MySQL user is set to authenticate using the auth_socket plugin by default rather than with a password. This allows for some greater security and usability in many cases, but it can also complicate things when you need to allow an external program (e.g., phpMyAdmin) to access the user.
If using the auth_socket plugin to access MySQL fits with your workflow, you can proceed to Step 3. If, however, you prefer to use a password when connecting to MySQL as root, you will need to switch its authentication method from auth_socket to mysql_native_password. To do this, open up the MySQL prompt from your terminal:
$ sudo mysql
Next, check which authentication method each of your MySQL user accounts use with the following command:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | | auth_socket | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)
In this example, you can see that the root user does in fact authenticate using the auth_socket plugin. To configure the root account to authenticate with a password, run the following ALTER USER command. Be sure to change password to a strong password of your choosing:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Then, run FLUSH PRIVILEGES which tells the server to reload the grant tables and put your new changes into effect:
mysql> FLUSH PRIVILEGES;
Check the authentication methods employed by each of your users again to confirm that root no longer authenticates using the auth_socket plugin:
mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
Output +------------------+-------------------------------------------+-----------------------+-----------+ | user | authentication_string | plugin | host | +------------------+-------------------------------------------+-----------------------+-----------+ | root | *3636DACC8616D997782ADD0839F92C1571D6D78F | mysql_native_password | localhost | | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost | | debian-sys-maint | *CC744277A401A7D25BE1CA89AFF17BF607F876FF | mysql_native_password | localhost | +------------------+-------------------------------------------+-----------------------+-----------+ 4 rows in set (0.00 sec)
You can see in this example output that the root MySQL user now authenticates using a password. Once you confirm this on your own server, you can exit the MySQL shell:
mysql> exit
Note: After configuring your root MySQL user to authenticate with a password, you’ll no longer be able to access MySQL with the sudo mysql command used previously. Instead, you must run the following: $ mysql -u root -p After entering the password you just set, you will see the MySQL prompt.
At this point, your database system is now set up and you can move on to installing PHP.
You now have Nginx installed to serve your pages and MySQL installed to store and manage your data. However, you still don’t have anything that can generate dynamic content. This is where PHP comes into play.
Since Nginx does not contain native PHP processing like some other web servers, you will need to install php-fpm, which stands for “fastCGI process manager”. We will tell Nginx to pass PHP requests to this software for processing.
$ sudo add-apt-repository universe
Install the php-fpm module along with an additional helper package, php-mysql, which will allow PHP to communicate with your database backend. The installation will pull in the necessary PHP core files. Do this by typing:
$ sudo apt install php-fpm php-mysql
You now have all of the required LEMP stack components installed, but you still need to make a few configuration changes in order to tell Nginx to use the PHP processor for dynamic content.
This is done on the server block level (server blocks are similar to Apache’s virtual hosts). To do this, open a new server block configuration file within the /etc/nginx/sites-available/ directory. In this example, the new server block configuration file is named example.com, which you need to replace with your domain name of your choice.
$ sudo nano /etc/nginx/sites-available/example.com
By editing a new server block configuration file, rather than editing the default one, you’ll be able to easily restore the default configuration if you ever need to.
Add the following content, which was taken and slightly modified from the default server block configuration file, to your new server block configuration file:
server { listen 80; root /var/www/html; index index.php index.html index.htm index.nginx-debian.html; server_name example.com www.example.com; location / { try_files $uri $uri/ /index.php?/$request_uri; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/var/run/php/php7.2-fpm.sock; } location ~ /\.ht { deny all; } }
Please use the correct PHP Version number above based on your operating system on teh server. For example for Ubuntu 20.04 PHP version should be 7.4 instead of 7.2 in the file above.
Here’s what each of these directives and location blocks do:
After adding this content, save and close the file. Enable your new server block by creating a symbolic link from your new server block configuration file (in the /etc/nginx/sites-available/ directory) to the /etc/nginx/sites-enabled/ directory:
$ sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
Then, unlink the default configuration file from the /sites-enabled/ directory:
$ sudo unlink /etc/nginx/sites-enabled/default
$ sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/
Test your new configuration file for syntax errors by typing:
$ sudo nginx -t
If any errors are reported, go back and recheck your file before continuing.
When you are ready, reload Nginx to make the necessary changes:
$ sudo systemctl reload nginx
This concludes the installation and configuration of your LEMP stack. However, it’s prudent to confirm that all of the components can communicate with one another.
Your LEMP stack should now be completely set up. You can test it to validate that Nginx can correctly hand .php files off to the PHP processor.
To do this, use your text editor to create a test PHP file called info.php in your document root:
$ sudo nano /var/www/html/info.php
Enter the following lines into the new file. This is valid PHP code that will return information about your server:
/var/www/html/info.php
When you are finished, save and close the file.
Now, you can visit this page in your web browser by visiting your server’s domain name or public IP address followed by /info.php:
http://your_server_domain_or_IP/info.php
You should see a web page that has been generated by PHP with information about your server:
If you see a page that looks like this, you’ve set up PHP processing with Nginx successfully.
After verifying that Nginx renders the page correctly, it’s best to remove the file you created as it can actually give unauthorized users some hints about your configuration that may help them try to break in. You can always regenerate this file if you need it later.
For now, remove the file by typing:
$ sudo rm /var/www/html/info.php
With that, you now have a fully-configured and functioning LEMP stack on your Ubuntu 18.04 server.
A LEMP stack is a powerful platform that will allow you to set up and serve nearly any website or application from your server.
There are a number of next steps you could take from here. For example, you should ensure that connections to your server are secured. To this end, you could secure your Nginx installation with Let’s Encrypt. By following this guide, you will acquire a free TLS/SSL certificate for your server, allowing it to serve content over HTTPS.
It’s well known that SSL/TLS encryption of your website leads to higher search rankings and better security for your users. However, there are a number of barriers that have prevented website owners from adopting SSL.
Two of the biggest barriers have been the cost and the manual processes involved in getting a certificate. But now, with Let’s Encrypt, they are no longer a concern. Let’s Encrypt makes SSL/TLS encryption freely available to everyone.
Let’s Encrypt is a free, automated, and open certificate authority (CA). Yes, that’s right: SSL/TLS certificates for free. Certificates issued by Let’s Encrypt are trusted by most browsers today, including older browsers such as Internet Explorer on Windows XP SP3. In addition, Let’s Encrypt fully automates both issuing and renewing of certificates.
In this blog post, we cover how to use the Let’s Encrypt client to generate certificates and how to automatically configure NGINX Open Source and NGINX Plus to use them.
Before issuing a certificate, Let’s Encrypt validates ownership of your domain. The Let’s Encrypt client, running on your host, creates a temporary file (a token) with the required information in it. The Let’s Encrypt validation server then makes an HTTP request to retrieve the file and validates the token, which verifies that the DNS record for your domain resolves to the server running the Let’s Encrypt client.
Before starting with Let’s Encrypt, you need to:
Now you can easily set up Let’s Encrypt with NGINX Open Source or NGINX Plus (for ease of reading, from now on we’ll refer simply to NGINX).
Note: We tested the procedure outlined in this blog post on Ubuntu 16.04 (Xenial).
First, download the Let’s Encrypt client, certbot:
$ apt-get update //Command for Ubuntu 18.x $ sudo apt-get install certbot $ apt-get install python-certbot-nginx //Command for Ubuntu 20.x $ sudo apt install certbot python3-certbot-nginx
certbot can automatically configure NGINX for SSL/TLS. It looks for and modifies the server block in your NGINX configuration that contains a server_name directive with the domain name you’re requesting a certificate for. In our example, the domain is www.example.com.
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; server_name example.com www.example.com; }
$ nginx -t && nginx -s reload
The NGINX plug‑in for certbot takes care of reconfiguring NGINX and reloading its configuration whenever necessary.
$ sudo certbot --nginx -d example.com -d www.example.com
Congratulations! You have successfully enabled https://example.com and https://www.example.com ------------------------------------------------------------------------------------- IMPORTANT NOTES: Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com//privkey.pem Your cert will expire on 2017-12-12.
Note: Let’s Encrypt certificates expire after 90 days (on 2017-12-12 in the example). For information about automatically renenwing certificates, see Automatic Renewal of Let’s Encrypt Certificates below.
If you look at domain‑name.conf, you see that certbot has modified it:
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/html; server_name example.com www.example.com; listen 443 ssl; # managed by Certbot # RSA certificate ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot # Redirect non-https traffic to https if ($scheme != "https") { return 301 https://$host$request_uri; } # managed by Certbot }
Let’s Encrypt certificates expire after 90 days. We encourage you to renew your certificates automatically. Here we add a cron job to an existing crontab file to do this.
$ crontab -e
0 12 * * * /usr/bin/certbot renew --quiet
We’ve installed the Let’s Encrypt agent to generate SSL/TLS certificates for a registered domain name. We’ve configured NGINX to use the certificates and set up automatic certificate renewals. With Let’s Encrypt certificates for NGINX and NGINX Plus, you can have a simple, secure website up and running within minutes.
sudo apt update // to update your packages
sudo apt install phpmyadmin // to install phpmyadmin
apache2 // (direct press enter)
sudo ln -s /usr/share/phpmyadmin /var/www/html // to create shortcut key for phpmyadmin at /var/www/html/
Now open phpmyadmin in the browser // You can login by username and password, which you set before.
Next step is to create a database and name it as you like. Then select the database and import the sql file included in your folder. You can import the empty database if you want everything blank or you can import the database with sample data if you want to have some dummy entries.
If you get a MYSQL Version error for JSON syntax when importing the databse, edit the .SQL file provided and search to replace "json" with "text"
APP_NAME="Your-App-Name" STRIPE_KEY=Your-Stripe-Live-Key STRIPE_SECRET=Your-Stripe-Secret DB_HOST=Your-Database-Host-Address DB_DATABASE=Your-Database-Name DB_USERNAME=Your-Database-Username DB_PASSWORD=Your-Database-Password MAIL_MAILER=smtp MAIL_HOST=Your-SMTP-Host MAIL_PORT=Your-SMTP-Port MAIL_USERNAME=Your-SMTP-Email-Username MAIL_PASSWORD=Your-SMTP-Email-Password MAIL_ENCRYPTION=ssl MAIL_FROM_ADDRESS=Your-SMTP-Email-ID MAIL_FROM_NAME="${APP_NAME}"
Some important items before setting up
In case you are cloning from VCS and installing Laravel, then you need to do the following steps:
cd my-project composer install php artisan key:generate
php artisan storage:link
php artisan migrate:fresh --seed
cd my-project // To go to the project directory php artisan serve // To start the server
cd my-project php artisan cache:clear php artisan view:clear php artisan route:clear php artisan clear-compiled
We assume you to have some basic knowlege of Mobile programing or Web to get this up and running. How ever we made every attempt to document all steps to get you going. Please note that this app was built using Flutter and requires additional knowledge of using the Flutter Dev environment.
If you need more detailed Step-By-Step guide, please click here Flutter Setup
/// Image Base URL static final image = 'your-image-base-path-on-live-server'; static final iosId = 'your-apple-app-id'; static final androidId = 'your-google-app-id'; static final shareMessage = 'Text-you-want-to-display-when-sharing-the-app: '; static final stripeCountry = 'Your-Stripe-Country-Code'; //example UK static final stripeShopName = 'Your-Stripe-Shop-Name'; //example: V1 Garage
/// App Introduction (AKA Onboarding) Screens. /// Please add a [title], [body] & [image] /// [is_asset] is for image if image coming from network or local. static List
flutter_application_id: android: id: "your-android-app-id" name: "your-android-app-display-name" ios: id: "your-ios-app-id" name: "your-ios-app-display-name"
String get baseURL => 'https://Your-Domain_Name-Here/api/';
flutter pub run flutter_launcher_icons:main flutter pub run flutter_application_id:main -f pubspec.yaml
This guide covers how to run and debug Flutter apps on iOS simulators and devices using Flutter Framework. iOS apps can only be developed on macOS with Xcode installed.
There are two workflows for running Flutter apps on iOS:
The Xcode approach is generally more stable, but the Flutter CLI approach offers live-reload functionality.
Xcode is the IDE for creating native iOS apps. It includes the iOS SDK and Xcode command-line tools. Xcode can be downloaded for free with an Apple account or it can be installed through the App Store.
Once Xcode is installed, make sure the command-line tools are selected for use:
$ xcode-select --install
All iOS apps must be code signed, even for development. Luckily, Xcode makes this easy with automatic code signing. The only prerequisite is an Apple ID.
Open Xcode and navigate to Xcode » Preferences » Accounts. Add an Apple ID if none are listed. Once logged in, a Personal Team will appear in the team list of the Apple ID.
The iOS simulator emulates iOS devices on Macs. The following documentation is a quick way to get the iOS simulator set up. For more information, see Apple's documentation.
Open Xcode and navigate to Window » Devices and Simulators. Create an iPhone 11 simulator if one does not already exist.
We assume you to have some basic knowlege of Mobile programing or Web to get this up and running. How ever we made every attempt to document all steps to get you going. Please note that this app was built using Flutter and requires additional knowledge of using the Flutter Dev environment.
If you need more detailed Step-By-Step guide, please click here Flutter Setup
This guide covers how to run and debug Flutter apps on Android emulators and devices using the Flutter Dev Environment. Android apps can be developed on Windows, macOS, and Linux.
Android Studio> is the IDE for creating native Android apps. It includes the Android SDK, which will need to be configured for use in the command line.
Android Studio is also used to create Android virtual devices, which are required for the Android emulator. Flutter apps can also be launched to a device.
Download Android Studio from the Android website. More detailed installation instructions can be found in the User Guide.
Once installed, open Android Studio. The IDE should detect that the Android SDK needs to be installed. In the SDK Components Setup screen, finish installing the SDK. Keep note of the Android SDK Location.
By default, the latest stable SDK Platform is installed, which includes a collection of packages required to target that version of Android.
To install system images and other minor SDK platform packages, you may need to ensure Show Package Details is checked at the bottom of the SDK Manager.
For future reference, the Android SDK can be managed with Android Studio in the Configure » SDK Manager menu of the Android Studio welcome screen or Tools » SDK Manager inside Android projects.
The Android SDK ships with useful command-line tools. Before they can be used, some environment variables must be set. The following instructions are for macOS and Linux. For Windows, check the documentation on setting and persisting environment variables in terminal sessions.
In ~/.bashrc, ~/.bash_profile, or similar shell startup scripts, make the following modifications:
$ export ANDROID_SDK_ROOT=$HOME/Library/Android/sdk
# avdmanager, sdkmanager $ export PATH=$PATH:$ANDROID_SDK_ROOT/tools/bin # adb, logcat $ export PATH=$PATH:$ANDROID_SDK_ROOT/platform-tools # emulator $ export PATH=$PATH:$ANDROID_SDK_ROOT/emulator
Android Virtual Devices (AVDs) are blueprints that the Android emulator uses to run the Android OS. The following documentation is a quick way to get the Android emulator set up. For more detailed instructions and information, see the Android documentation.
AVDs are managed with the AVD Manager. In the Android Studio welcome screen, click Configure » AVD Manager. The AVD Manager can also be opened inside Android projects in the Tools » AVD Manager menu.
Click Create Virtual Device and select a suitable device definition. If unsure, choose Pixel 2. Then, select a suitable system image. If unsure, choose Pie (API 28) with Google Play services. See Android version history for information on Android versions.
Once the AVD is created, launch the AVD into the Android emulator. Keeping the emulator running is the best way to ensure detection while developing Flutter apps for Android.
Actual Android hardware can also be used for Flutter app development. But first, the device must be set up for development. The following documentation is a quick way to set up Android devices for development. For more detailed instructions and information, see the Android documentation.
Verify the connection works by connecting the device to the computer with a USB cable and using the following command:
$ adb devices
The device should be listed. See the full adb documentation for troubleshooting and detailed information.
We assume you to have some basic knowlege of Mobile programing or Web to get this up and running. How ever we made every attempt to document all steps to get you going. Please note that this app was built using Flutter and requires additional knowledge of using the Flutter Dev environment.
If you need more detailed Step-By-Step guide, please click here Flutter Setup
keytool -genkey -v -keystore ~/upload-keystore.jks -keyalg RSA -keysize 2048 -validity 10000 -alias uploadOn Windows, use the following command:
keytool -genkey -v -keystore c:\Users\USER_NAME\upload-keystore.jks -storetype JKS - keyalg RSA -keysize 2048 -validity 10000 -alias uploadReference the keystore from the app
storePassword= password from previous step keyPassword= password from previous step keyAlias= upload storeFile= location of the key store file, such as /Users/On Windows, use the following command:/uploadkeystore.jks
cd [project] flutter build appbundle
Please remember you have purchased a very affordable Mobile App with backend and you have not paid for a full-time web design agency. Occasionally we will help with small tweaks, but these requests will be put on a lower priority due to their nature. Support is also 100% optional and we provide it for your connivence, so please be patient, polite and respectful.
Please visit our profile page or ask question @v1technologies
Support for my items includes:These is the primary Flutter project source code for the mobile app.
1. lib > commons > constants.dart file has all the settings that you need to change
2. pubspec.yml file in the root has the settings that you need to change.
Theis the the folde which has all teh admin backen codes and the APIs.
The .env file is where you need to change all your settings
Full OFFLINE documentation is also included.
As with any other development project, it is likely that you may find errors or compatibility issues based on various factors like version of flutter, version of xcode, third party plugin updates, version of android studio, other compatibility issues.
Most of these issues can be resolved by simple google search because the components we have used are very generic.
We have listed below some issues that have been reported and resolved
Yes, the product is designed to work with Shared Hosting too.
The way to do this is to copy the source codes to the public_html folder. Then create a database and import the database and connect it to the files using the steps above.
Follow the steps above to make any changes and edits in the environments file. Thats you done!
We have been informed that this is usually because the "GoogleService-Info.plist" is required in some instances to run the ios app.
This can be resolved by creating the ios app and then importing this file from Google Firebase into the following path
platform > ios > ProjectName > Resources
The above documentation is based on nginx, and as you may be aware, ".htaccess" does not work very well with nginx.
You may need to tweak the location / { parameter in your block configuration file as appropriate based on your server settings.
Dont forget to reload the nginx after making the changes.
On shared hosting (cpanel hosting): If you are able to open the home page but not able to open the inner pages, this is most commonly an issue with your .htaccess file in your root folder. Please try the RewriteBase / in your .htaccess file located in the main root folder. See example below:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
if you are using any DNS management service like "Cloudflare", you may not see the changes because of the cache issues.
You may need to Purge Cache from your Cloudflare dashboard for your domain.
Remember to purge everything before you refresh the page to see the changes.
The app is designed to load settings and products data in real-time from the server. This real time data loading can be disabled
You may wish to Disable Real Time Data Load from your apps home screen.
This will make the "Please Wait Loader" disappear and will not appear everytime.
That is a good news actually :)
Data load times depend on how many users are using the app at the same time and what kind of server your app is hosted on.
Our app is hosted on a demo server and there are many users testing the demo app at any given time, hence the slight delay.
Please note Shared Server Hosting is generally slower than dedicated servers.
To add a subcategory, please add a category first, then click on the category and you will see an option of adding a sub-category on the top green button
You can find the version history (changelog.txt) file in the main folder or you can check changelog on theme sale page.
Once again, thank you so much for purchasing this theme. As I said at the beginning, I'd be glad to help you if you have any questions relating to this theme. No guarantees, but I'll do my best to assist. If you have a more general question relating to the themes on codecanyon, you might consider visiting the forums and asking your question in the "Item Discussion" section.
----------------------------------------------------------------------------------------- Version 1.0 - 14 Oct 2021 ----------------------------------------------------------------------------------------- - Stripe Payment Capability Added - Sub-Category System Added. Now you can add subcategories too. - Added CMS Option - Backend API Performance tweaks
Code released under the Single License use. Violation or Infringement of the licence and copyright may lead to disputes. For multiple uses, please buy additional copies of the software.
For more information about copyright and license check V1 Technologies.