# Phase 1: Project Bootstrap

## Setup Context
- **Project Structure**: Laravel (latest stable), Tailwind CSS, Alpine.js, Breeze for authentication, Spatie Laravel Permissions for RBAC.
- **Roles Created**:
  - `admin`: Has full access and manages course approvals, enrollments, users, etc.
  - `instructor`: Can create, edit, and submit courses for review. Cannot publish without admin.
  - `student`: Can enroll, view content, and track progress.
- **Layouts Established**:
  - `layouts/app.blade.php`: The default authenticated layout (with navigation, slot for content).
  - `layouts/guest.blade.php`: Handles unauthenticated flows (login/register pages).
  - `layouts/admin.blade.php`: Admin specific sidebar and dashboard wrapper.
- **Controllers Added (with skeletons)**:
  - `AdminController`
  - `InstructorController`
  - `StudentController`

## Packages & Versions
-   "php": "^8.3"
-   "laravel/framework": "^11.0" (or current stable 11.x depending on composer install)
-   "laravel/breeze": latest
-   "spatie/laravel-permission": "^6.x" or "^7.2"
-   "tailwindcss": default via Vite integration

## Architecture Decisions
- The MySQL `Specified key was too long` bug was resolved by limiting `Schema::defaultStringLength(191)` in `AppServiceProvider`.
- And shrinking string lengths for Spatie permission names inside the migration file to prevent crossing the 1000 byte index limitation.
- Initial migrations successfully rolled back and re-migrated, leaving a pristine datastore with roles seeded successfully.

## Next Steps
We are now ready for **Phase 2: Database Schema**. In that phase, we will scaffold all required models, migrations, and relationships for standard LMS entities (Course, Module, Lesson, Enrollment) adhering to UUID mapping and exact schema relations.
