Admin panel
Users, refunds, categories (Career, Family, Finance, DIY, Intellect, Pets, Community, Spiritual, Travel), featured courses, failed mail, S3 usage. Admin does not edit Julie’s lesson script unless asked.
Laravel adminOur Sistahood (oursistahood.com.au) teaches Indigenous women through video modules — Job Ready, How to Start a Business, and eight life-area categories. The build is a production LMS: PHP / Laravel, not a page of YouTube links and a Facebook group.
Was ausgeliefert wurde: student campus and instructor studio on the web, a Laravel admin panel, email + password auth with reset mail, ecommerce checkout for paid courses (free lifetime courses stay free), video learning from cloud storage, and transactional email. Data: MySQL for the live campus, PostgreSQL for completion reports.
Julie Okely builds Job Ready. Maya watches it. Admin sees every payment and every stalled enrolment. Those are three Laravel guards, not one shared password.
Users, refunds, categories (Career, Family, Finance, DIY, Intellect, Pets, Community, Spiritual, Travel), featured courses, failed mail, S3 usage. Admin does not edit Julie’s lesson script unless asked.
Laravel adminCreate course, modules, lessons, quizzes. Upload mp4 to cloud storage. Publish. See who enrolled, who stalled on lesson 2, who passed the quiz. Cannot see another instructor’s payout except their own.
StudioRegister with email + password. Browse catalog. Checkout (or free enrol). Watch video, resume, sit quiz. My learning list is enrolments, not bookmarks.
CampusBefore Laravel, Job Ready (0.32 hours, updated October 2023) lived as a Zoom file and a Word outline. Maya registered interest in a Google Form. Nobody could say whether she finished module two. Paid workshops were bank transfer and a spreadsheet. Password reset was “email Julie.”
orders row so free and paid share one pipeline. Enrolment status: active. Lifetime access flag: true.lesson_progress.seconds = 184. Resume on the kitchen laptop that night at 184s, not 0.This is the control tower. Disable a student who shared a password. Refund a $49 workshop. See SES bounces. Feature Job Ready on the home grid. Admin does not rewrite Julie’s quiz.
| Time | Event | Who | Status |
|---|---|---|---|
| 19:11 | Enrol Job Ready (free) | Maya W. | Active |
| 18:40 | Stripe workshop $49 | Tia N. | Paid |
| 17:02 | Password reset mailed | Maya W. | SES |
| 16:11 | Bounce · bad domain | old@mail | Held |
Julie owns Job Ready and How to Start a Business. She uploads the mp4, sets the quiz pass mark, publishes. She sees Maya’s 8/10. She does not see Tia’s Stripe receipt.
| Student | Lesson | Quiz | Enrolment |
|---|---|---|---|
| Maya W. | 1 · 184s | 8/10 | OS-ENR-10482 |
| Tia N. | Complete | 10/10 | Lifetime |
| Sam K. | Not started | — | Stalled 9d |
She logs in with the same email on phone or laptop. Job Ready is on the list because enrolment exists. How to Start a Business is not, until she checks out. Progress is not a cookie.
Yaama, Maya
2 enrolments · email session
Login, enrolment, studio, checkout, video, admin, S3, mail, and reports — not a feature list. Below is how each one looked before, and what Maya actually uses now.
Google Form. Julie emailed a Zoom link. No hash, no reset.
Laravel register, verify, login. 60-minute reset token by mail. Same credentials on phone and laptop.
“She’s in Job Ready” lived in Messenger.
Enrolment OS-ENR-10482: student, course, order, status, lifetime. That row is what opens the player.
A developer dropped an mp4 on the server.
Julie publishes modules, lessons, and quizzes herself. How to Start a Business updates without a ticket.
Bank transfer. Spreadsheet. No receipt.
Stripe or PayPal. Free Job Ready still creates a $0 order so access and mail share one path. Refunds from admin.
YouTube unlisted. Lost place. Ads in the lesson.
Signed S3 URL, HLS when needed, resume at 184s on any device after login.
cPanel and a hope.
Laravel admin: users, orders, categories, coupons, mail log, disable account. Not phpMyAdmin.
mp4 on a 20GB VPS. Disk full on publish day.
AWS S3 (or R2) for video and PDFs. Laravel disk s3. The app server stays thin.
Julie typed “here’s the Zoom” from Gmail.
SES queue: verify, reset, enrolment receipt, “your course is live.” Bounces show in admin.
90% completion was a slide.
MySQL runs the campus. Nightly rollup into PostgreSQL for “who finished Job Ready this month” without locking checkout.
Email + password. Verify via SES. User row in MySQL. No social login required for this product.
$0 community course or Stripe/PayPal. Order + enrolment written in one Laravel transaction.
Queued receipt: course name, enrolment id, “lifetime access” if that flag is set — matching the live site.
Player asks Laravel for a short-lived S3 URL. Progress ticks into MySQL. Postgres report picks it up overnight.
The public catalog on oursistahood.com.au (Job Ready, How to Start a Business, eight categories, lifetime access on mobile and desktop) is served from Laravel. Auth is email and password — Fortify-style verify and reset. Instructors, students, and enrolments are first-class models. Ecommerce is Stripe + PayPal with a $0 path for community courses. Video files never live on the app disk.
MySQL holds users, courses, lessons, enrolments, orders, attempts. PostgreSQL holds rolled-up completion for staff who must export “who finished Job Ready in October” without touching checkout tables. Mail is SES. Storage is S3. Queues run failed-job retries so a mail outage does not lose an enrolment.
Campus, instructor studio, admin, queues, signed URLs, checkout webhooks.
MySQL: operational LMS. PostgreSQL: reporting warehouse for completion exports.
S3/R2 for mp4/HLS and PDFs. Player never gets a permanent public bucket URL.
SES: verify, reset, receipt, “course published.” Queued. Bounces visible in admin.
Stripe and PayPal. Free enrolments still mint an order so access is one code path.
OS-ENR-10482 proves Maya has lifetime Job Ready. Closing-the-Gap style exports come from PostgreSQL, not a slide.
How to Start a Business updates from the instructor studio. Video lands in S3. Students get the mail.
$0 community courses and $49 workshops share checkout, enrolment, and SES receipts. Refunds are admin actions.
Instructor, student, admin, email login, ecommerce, S3 video, SES — the same production split as Our Sistahood.