Our Sistahood LMS
Cursos, matrículas y un checkout real

Our Sistahood (oursistahood.com.au) forma a mujeres indígenas con módulos de vídeo — Job Ready, How to Start a Business y ocho categorías de áreas de vida. El desarrollo es un LMS de producción: PHP / Laravel, no una página de enlaces de YouTube y un grupo de Facebook.

Qué se entregó: 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.

Laravel Instructor · Estudiante Ecommerce
Alumna siguiendo un curso en vídeo de Our Sistahood en un portátil
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 · Estudiante

Instructor, estudiante, matrícula — y un admin que no es el instructor

Julie Okely construye Job Ready. Maya lo ve. Admin ve cada pago y cada matrícula estancada. Son tres guards Laravel, no una contraseña compartida.

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

Crear curso, módulos, lecciones, quizzes. Subir mp4 al almacenamiento en la nube. Publicar. Ver quién se matriculó, quién se estancó en la lección 2, quién aprobó el quiz. No puede ver el pago de otro instructor salvo el suyo.

Studio

Student

Registrarse con email + password. Recorrer el catálogo. Checkout (o matrícula gratuita). Ver vídeo, reanudar, hacer el quiz. Mi lista de aprendizaje son matrículas, no marcadores.

Campus

A Zoom recording is not enrolment management.

Antes de Laravel, Job Ready (0,32 horas, actualizado en octubre de 2023) vivía como un archivo Zoom y un esquema Word. Maya registraba interés en un Google Form. Nadie podía decir si terminó el módulo dos. Los talleres de pago eran transferencia bancaria y una hoja de cálculo. Restablecer la contraseña era “email a Julie.”

  • Sin ficha de estudianteEl email era una lista de correo, no una cuenta con bcrypt y un token de restablecimiento.
  • No enrolment object“She’s in Job Ready” was a Messenger thread. Lifetime access could not be proven.
  • No instructor seatJulie could not add a lesson without a developer dropping an mp4 on a host.
  • Sin comercioHow to Start a Business no podía ser $0 para la comunidad y $49 para un taller posterior sin dos procesos rotos.

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

  1. Lun 19:04 — Crea cuenta: maya.w@example.net + contraseña. Laravel la hashea. Correo de verificación vía SES. Pulsa el enlace en el teléfono.
  2. Lun 19:11 — Abre Job Ready (Career & Business, instructora Julie Okely, 0.32 hrs). Precio $0. El checkout igual crea una fila orders para que gratis y de pago compartan un pipeline. Estado de matrícula: active. Flag de acceso lifetime: true.
  3. Mar 12:40 — Lección 1 desde S3, URL firmada, el reproductor guarda lesson_progress.seconds = 184. Reanuda en el portátil de la cocina esa noche en 184s, no en 0.
  4. Wed 20:02 — Quiz 8/10. Attempt stored. Instructor dashboard shows Maya stalled after lesson 1 until Wednesday — a row, not a guess.
  5. Thu 09:15 — Forgot password. Reset mail, 60-minute token, new hash. Admin did not email her a temporary password in clear text.

El admin ve dinero y correo. El instructor ve el curso. La estudiante ve su lista.

Operations

Admin — campus, payments, mail

Esta es la torre de control. Desactivar a una estudiante que compartió una contraseña. Reembolsar un taller de $49. Ver rebotes SES. Destacar Job Ready en la cuadrícula de inicio. Admin no reescribe el quiz de Julie.

  • 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

Nueve piezas del campus. Cada una entregada.

Login, matrícula, estudio, checkout, vídeo, admin, S3, correo e informes: no una lista de funciones. Abajo, cómo se veía cada uno antes y qué usa Maya ahora.

01 · Auth

Email + password

Google Form. Julie emailed a Zoom link. No hash, no reset.

Registro, verificación y login Laravel. Token de restablecimiento de 60 minutos por correo. Las mismas credenciales en teléfono y portátil.

02 · Enrolment

Student to course

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

Matrícula OS-ENR-10482: estudiante, curso, pedido, estado, lifetime. Esa fila es lo que abre el reproductor.

03 · Instructor

Course studio

Un desarrollador dejó un mp4 en el servidor.

Julie publica módulos, lecciones y quizzes ella misma. How to Start a Business se actualiza sin un ticket.

04 · Ecommerce

Checkout

Bank transfer. Spreadsheet. No receipt.

Stripe o PayPal. Job Ready gratuito igual crea un pedido de $0 para que acceso y correo compartan un camino. Reembolsos desde admin.

05 · Video

Video learning

YouTube no listado. Se perdía el sitio. Anuncios en la lección.

Signed S3 URL, HLS when needed, resume at 184s on any device after login.

06 · Admin

Admin panel

cPanel y una esperanza.

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

07 · Storage

Cloud storage

mp4 on a 20GB VPS. Disk full on publish day.

AWS S3 (o R2) para vídeo y PDFs. Disco Laravel s3. El servidor de la app se queda delgado.

08 · Mail

Email service

Julie escribía “aquí está el Zoom” desde Gmail.

SES queue: verify, reset, enrolment receipt, “your course is live.” Bounces show in admin.

09 · Reports

MySQL + PostgreSQL

90% completion was a slide.

MySQL ejecuta el campus. Agregado nocturno a PostgreSQL para “quién terminó Job Ready este mes” sin bloquear el checkout.

From email to signed video URL

01

Register

Email + password. Verificar vía SES. Fila de usuario en MySQL. No se exige login social en este producto.

02

Checkout

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

03

Mail

Recibo en cola: nombre del curso, id de matrícula, “acceso lifetime” si esa bandera está puesta, coincidiendo con el sitio en vivo.

04

Play

Player asks Laravel for a short-lived S3 URL. Progress ticks into MySQL. Postgres report picks it up overnight.

PHP / Laravel. MySQL para el campus. Postgres para informes.

El catálogo público en oursistahood.com.au (Job Ready, How to Start a Business, ocho categorías, acceso lifetime en móvil y escritorio) se sirve desde Laravel. Auth es email y password: verificar y restablecer estilo Fortify. Instructores, estudiantes y matrículas son modelos de primera. Ecommerce es Stripe + PayPal con un camino de $0 para cursos comunitarios. Los archivos de vídeo nunca viven en el disco de la app.

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.

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: operational LMS. PostgreSQL: reporting warehouse for completion exports.

Cloud storage + video

S3/R2 para mp4/HLS y PDFs. El reproductor nunca recibe una URL permanente de bucket público.

Email service

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

Ecommerce

Stripe y PayPal. Las matrículas gratuitas igual acuñan un pedido para que el acceso sea un solo camino de código.

Qué cambió después del go-live

Enrolment is auditable

OS-ENR-10482 prueba que Maya tiene Job Ready lifetime. Las exportaciones estilo Closing-the-Gap salen de PostgreSQL, no de una diapositiva.

Julie publishes without us

How to Start a Business se actualiza desde el estudio del instructor. El vídeo aterriza en S3. Las estudiantes reciben el correo.

De pago y gratis funcionan

Cursos comunitarios de $0 y talleres de $49 comparten checkout, matrícula y recibos SES. Los reembolsos son acciones de admin.

¿Necesita un LMS Laravel con matrículas reales?

Instructor, estudiante, admin, login por email, ecommerce, vídeo S3, SES: la misma división de producción que Our Sistahood.