Coursemat

Coursemat - Multi-tenant Course Website (SAAS)

Updated on: 25th November, 2023

Created on: 3rd August, 2022

By: KreativDev


Support:
Please visit this page https://kreativdev.freshdesk.com & click on 'New Support Ticket' to create a support ticket.
You can also login & then create a 'New Support Ticket'.
We will respond to your ticket once we are available for support.


Feature Suggestions:
If you have any Feature Suggestions, then please feel free to mail us at kreativdev.envato@gmail.com. We will be very happy to note your feature

About

“Coursemat” is a Course Website SAAS

You can use Coursemat to build a multi-tenant course website within minutes.
The main website frontend is Multi-lingual & also RTL supported
You can create unlimited monthly / yearly / lifetime packages, control features for that packages. You can make a package Free, Trial, Premium or only free or only trial or only premium. You can set trial days for trial packages.

Users can purchase this packages & have a user dashboard to create Multilingual course website, unlimited vCards for them. User's course websites, vCards are also RTL supported. They will also have other cool features like - Payment Gateways, Lesson Content Builder, Enrolment Report, Coupon , Advanced QR Builder, Drag & Drop Menu Builder, Popup Builder etc.... Users can also show their course website, vCards in their custom domain / subdomain ({username}.your_domain_name) / path based URL (your_domain_name/{username})

Coursemat provides 10 automated payment gateways & unlimited offline gateways to collect membership payment - Paypal, Stripe, Mollie, Razorpay, PayTm, Instamojo, Flutterwave, Paystack, Mercado Pago, Authorize.net

Admin can also use some more cool features like - Drag & Drop Menu Builder, Popup Banner Builder etc... for main website

Installation

This item is built with Laravel Framework (Version - 9.39.0)

Server Requirements:

  • PHP >= 8.0.2
  • BCMath PHP Extension
  • Ctype PHP Extension
  • Fileinfo PHP Extension
  • JSON PHP Extension
  • Mbstring PHP Extension
  • OpenSSL PHP Extension
  • PDO PHP Extension
  • Tokenizer PHP Extension
  • XML PHP Extension
  • GMP PHP Extension
  • EXIF PHP Extension
  • Imagick PHP Extension

Installation Steps:


  • Step 1 (Collect Installable File):

  • After you purchase Coursemat, you will get a zip file.
    After Extracting the zip file you will get an installable.zip file.

  • Step 2 (Upload Installable File):

  • Upload installable.zip in your server & extract it.

    Once extraction is completed , delete the installable.zip file from server.
    • If you upload it in public_html folder, then visit your_domain_name.com in browser.
    • If you upload it in a folder in public_html folder, then visit your_domain_name.com/folder_name in browser.
    • If you upload it in your created subdomain folder, then visit subdomain.your_domain_name.com in browser.
    • If you upload it in a folder in your created subdomain folder, then visit subdomain.your_domain_name.com/folder_name in browser.

  • Step 3 (Welcome Page):



  • After you enter your website URL in your browser you will see a welcome page of Coursemat Installer. Then click on Check Requirements Button.

  • Step 4 (Server Requirements):



  • Next, you will be shown a list of extensions required to run this software. If all the extensions have green check icon, then click on Check Permissions button. If any extension has red cross icon, then you need to enable / install the extension in your server first. You might need to contact hosting support for that.

  • Step 5 (Folder Permissions):



  • In this step, you will be shown a list of folder locations & their required permissions. If all the folder has green check icon, then click on Verify License button. If any folder has red exclamation icon (like the above image), then you need to change the permission of the folder first.
    Let us show you how to change folder permission of 'core/storage/framework/' as an example
    • First, navigate to core > storage folder in your server
    • Right click on the framework folder & choose Change Permissions from the dropdown
    • Then, you will be shown a popup, change the permission to 775 in the popup
    • Thats it, you have changed the permission to 775 for 'core/storage/framework/'. Now repeat the same procedures for the other folders of the list shown in Permissions Step in Coursemat Installation Wizard
    • Then, go back to installation wizard & refresh the page.You will see all the folders are checked with green icon


  • Step 6 (License Verifications):



  • In this step, you have to put your primary (which you use all the time) email address, Envato Username & Item purchase code. Now click on Verify button.
    How to get item purchase code: Click here to see a short guide
    NB: You must turn on your internet connection for this step if is off.

  • Step 7 (Environment & Database Setup):



  • In this step, you have to give some of your environment & Database info.
    • App Name: You app name
    • App Debug:
      True - If you want to see the error message if any error occurs in the website & False - if you dont want to show the error mesage. I would recommend you to keep it false, as database credentials will also be shown if you keep it true
    • App URL: Enter your website URL here.
    • Website Host: This will automatically be detected & prefilled by the installer. But if the website host is detected wrong by installer, then please correct it. If the website host is incorrect , then you will see 404 Page thoughout the website after installation.
      How to get website host:
      • if your website URL is https://example.com/ , then host will be emaple.com
      • if your website URL is https://subdomain.example.com/ , then host will be subdomain.example.com
      How to change website host after installation (skip this step while installing for the first time):
      • Go to 'core/.env' file
      • search for WEBSITE_HOST & change the red marked part (shown in screenshot)
      • Screenshot:
    • Then put all your database information - Database Host, Database Name, Database Username, Database Password
    Now, click on Install button.

  • Step 8 (Installation Success):



  • In this step, you will be shown an installation success message. Then click on Click here to exit button at the very bottom of this page & You will be redirected to the installed website.
  • Step 9 (Delete Installer Folder):



  • Now you can delete the installer folder from the root folder of the project

