Setup Guide
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.
Make sure your machine or server has these installed. Everything else Meridian needs
comes down with composer install.
| Requirement | Version | Required? |
|---|---|---|
| PHP | 8.2 or higher | Yes |
| Composer | 2.x | Yes |
| MySQL | 8.0+ (or MariaDB 10.6+) | Yes |
| Node.js | 18+ | Only for a compiled Tailwind build |
| Redis | Any recent version | Only if you want queues/cache off the database driver |
Unzip the project anywhere on your machine or server, then move into the folder:
unzip lms-laravel12.zip
cd lms
Composer downloads Laravel and every package Meridian depends on (payment SDKs, PDF generation, roles/permissions, and more):
composer install
packagist.org and github.com are reachable..env.example is already copied to .env. Generate the application key,
then open .env and fill in your database credentials:
php artisan key:generate
| Variable | What it's for |
|---|---|
APP_URL | Full base URL of your install (used in payment redirect URLs, emails) |
DB_DATABASE / DB_USERNAME / DB_PASSWORD | MySQL connection |
MAIL_* | Outgoing email (registration, notifications) |
STRIPE_*, RAZORPAY_*, PAYPAL_*... | Optional — you can also paste these directly into Admin → Settings later |
Create an empty MySQL database matching whatever you put in DB_DATABASE:
mysql -u root -p -e "CREATE DATABASE lms CHARACTER SET utf8mb4;"
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
migrate:fresh would wipe it.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
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.
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:
| Role | Password | |
|---|---|---|
| Admin | admin@lms.test | Password@123 |
| Instructor (4 accounts) | instructor@lms.test and 3 more | Password@123 |
| Student (4 accounts) | student@lms.test and 3 more | Password@123 |
/admin/settings/payment-gateways — enable Stripe/Razorpay/etc. and paste live credentials/admin/settings/sms-gateways — configure a provider and click "Set as Active"/admin/settings/whatsapp — enable and choose which events send a WhatsApp message/admin/settings/ai — flip the master switch, then enable individual AI featuresAPP_ENV=production and APP_DEBUG=falseAPP_ENV=productionQUEUE_CONNECTION at a real worker (php artisan queue:work) if you enable async notifications* * * * * php artisan schedule:run| Symptom | Likely cause | Fix |
|---|---|---|
| Blank white page | APP_DEBUG is false and an error is being swallowed | Temporarily set APP_DEBUG=true and check storage/logs/laravel.log |
SQLSTATE[HY000] [1049] | Database doesn't exist yet | Create it (Step 4) and confirm DB_DATABASE matches |
| Uploaded images/videos 404 | public/uploads isn't writable | chmod -R 775 public/uploads storage |
| Composer install fails on a package | PHP extension missing (e.g. ext-gd, ext-zip) | Install the missing extension shown in the error and re-run |
| Payment gateway button does nothing | Gateway not yet enabled/credentialed in Admin | Check /admin/settings/payment-gateways |
| Live class reminders never arrive | Cron scheduler isn't running | Add the cron entry from Step 9 |
| After login, redirected back to "/" | Panel routes missing the web middleware group | Confirm 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.