Education & Learning / LMS Scripts / Meridian
M Meridian
Home Documentation Setup Guide Get Meridian

Setup Guide

Zero to first login in under 10 minutes

Follow these steps in order. Each one builds on the last — by the end you'll have Meridian running locally with demo data, ready to explore as Admin, Instructor, and Student.

Looking for the technical reference instead? See the Documentation.

0

Before you begin

Make sure your machine or server has these installed. Everything else Meridian needs comes down with composer install.

RequirementVersionRequired?
PHP8.2 or higherYes
Composer2.xYes
MySQL8.0+ (or MariaDB 10.6+)Yes
Node.js18+Only for a compiled Tailwind build
RedisAny recent versionOnly if you want queues/cache off the database driver
1

Get the code

Unzip the project anywhere on your machine or server, then move into the folder:

unzip lms-laravel12.zip
cd lms
2

Install dependencies

Composer downloads Laravel and every package Meridian depends on (payment SDKs, PDF generation, roles/permissions, and more):

composer install
This step needs an internet connection. If you're behind a restrictive firewall, make sure packagist.org and github.com are reachable.
3

Configure the environment

.env.example is already copied to .env. Generate the application key, then open .env and fill in your database credentials:

php artisan key:generate
VariableWhat it's for
APP_URLFull base URL of your install (used in payment redirect URLs, emails)
DB_DATABASE / DB_USERNAME / DB_PASSWORDMySQL connection
MAIL_*Outgoing email (registration, notifications)
STRIPE_*, RAZORPAY_*, PAYPAL_*...Optional — you can also paste these directly into Admin → Settings later
You don't have to fill in every gateway key now — every payment/SMS/WhatsApp/AI credential can also be entered later from the Admin Panel, stored encrypted in the database.
4

Create the database

Create an empty MySQL database matching whatever you put in DB_DATABASE:

mysql -u root -p -e "CREATE DATABASE lms CHARACTER SET utf8mb4;"
5

Run migrations & seed demo data

This builds every table (courses, exams, live classes, gateway settings, and more) and seeds roles, 9 demo accounts, curricula, categories, and 8 fully-built sample courses with thumbnails, lessons, enrollments, and reviews:

php artisan migrate --seed
You should not run this against a production database that already has real orders in it, running migrate:fresh would wipe it.
6

Link storage

Course uploads go straight to public/uploads, but this step links the small amount Laravel itself still keeps in storage/app/public (e.g. temp files):

php artisan storage:link
7

Start the server

php artisan serve

Visit http://127.0.0.1:8000 — you should see a populated course catalog with real thumbnails, not an empty homepage. If you see a blank page or an error, jump to Troubleshooting below.

8

Log in & configure your integrations

Log in at /login with any seeded account, then visit each settings page as Admin and turn on what you need — nothing is required to explore the platform, but you'll want these before taking real payments:

RoleEmailPassword
Adminadmin@lms.testPassword@123
Instructor (4 accounts)instructor@lms.test and 3 morePassword@123
Student (4 accounts)student@lms.test and 3 morePassword@123
  1. /admin/settings/payment-gateways — enable Stripe/Razorpay/etc. and paste live credentials
  2. /admin/settings/sms-gateways — configure a provider and click "Set as Active"
  3. /admin/settings/whatsapp — enable and choose which events send a WhatsApp message
  4. /admin/settings/ai — flip the master switch, then enable individual AI features
Change every seeded password before exposing this installation to the internet.
9

Going to production

  • Set APP_ENV=production and APP_DEBUG=false
  • Serve over HTTPS — Meridian force-redirects to HTTPS automatically when APP_ENV=production
  • Point QUEUE_CONNECTION at a real worker (php artisan queue:work) if you enable async notifications
  • Run the scheduler via cron so live-class reminders fire: * * * * * php artisan schedule:run
  • Switch every payment gateway from sandbox to live mode in Admin once you've tested checkout end to end
  • Replace the seeded demo accounts and Picsum/UI-Avatars placeholder images with your real content
  • Back up your database before every deploy, especially once real orders and certificates are in play

Troubleshooting

SymptomLikely causeFix
Blank white pageAPP_DEBUG is false and an error is being swallowedTemporarily set APP_DEBUG=true and check storage/logs/laravel.log
SQLSTATE[HY000] [1049]Database doesn't exist yetCreate it (Step 4) and confirm DB_DATABASE matches
Uploaded images/videos 404public/uploads isn't writablechmod -R 775 public/uploads storage
Composer install fails on a packagePHP extension missing (e.g. ext-gd, ext-zip)Install the missing extension shown in the error and re-run
Payment gateway button does nothingGateway not yet enabled/credentialed in AdminCheck /admin/settings/payment-gateways
Live class reminders never arriveCron scheduler isn't runningAdd the cron entry from Step 9
After login, redirected back to "/"Panel routes missing the web middleware groupConfirm bootstrap/app.php wraps admin/instructor/student route files in Route::middleware('web')->group(...)

Want the full technical reference?

Architecture, API endpoints, and every integration explained.

Read the Documentation →