page:blueprints:course creators:member portal:laravel

Course creators: member portal using Laravel

Summary

A member portal blueprint for course creators built with Laravel on Ample. Domain schema: course_groups (name, start_at, end_at, capacity): cohorts as course groups; memberships (course_group_id, member_email, role, joined_at): learner and instructor membership; sessions (course_group_id, starts_at, title, recording_object_key): session events and recordings; materials (course_group_id, title, object_key, visibility): teaching materials; document_access (document_id, principal_reference, role, granted_at): who may read which document. Public information: course catalog and syllabus, instructor profile, schedule. Kept out of scope until handling is reviewed: learner progress and grades, recordings showing learners, payment status. Recordings and progress data are personal data; materials are authorized per course group. Technical basis verified on Laravel: a role-to-document access model with negative tests (401 without identity, 403 for the wrong role) and a private-bucket round-trip for the allowed role (private=ok).

Representative Queries

Resource Requirements

Infrastructure Requirements

  1. Compute: Apps run in isolated x86_64 Firecracker microVMs that auto-pause when idle and wake on request; sizes are the priced VM sizes.
  2. Postgres: Managed PostgreSQL 16 runs in its own microVM and is auto-provisioned when an app needs a database and no DATABASE_URL is supplied.
  3. S3-compatible object storage: Buckets are S3-compatible with issued credentials; PutObject and GetObject are verified by canary. Other S3 operations are not verified.

Execution Status

Prerequisites

Workflow Steps

  1. Model the course creators domain: Create the tables course_groups, memberships, sessions, materials, document_access. Cohorts as course groups lives in course_groups; keep the sensitive classes (learner progress and grades, recordings showing learners, payment status) out of this schema.
  2. Workflow step 1: Model groups, memberships and roles.
  3. Workflow step 2: Authorize access to materials by membership and role (401, 403 negative tests).
  4. Workflow step 3: Store materials in the private bucket and stream them through the app.
  5. Workflow step 4: Deploy and verify the negative tests and an authorized download.
  6. Deploy: Run the synchronous deploy once and read the result. Re-running with no change is a no-op.
  7. Verify: Run the pattern self-test(s) from the example (/p/private-document-library) and your own acceptance checks for the course creators workflow.

Limitations

Examples

  1. Laravel pattern fixture: Verified private document library basis for this blueprint.
    • Source Ref: tests/deploy-canaries/laravel-patterns

Next Actions