Our Sistahood LMS
Cursussen, inschrijvingen en een echte checkout

Our Sistahood (oursistahood.com.au) onderwijst Indigenous women via videomodules — Job Ready, How to Start a Business, en acht life-area-categorieën. De build is een productie-LMS: PHP / Laravel, geen pagina met YouTube-links en een Facebookgroep.

Wat live ging: studentencampus en instructorstudio op het web, een Laravel admin panel, email + password auth met resetmail, ecommerce checkout voor betaalde cursussen (gratis lifetime-cursussen blijven gratis), video learning from cloud storage, en transactionele email. Data: MySQL voor de live campus, PostgreSQL voor afrondingsrapporten.

Laravel Instructor · Student Ecommerce
Leerling die een Our Sistahood-videocursus op een laptop volgt
Email login
Lesson 1 · S3
Enrolled
Maya W. · Job Ready · OS-ENR-10482
Paid $0 (community course) · enrolment still a commerce order
Laravel · MySQL · Postgres
Laravel PHP backend + admin
MySQL Users, courses, orders
PostgreSQL Completion reports
3 seats Admin · Instructor · Student

Instructor, student, enrolment — en een admin die niet de instructor is

Julie Okely bouwt Job Ready. Maya kijkt. Admin ziet elke betaling en elke vastgelopen inschrijving. Dat zijn drie Laravel-guards, geen gedeeld wachtwoord.

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 admin

Course instructor

Cursus, modules, lessen, quizzes maken. Mp4 uploaden naar cloudopslag. Publiceren. Zien wie is ingeschreven, wie vastliep op les 2, wie de quiz haalde. Kan de payout van een andere instructor niet zien, behalve de eigen.

Studio

Student

Registreren met e-mail + wachtwoord. Catalogus browsen. Checkout (of gratis inschrijven). Video kijken, hervatten, quiz maken. My learning-lijst is inschrijvingen, geen bookmarks.

Campus

Een Zoom-opname is geen enrolmentbeheer.

Voor Laravel leefde Job Ready (0,32 uur, bijgewerkt oktober 2023) als Zoom-bestand en Word-outline. Maya registreerde interesse in een Google Form. Niemand kon zeggen of ze module twee af had. Betaalde workshops waren overschrijving en een spreadsheet. Wachtwoordreset was “mail Julie.”

  • Geen studentrecordE-mail was een mailinglijst, geen account met bcrypt en een resettoken.
  • Geen enrolment-object“She’s in Job Ready” was een Messenger-thread. Lifetime access kon niet worden bewezen.
  • Geen instructorstoelJulie kon geen les toevoegen zonder dat een developer een mp4 op een host dumpte.
  • Geen commerceHow to Start a Business kon niet $0 voor de community en $49 voor een latere workshop zijn zonder twee kapotte processen.

Maya W. · Moree, NSW · OS-ENR-10482

  1. Mon 19:04 — Maakt account: maya.w@example.net + wachtwoord. Laravel hasht het. Verificatiemail via SES. Ze klikt de link op haar telefoon.
  2. Mon 19:11 — Opens Job Ready (Career & Business, instructor Julie Okely, 0.32 hrs). Price $0. Checkout still creates an orders rij zodat gratis en betaald één pipeline delen. Enrolmentstatus: active. Lifetime access-flag: true.
  3. Tue 12:40 — Les 1 van S3, signed URL, player bewaart lesson_progress.seconds = 184. Hervatten op de keukenlaptop die avond bij 184s, niet 0.
  4. Wed 20:02 — Quiz 8/10. Attempt opgeslagen. Instructor-dashboard toont dat Maya na les 1 tot woensdag vastliep — een rij, geen gok.
  5. Thu 09:15 — Wachtwoord vergeten. Resetmail, 60-minuten-token, nieuwe hash. Admin mailde haar geen tijdelijk wachtwoord in clear text.

Admin ziet geld en mail. Instructor ziet de cursus. Student ziet haar lijst.

Operations

Admin — campus, payments, mail

Dit is de control tower. Disable een student die een wachtwoord deelde. Refund een workshop van $49. Zie SES-bounces. Feature Job Ready op het homegrid. Admin herschrijft Julies quiz niet.

  • Users, roles, password-reset audit
  • Orders: free enrol vs Stripe/PayPal paid
  • Categories, coupons, failed jobs, S3 health
Sistahood · Admin Live
1,284Students
42Instructors
18Paid orders / 7d
2Mail bounces
TimeEventWhoStatus
19:11Enrol Job Ready (free)Maya W.Active
18:40Stripe workshop $49Tia N.Paid
17:02Password reset mailedMaya W.SES
16:11Bounce · bad domainold@mailHeld

Negen stukken van de campus. Each one shipped.