Update From 1.2 to 2.0:

Read Before Proceed:

  • You must be at Coursemat version - 1.2 to use this updater
  • Please keep backup of your version - 1.2 project files & database sql file of previous version
  • If you didn't keep a backup, then we won't be able to take the responsibility for loosing data
  • All your customized code will be lost, as it is impossible for us to track what has been customized on your end

Video Guide:

Cron Job:

Cron Job is needed to send mails to customers when their subscription / membership is about to expire / expired.
Please follow these below steps to add the cron job

1. Login to your hosting & go to 'Cron Jobs' menu
2. Go to 'Add New Cron Job' section
3. Select 'Once Per Day(0 0 * * *)' option from the dropdown of 'Common Settings' [Follow red marked part of the above image]
4. Add
wget {your_website_url}/subcheck
- this command in 'Command' input field [Follow red marked part of the above image]. {your_website_url} will be replace with your website url .
5. Now click on 'Add New Cron Job' to add your cron job.

Admin Login Details:

You can manage each and everything of this system from this Admin panel such as Mail settings, Contents, Pages, Packages, Payment Logs, Payment Gateways, Roles / Permissions, Registered Users, Website Color etc...
Admin URL: your_website_url/admin
Username: admin
Password: admin

Admin Profile:

Admin can change username & some details from here (screenshot):

Admin Password:

Admin can also change password from here (screenshot):

Automatic Subdomain Setup:


Video Guide:

Please watch this video fully. Please do not skip any part of the video or don't come to an conclusion before ending the video.
Video Link: https://www.youtube.com/watch?v=bPEumPFEZNQ&t=2s

Video Note:
  • My native language is not English.
  • Sorry for my throat problem.
  • All I tried to clear the concept to you guys.

