Documentation

Shozystock - Premium Stock Photo, Video, Audio, Vector and Fonts Marketplace

Created: 12, January 2024 by Miguel Vasquez

Last update 21, April 2025

Shozystock is a platform for high-quality premium files, whether photos, videos, audio, vectors or fonts, for multi-vendors or individuals, where they can sell their resources via subscription or direct purchase.

Requirements:

  • PHP >= 8.2
  • MySQL 5.7 or Mariadb 10.3.17
  • Fileinfo PHP Extension
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Mbstring PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension
  • Ctype PHP Extension
  • JSON PHP Extension
  • BCMath PHP Extension
  • cURL
  • GD Library
  • allow_url_fopen (PHP.INI) is ON

Setting MySQL

  • 1.) Create a database
  • 2.) Create a user for database
  • 3.) Import the Database
  • Log into your phpMyAdmin and import the shozystock.sql file located in the folder MySQL

Uploading Files

  • Upload all files inside the folder "Script" to the "public_html" or "www" folder on your server. You can compress the files or use FTP.

Installation

  • After you have uploaded all files, go to https://yousite.com/install
  • This screen will appear, all the boxes must be green to proceed with the installation.
  • On the next screen the file and folder permissions will appear, if all of them are green you will be able to continue.
  • Next, configure your database, enter the name of your database, username, host and password.
  • Next, create the Admin account, enter your name, email and password.
  • If everything goes well, a success notice will appear, the installation is now complete.
  • Create Cron Job
  • Click on Cron Jobs
  • Click on Common Settings and select Once Per Minute
  • /usr/local/bin/ea-php81 /home/username/public_html/artisan schedule:run >> /dev/null 2>&1
  • In the image above change ea-php81 for your PHP version, username for yours, and put the path where your project is located, in my case it is in public_html, but if it is in another directory you should put public_html/yoursite/ like this
  • Click on Add New Cron Job and you're done!
  • reCAPTCHA
  • Go to https://yousite.com/panel/admin/google
  • Get your API keys here https://www.google.com/recaptcha/admin/create
  • Stripe Webhook
  • Go to the Developers section of the Stripe dashboard and click on Webhooks. Click on Add a new endpoint
  • 1) Your webhook url must end in stripe/webhook
  • 2) Click on Signing secret to reveal the Stripe Webhook Secret that you must place in Dashboard > Payment Settings > Stripe
  • 3) The events you should add to your webhook
  • API Version 2023-10-16
  • Stripe Connect
  • Set the countries or the country you want to send direct payments to your members at https://dashboard.stripe.com/settings/connect/express
  • PayPal
  • Login into your PayPal account.
  • Go to the My apps & credentials section, click on Live button and then on the Create app button.
  • Copy the Client ID and Secret in Panel Admin > Payments Settings > PayPal.
  • Go to the My apps & credentials section, click on Live button and then select your app.
  • Scroll down to LIVE WEBHOOKS and click on the Add webhook button.
  • On the Webhook URL field paste your webhook URL https://yourwebsite.com/webhook/paypal
  • Under the Events types select All events and save your changes.
  • Go to the My apps & credentials section, click on Live button and then select your app.
  • Copy the Webhook ID in Panel Admin > Payments Settings > PayPal
  • Paystack
  • Get yourself a free Paystack account
  • Get your API key from here https://dashboard.paystack.com/#/settings/developer
  • Copy the API keys to Panel Admin > Payment Settings > Paystack
  • Don't put anything in Callback URL
  • In Webhook URL put https://yourwebsite.com/webhook/paystack
  • Coinpayments
  • Get yourself a free Coinpayments account
  • Get your Merchant ID from here https://www.coinpayments.net/acct-settings
  • Get your IPN Secret Key from Account Settings -> Merchant Settings -> IPN
  • Copy the API keys to Panel Admin > Payment Settings > Coinpayments
  • Flutterwave
  • Get yourself a free Flutterwave account
  • Get your Public Key and Secret Key from here https://dashboard.flutterwave.com/dashboard/settings/apis
  • Copy the API keys to Panel Admin > Payment Settings > Flutterwave
  • Mollie
  • Get yourself a free Mollie account.

  • Get your API key from here https://www.mollie.com/dashboard/developers/api-keys.
  • To activate the test mode is your dashboard mollie
  • Enable payment methods: click on settings and then Payment methods
  • Then enable what you want, some payment methods work only with certain currencies, USD only accepts Credit Card and PayPal, EUR is accepted by all payment methods. Here you can see more details https://docs.mollie.com/payments/multicurrency
  • Copy the API keys to Panel Admin > Payment Settings > Mollie
  • Razorpay
  • Get yourself a free Razorpay account
  • Get the API Keys from here https://dashboard.razorpay.com/#/app/keys
  • Copy the API keys to Panel Admin > Payment Settings > Razorpay
  • Coinbase
  • Get yourself Coinbase Commerce account in https://commerce.coinbase.com/signin
  • Go to https://commerce.coinbase.com/dashboard/settings
  • Search for API keys
  • Click on Create an API key, copy the key and add it into the Panel Admin into Panel Admin > Payment Settings > Coinbase
  • Search for Webhook subscriptions
  • Click on Add an endpoint and add following url https://yourwebsite.com/webhook/coinbase
  • Click on Show shared secret and add that secret into Panel Admin > Payment Settings > Coinbase
  • Instamojo
  • Get yourself a free Instamojo account.

  • Get your API key from here https://instamojo.com/integrations.
  • Copy the API keys to Panel Admin > Payment Settings > Instamojo
  • Mercadopago
  • Get yourself a free Mercado Pago account
  • Go to your integrations
  • Click on Create Application
  • Choose a name for your app and follow the steps below:
    • What type of payment solution are you integrating? choose Online Payments
    • Are you using an e-commerce platform? choose No
    • What product are you integrating? choose CheckoutPro
    • Integration model Leave blank
  • Get your Access Token from Production credentials
  • Copy the Access Token to Panel Admin > Payment Settings > Mercadopago

