Deploy, verify, and roll out the product system without changing the LMS domain.
Academy LMS remains Laravel and Blade based. The product release flags change presentation coverage only; existing URLs, tenancy, policies, database records, payments, notifications, calendar sources, and content access rules stay compatible.
Deployment sequence
composer install --no-dev --optimize-autoloader
npm ci
npm run build
php artisan migrate --force
php artisan view:cache
php artisan test
Run the database migration before enabling the new access model in a deployment. It adds course catalog/enrollment policy fields, invitations, and observer links. Existing public pricing-type courses are backfilled to public catalog behavior; other existing courses default to private access.
Product release flags
LMS_UI_V2 is the immediate global presentation rollback. Route families can also be controlled independently while retaining their underlying route and domain behavior.
| Flag | Coverage |
|---|---|
LMS_UI_V2 | Global product-shell switch. Set false to turn off the product presentation layer. |
LMS_UI_V2_PUBLIC | Academy storefront and public invitation presentation. |
LMS_UI_V2_AUTH | Authentication/account-state presentation. |
LMS_UI_V2_OPERATIONS | Operations dashboards, libraries, and academy work. |
LMS_UI_V2_AUTHORING | Course Studio, curriculum, planning calendar/board, and assessment authoring. |
LMS_UI_V2_LEARNING | Student, calendar, assessment, and companion learning experiences. |
LMS_UI_V2_INTELLIGENCE | Reports, automations, AI, analytics, and commerce administration. |
LMS_UI_V2_ADMINISTRATION | Settings, roles, permissions, notifications, SaaS, and security administration. |
Safe rollout
Check schema and assetsRun migrations, compiled views, production Vite build, and the full automated suite.
Enable a route familyEnable only the release whose routes have complete product coverage for its intended users.
Validate role journeysCheck navigation, academy scope, empty states, permission denial, mobile layout, and no legacy mix.
Rollback presentation if neededTurn off the release flag or global switch; do not roll back domain migrations merely to change UI.
Security and tenancy checks
Academy boundaries
- Validate academy visibility on courses, invitations, observer links, boards, calendar records, and enrollment operations.
- Validate relation ownership before mutating a course, learner, lesson, card, or event.
- Keep staff records, private attachments, protected media, and learner data behind existing authorization.
Branding boundaries
- Academies may control their logo and sanitized primary accent.
- Semantic colors, surfaces, focus treatment, contrast, and interaction states remain system controlled.
- Do not add tenant-supplied CSS, scripts, or unvalidated color values.
Release verification
- Run
php artisan test,php artisan view:cache, andnpm run build. - Confirm public catalog visibility, free enrollment, checkout handoff, private invitation acceptance, and learner calendar scope.
- Confirm Course Studio ordering, planning board/calendar permissions, assessment access, and observer portal isolation.
- Check 1440px, 1024px, and 390px with keyboard focus, reduced motion, and no horizontal overflow before enabling a new release group.