Written Guide:

  • Let us first understand What is Automatic Subdomain?. Automatic subdoamins means users will be able to show their portfolio website on the subdomain ({username}.your_domain_name) just after registering with a pricing plan (which has Subdomain feature)
  • For automatic subdomain support , you need to add a wildcard subdomain (*.your_domain_name) in hosting so that user gets a subdomain ({username}.your_domain_name) for his portfolio website just after registering with a subscription package which has subdomain support.
  • To create a wildcard subdomain, login to your hosting account. Search for subdomains in your hosting (follow screenshot). Click on Subdomains option
    Screenshot:
  • You will see a form to create subdomain.
    • Enter * in Subdomain input field (follow below screenshot)
    • Choose your domain (for which you are creating subdomain) from Domain dropdown (follow screenshot)
    • Enter the folder location where you have put the installable project files (follow below screenshot)
    • Now, click on Create button

    • Screenshot:
  • Now you will have to wait for sometimes till the DNS propagation is completed. It is said that DNS propagation takes upto 72 hours but mostly it is completed within few hours.
  • For testing, Create a trial package with Subdomain feature & register a user with that package.
  • Lets assume you have registered an user with username: User1, then the subdomain for this user will be user1.your_domain_name
  • For testing, clear the cache in the browser & enter the subdomain user1.your_domain_name. You may not see the profile page yet due to DNS propagation time. Repeat the process of clearing cache & entering subdomain in browser again & again, until the DNS propagation is completed and the profile page shows up in the subdomain (user1.your_domain_name)
  • From this point, whenever a user registers, he / she will get a subdomain instantly. No more waiting.
  • Now, you will see the the subdomain is loaded on http (http://user1.your_domain_name). It will not support https yet. Problem is, AutoSSL in hosting cannot assign SSL certificate on Wildcard Subdomains, but we need Wildcard Subdomains for automatic subdomain support.
  • There are 2 ways to make the subdomains support https (https://user1.your_domain_name). You can implement any one of them.
    1. Way 1: By adding each subdomain for each registered user (who has purchased package with subdomain feature) explicitly in your hosting [this way is free]
      Steps:
      • After a user registers in your website with a package (which has subdomain feature), you will be able to see the subdomain of that user in Subdomains > All Subdomains or in Subdomains > Pending Subdomains of Admin dashboard (follow below Screenshot)
      • Screenshot:
      • Lets assume, a user with username user1 has registered with a subdomain supported package & got a subdomain user1.your_domain_name
      • Now, go to Subdomains > All Subdomains or Subdomains > Pending Subdomains in Admin dashboard
      • There, You will find user1.your_domain_name with Pending status
      • Copy the subdomain user1.your_domain_name
      • Now, login to your hosting & Search for subdomains (follow below Screenshot). Click on Subdomains option
        Screenshot:
      • There, You will see a form to create subdomain.
        • Enter user1 in Subdomain input field (follow below screenshot)
        • Choose your domain (for which you are creating subdomain) from Domain dropdown (follow screenshot)
        • Enter the folder location where you have put the installable project files (follow below screenshot)
        • Now, click on Create button

        • Screenshot:
      • Now go to Subdomains > All Subdomains or in Subdomains > Pending Subdomains of Admin dashboard & change the status from Pending to Connected of the subdomain user1.your_domain_name. If you want, you can send a mail to the user from there.
      • For testing, clear the cache in the browser & enter the subdomain with https (https://user1.your_domain_name). You may not see the profile page yet. It usually takes few minutes (arround 15 mins) to assign SSL certificate to the added subdomain. Repeat the process of clearing cache & entering the subdomain with https (https://user1.your_domain_name) in browser again & again, until the hosting AutoSSL assigns the SSL certificate to the added subdomain (user1.your_domain_name). Once assigned, the profile page will show up on https://user1.your_domain_name
    2. Way 2: By purchasing a Wildcard SSL & adding the SSL with your Wildcard Subdomain (*.your_domain_name) [this way is not free].
      In this case, you don't need to add subdomain for any user in your hosting. You only need to add the Wildcard SSL with Wildcard Subdomain (*.your_domain_name)
      You can purchase Wildcard SSL from any provider (Namecheap, godaddy etc..)
      After purchase, please contact with your hosting support. They will show you the procedure of connecting Wildcard SSL with your Wildcard Subdomain. The SSL connecting procedure is different for each hosting provider.
    3. ** You can either choose Way 1 (which is free) or Way 2 (which is not free) to support https in the registered user's subdomain

Custom Domain Setup:

Video Guilde

Please watch this video fully. Please do not skip any part of the video or don't come to an conclusion before ending the video.
Video Link: https://www.youtube.com/watch?v=MqOfbqGH1Q4&list=PL9Ta_rdXJRTC3S1taiu_bMm8dUYNyhVc7&index=1&t=3s

Video Note:
  • My native language is not English.
  • All I tried to clear the concept to you guys.

Written Guide

  • If a user wants to load his portfolio website in a custom domain, he will need to purchase a package which has custom domain feature
  • Let's assume, the user has purchased a domain named customer.tattoo & he wants to load his portfolio website under customer.tattoo
  • Once the user purchased the package (which has custom domain feature), he will get a Custom Domain menu in Domains & URLs (follow below Screenshot) in User Dashboard
    Screenshot:
  • There, he will get a option to send request for his custom domain customer.tattoo
  • Before sending the request, the user will have to add CNAME record to his custom domain customer.tatoo from the domain registrar (Namecheap, godaddy etc..) account of customer.tattoo.
    CNAME record is basically needed to point a custom domain to your business domain so that your website can show the portfolio website to the custom domain.
    The user will get the CNAME record data in the table in Domains & URLs > Custom Domains page of User Dashboard (follow below Screenshot).
    Screenshot:

    Different domain registrar (Namecheap, Godaddy etc...) has different interface for adding CNAME record. If the user cannot find the option to add CNAME record in domain registrar's dashboard, then please ask the user to contact the domain registrar's support. The support will help them to find it.
  • After adding CNAME record, it will take some time to complete DNS propagation of the custom domain customer.tattoo. It is said that it takes upto 72 hours to complete DNS propagation. But, generally the propagation is completed much quicker than that (few hours)
    Users can visit this website (https://www.whatsmydns.net/) to check if the DNS propagation of the custom domain customer.tattoo is completed all over the world or not
  • You can update text of this page (Domains & URLs > Custom Domains page of User Dashboard) from Custom Domains > Request Page Texts of Admin Dashboard

    Those updated texts will be shown in Domains & URLs > Custom Domain of User Dashboard
  • Once the DNS propagation is completed, the user can finally send request for the custom domain customer.tattoo
    Screenshot:
  • After that, You can see the requested custom domain customer.tattoo in Custom Domains > All Requests or Custom Domains > Pending Requests in Admin Dashboard
  • Now, you need to add this requested custom domain customer.tattoo as an addon domain in your hosting
    Steps to do that:
    • login to your hosting & search for addon domains
      Screenshot:
    • After clicking on Addon Domains menu, you will see a form to add Addon Domain
      • Enter the user's requested custom domain customer.tattoo in New Domain Name input field (follow below screenshot)
      • After entering New Domain Name, the Subdomain field will be prefilled automatically. You don't need to do anything for this field
      • Enter the folder location where you have put the installable project files (follow below screenshot)
      • Now, click on Create button

      • Screenshot:
    • After that, please don't forget to change the status of customer.tattoo from Pending to Connected in Custom Domains > All Requests or Custom Domains > Pending Requests of Admin Dashboard
    • The DNS propagation of customer.tattoo is completed on your user's location. Thats why he had been able to send request for the custom domain customer.tattoo. But it might be the case, that the DNS propagation is not completed on your location yet. Hence, you might not see anything after visiting the custom domain customer.tattoo yet. But no worries, As DNS propagation has already been completed on the user's end, he will be able to see his portfolio website after visiting customer.tattoo, just after you add customer.tattoo in your hosting & change the status of the custom domain to Connected from Admin Dashboard. You will also be to see the user's portfolio website visiting customer.tattoo, once the DNS propagation for customer.tattoo is completed on your location too
    • If anyday, the user wants to change his current custom domain & request for a new custom domain, he can do that. In that case, he will need to add CNAME record for his new custom domain & send request again for the new custom domain.
      You can see his new request in Custom Domains > All Requests or Custom Domains > Pending Requests of Admin Dashboard
      There, You will need to change the status of his current custom domain customer.tattoo to Removed
      Screenshot:

      Also remove the current custom domain customer.tattoo from your hosting addon domains list

      Then, add the new requested custom domain as addon domain in your hosting (steps are already mentioned above)
      & after that, change the status of the new requested custom domain to Connected from Custom Domains > All Requests or Custom Domains > Pending Requests of Admin Dashboard

Website Color:

Admin can change website's base color from 'Settings > Website Appearance' of Admin Dashboard:

Preloader:

Admin can upload a GIF as preloader from 'Settings > Preloader' of Admin Dashboard

Custom Pages:

Admin can create pages from 'Custom Pages > Create Page' of Admin Dashboard & add them in website menu using Drag & Drop Menu Builder

Email Settings:

Mail From Admin:

Admin can setup SMTP to set a mail from which all the mails will be sent to customers via this website. Admin can setup SMTP details in Settings > Email Settings > Mail From Admin
Some Important Notes regarding SMTP
  • Sometimes SSL encryption has some issues in some server as PHP is very strict now a days to check SSL. In that case, please choose TLS
  • If you choose TLS, then dont forget to change the SMTP Port accordingly (in most cases, it is 587. But on your server it could be different)
  • If you still face issues , then please contact hosting support & show them the SMTP details you are using in Admin Panel's SMTP form. It mostly depends on server so SMTP issue can only be solved by hosting support.

Mail to Admin:

Admin can setup this mail from which will be used to recieve mails from this website. Admin can this mail in Settings > Email Settings > Mail To Admin
Some Important Notes:
  • If you face any issue (like - mail not coming from contact form to the setup mail), then please create a ticket here: https://kreativdev.freshdesk.com/
    We will replace the PHPMailer code with mail()
  • If it still does not work, then you will need to contact hosting support & tell them PHP mail() function not working. They will be able to solve it. Mail mostly depends on server.

Currency Settings:

Admin can set currency in Settings > General Settings
Admin must set the currency rate based on USD

Payment Gateway Settings:

Online Gateways

All the online payment gateway's credentials can be set in Payment Gateways > Online Gateways

Admin can also set the payment gateways in test / live mode

Offline Gateways

Admin can create offline gateways to receive booking payments

Admin can setup instructions & description (optional) which will be shown to customers in checkout page

Admin can also enable / disable attachement status

  • If attachement enabled, then customer will have to upload the image of their transaction during checkout
  • If attachement disabled, then customer the attachement field wont be shown to customers during checkout

AWS Credentials Setup for Tenant:

Language Management:

Admin can create unlimited language & translate the website for that language from Language Management of Admin Panel

After a adding a language, Admin need to click on Edit Keyword button of that language to translate all the keywords of the website to that language

Admin can even change the keywords of English Language too

Announcement Popup:

Coursemat provides 7 types of popups during creating a popup

Admin also active / deactive any popup.

Multiple popups can be shown in website. Popups will be visible accroding to serial number (set by Admin)

Maintenance Mode:

Admin can set the website under Maintenance Mode from Settings > Maintenance Mode

In maintenance mode Admin can always access the Admin Panel

To access the frontend Admin can setup a secret path (avoid using any special characters in it, use plain letter & number combination)

Anyone who knows the secret path can access the website by typing {website_url}/{secret_path} in browser

Admin / Roles & Permissions:

Owner can create roles from Admins Management > Roles & Permissions & can assign permission clicking on manage button of that role

Owner can create a Admin & assign a role to that Admin

Changing Domain:

If you want to run this website in another domain along side your current domain, then you have to purchase this item again & install the product in that new domain with your new purchase code

But, if you want to move your project files from current domain to another new domain, then please contact support (https://kreativdev.freshdesk.com/) with your item purchase code, new domain & old domain. You will also need to change the website host, Click Here to see how to change website host

Developer Support

If you need support
Please visit this page https://kreativdev.freshdesk.com & click on 'New Support Ticket' to create a support ticket.
You can also login & then create a 'New Support Ticket'.
We will respond to your ticket once we are available for support.

KreativDev