Storage

  • Go to https://yousite.com/panel/admin/storage
    • avatar
    • cover
    • uploads
    • avatar
    • cover

Push Notifications (OneSignal)

  • Get yourself account Onesignal
  • Step 1:
  • Step 2:
  • Step 3:
  • Step 4:
  • Go to Panel Admin > Push Notifications enable and set the OneSignal App ID and OneSignal Rest API Key

Coconut® Settings

OpenAI

PhotoTag

Imagga

Algolia

  • Sign Up or Log In
    - Visit https://www.algolia.com.
    - Click “Start free” to create an account or “Log in” if you already have one.
  • Access Your Application Dashboard
    - After logging in, you'll be directed to your Dashboard.
    - If you have multiple applications, select the one you want to use.
  • Navigate to the API Keys Section
    - In the left-hand sidebar, click on “API Keys”.
    - Here, you'll find your application's API keys, including:
    • Application ID
    • Write API Key (keep this confidential)
  • Copy and Store Your Credentials
    - Click the copy icon next to each credential you need.
    - Store these credentials securely; you'll use them to connect your application to Algolia.
  • Enter the API key and configure in Panel Admin > Advanced search

Meilisearch

  • Launch or Access Your Meilisearch Instance
    - Meilisearch Cloud: Log in to your account at cloud.meilisearch.com.
    - Self-Hosted: Start Meilisearch with a master key:
    ./meilisearch --master-key 'your_master_key'
    Ensure your master key is at least 16 characters long.
  • Navigate to the API Keys Section
    - In Meilisearch Cloud, go to your project dashboard and click on “API Keys”.
    - In a self-hosted setup, use the following command to retrieve existing API keys:
    curl -X GET 'http://localhost:7700/keys' \
    -H 'Authorization: Bearer your_master_key'
    
  • Identify Your Default API Keys
    Meilisearch automatically generates two default API keys:
    • Default Admin API Key: Use this key for administrative tasks. Keep it confidential and do not expose it publicly.
  • Copy and Store Your Credentials
    - Click the copy icon next to each key in the dashboard, or copy them from the command-line output.
    - Store these keys securely for use in your application.
  • Enter the API key and configure in Panel Admin > Advanced search