Login, enrolment, studio, checkout, video, admin, S3, mail en rapporten — geen featurelijst. Hieronder hoe elk eruitzag vóór, en wat Maya nu écht gebruikt.

01 · Auth

Email + password

Google Form. Julie mailde een Zoom-link. Geen hash, geen reset.

Laravel register, verify, login. 60-minuten-resettoken per mail. Dezelfde credentials op telefoon en laptop.

02 · Enrolment

Student to course

“She’s in Job Ready” leefde in Messenger.

Enrolment OS-ENR-10482: student, cursus, order, status, lifetime. Die rij is wat de player opent.

03 · Instructor

Course studio

Een developer dumpte een mp4 op de server.

Julie publiceert modules, lessen en quizzes zelf. How to Start a Business werkt bij zonder ticket.

04 · Ecommerce

Checkout

Overschrijving. Spreadsheet. Geen receipt.

Stripe of PayPal. Gratis Job Ready maakt nog steeds een $0-order zodat access en mail één pad delen. Refunds vanuit admin.

05 · Video

Video learning

YouTube unlisted. Plek kwijt. Ads in de les.

Signed S3-URL, HLS indien nodig, hervatten bij 184s op elk device na login.

06 · Admin

Admin panel

cPanel en een hoop.

Laravel admin: users, orders, categories, coupons, mail log, disable account. Not phpMyAdmin.

07 · Storage

Cloud storage

mp4 op een 20GB VPS. Schijf vol op publishedag.

AWS S3 (of R2) voor video en PDFs. Laravel disk s3. De appserver blijft dun.

08 · Mail

Email service

Julie typte “here’s the Zoom” vanuit Gmail.

SES-wachtrij: verify, reset, enrolment-receipt, “your course is live.” Bounces tonen in admin.

09 · Reports

MySQL + PostgreSQL

90% completion was een slide.

MySQL draait de campus. Nightly rollup in PostgreSQL voor “who finished Job Ready this month” zonder checkout te locken.

Van e-mail naar signed video URL

01

Register

E-mail + wachtwoord. Verify via SES. User-rij in MySQL. Geen social login vereist voor dit product.

02

Checkout

$0 community course or Stripe/PayPal. Order + enrolment written in one Laravel transaction.

03

Mail

Queued receipt: cursusnaam, enrolment id, “lifetime access” als die flag aanstaat — passend bij de livesite.

04

Play

Player vraagt Laravel om een kortlevende S3-URL. Progress tikt in MySQL. Postgres-rapport pakt het ’s nachts op.

PHP / Laravel. MySQL voor de campus. Postgres voor rapporten.

De publieke catalogus op oursistahood.com.au (Job Ready, How to Start a Business, acht categorieën, levenslange toegang op mobile en desktop) wordt vanuit Laravel geserveerd. Auth is e-mail en wachtwoord — Fortify-achtige verificatie en reset. Docenten, studenten en inschrijvingen zijn first-class modellen. Ecommerce is Stripe + PayPal met een $0-pad voor communitycursussen. Videobestanden staan nooit op de app-disk.

MySQL houdt users, cursussen, lessen, enrolments, orders, attempts. PostgreSQL houdt opgerolde completion voor staf die “who finished Job Ready in October” moet exporteren zonder checkout-tabellen aan te raken. Mail is SES. Storage is S3. Queues retrien failed jobs zodat een mailstoring geen enrolment verliest.

PHP / Laravel MySQL PostgreSQL Email + password Stripe / PayPal S3 cloud storage Amazon SES Admin panel
PHP / Laravel

Campus, instructor studio, admin, queues, signed URLs, checkout webhooks.

MySQL + PostgreSQL

MySQL: operationeel LMS. PostgreSQL: reporting warehouse voor completion-exports.

Cloud storage + video

S3/R2 voor mp4/HLS en PDFs. Player krijgt nooit een permanente publieke bucket-URL.

Email service

SES: verify, reset, receipt, “course published.” Queued. Bounces visible in admin.

Ecommerce

Stripe en PayPal. Gratis enrolments minten nog steeds een order zodat access één codepad is.

Wat veranderde after go-live

Enrolment is auditable

OS-ENR-10482 bewijst dat Maya lifetime Job Ready heeft. Closing-the-Gap-achtige exports komen uit PostgreSQL, geen slide.

Julie publishes without us

How to Start a Business werkt bij vanuit de instructorstudio. Video landt in S3. Studenten krijgen de mail.

Geld en gratis werken allebei

$0 communitycursussen en $49-workshops delen checkout, enrolment en SES-receipts. Refunds zijn adminacties.

Een Laravel-LMS nodig met echte enrolments?

Instructor, student, admin, e-maillogin, ecommerce, S3-video, SES — dezelfde productiesplit als Our Sistahood.