Websockets

  • Go to Pusher dashboard and go to the Channels category.
  • Click on Create app Select a name and cluster region at your preference.
  • Next up, you should be redirected to your new app page. If not, head over Apps and select your app.
  • Enter the API key and cluster region in Panel Admin > General Settings > Websockets

Customize

  • Language files
  • To change the script language go to: lang / en / Edit the text strings of all the files in are in that folder.
  • /*
    |--------------------------------------------------------------------------
    | Admin Language Lines
    |--------------------------------------------------------------------------
    |
    */
    
    'admin'      => 'Panel Admin',
    'role_admin' => 'Admin',
    'dashboard'  => 'Dashboard',

How to add a new language

  • Duplicate the folder lang / en
  • Rename to your language for example es
  • Translate the strings
  • Duplicate the file public/ js / timeago / jqueryTimeago_en.js and rename ie: public/ js / timeago / jqueryTimeago_es.js
  • Translate the strings the new file
  • Go panel admin https://yourwebsite.com/panel/admin/languages/create and add you new lenguage
  • Translate Categories

  • Create a file called categories.php in the folder of the language to be translated, for example lang / es
  • <?php
    
    return array(
    
    	/*
    	|--------------------------------------------------------------------------
    	| Categories Language Lines
    	|--------------------------------------------------------------------------
    	|
    	*/
    	"animals" => "Animales",
    	"architecture" => "Arquitectura",
    	"backgrounds" => "Fondos / Texturas",
    );
  • The key identifier will be the Slug / URL of the category
  • Translate Subcategories

  • Create a file called subcategories.php in the folder of the language to be translated, for example lang / es
  • <?php
    
    return array(
    
    	/*
    	|--------------------------------------------------------------------------
    	| Subcategories Language Lines
    	|--------------------------------------------------------------------------
    	|
    	*/
    	"bears" => "Osos",
    	"butterfly" => "Mariposas",
    	"cats" => "Gatos",
    	"dogs" => "Perros",
    );
  • The key identifier will be the Slug / URL of the subcategory
  • Translate Pages

  • Just create a page by selecting the new language, remember that you must put the same Slug / URL

  • Sitemap

  • https://yoursite.com/sitemaps.xml
  • Sitemap Images

  • https://yoursite.com/sitemaps-media.xml
  • Troubleshooting

  • I can't turn off maintenance mode
  • Go to storage / framework and delete the file named down and file maintenance.php go back to Dashboard > Maintenance mode put "off" and then "on" again, whenever you want to have your site in mode maintenance.
  • Error creating an account
  • Make sure you have correctly configured the email in the admin panel (Dashboard > Email settings)
  • Error 404 in the installer
  • Check that your .htaccess file has not been corrupted when uploading to your server.
  • Error 500 in the installer or on the home page
  • Check that your .env file has not been corrupted when uploading to your server. It must have a dot before the name, and you must have at least PHP 8.2
  • Twitter Login Error
  • The app must be created using version 1.0

  • Make sure these folders have 0755 permissions

    Files
  • .env
  • Folders
  • public / avatar
  • public / temp
  • public / uploads
  • public / avatar
  • public / cover
  • public / img-category

  • Basic PHP configuration

  • max_execution_time minimum 6000
  • memory_limit set to 512M
  • post_max_size set the maximum upload value you want
  • upload_max_filesize must be the same maximum value of post_max_size

  • How to update

  • Go to the Upgrades folder, select the version you want, click on the README.html file and follow the steps.

  • Sources and Credits

    • Laravel - http://laravel.com/
    • jQuery - http://jquery.com/
    • Bootstrap - http://getbootstrap.com/
    • Font Awesome - http://fortawesome.github.io/Font-Awesome/
    • jquery Form // malsup.com/jquery/form/
    • jqueryTimeago.js // http://timeago.yarp.com/
    • Readmore - http://jedfoster.com/Readmore.js/
    • Images - unsplash - http://unsplash.com/ -- splitshire http://www.splitshire.com/
    • Fonts - https://www.google.com/fonts
    • http://www.tinymce.com/
    • https://ckeditor.com/
    • https://www.chartjs.org

    Any problem or doubt send me an email to support@miguelvasquez.net
    Do not forget to visit miguelvasquez.net


    Thank you for purchasing my script 😉