[1mdiff --git a/Dockerfile b/Dockerfile[m [1mindex af83013..b506a23 100644[m [1m--- a/Dockerfile[m [1m+++ b/Dockerfile[m [36m@@ -14,6 +14,7 @@[m [mRUN apt-get update && apt-get install -y \[m [m # PHP Extensions[m RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd[m [32m+[m[32mRUN chown -R www-data:www-data /var/www/storage /var/www/bootstrap/cache[m[41m [m [m # Install Composer[m COPY --from=composer:latest /usr/bin/composer /usr/bin/composer[m [1mdiff --git a/dashboard/bootstrap/app.php b/dashboard/bootstrap/app.php[m [1mindex c3928c5..9f5e292 100644[m [1m--- a/dashboard/bootstrap/app.php[m [1m+++ b/dashboard/bootstrap/app.php[m [36m@@ -6,13 +6,15 @@[m [m return Application::configure(basePath: dirname(__DIR__))[m ->withRouting([m [31m- web: __DIR__.'/../routes/web.php',[m [31m- api: __DIR__.'/../routes/api.php',[m [31m- commands: __DIR__.'/../routes/console.php',[m [32m+[m[32m web: __DIR__ . '/../routes/web.php',[m [32m+[m[32m api: __DIR__ . '/../routes/api.php',[m [32m+[m[32m commands: __DIR__ . '/../routes/console.php',[m health: '/up',[m )[m ->withMiddleware(function (Middleware $middleware): void {[m [31m- //[m [32m+[m[32m $middleware->alias([[m [32m+[m[32m 'role' => \App\Http\Middleware\RoleMiddleware::class,[m [32m+[m[32m ]);[m })[m ->withExceptions(function (Exceptions $exceptions): void {[m //[m [1mdiff --git a/dashboard/composer.json b/dashboard/composer.json[m [1mindex 52a3a8a..aad37ad 100644[m [1m--- a/dashboard/composer.json[m [1m+++ b/dashboard/composer.json[m [36m@@ -12,6 +12,7 @@[m },[m "require-dev": {[m "fakerphp/faker": "^1.23",[m [32m+[m[32m "laravel/breeze": "^2.4",[m "laravel/pail": "^1.2.2",[m "laravel/pint": "^1.24",[m "laravel/sail": "^1.41",[m [1mdiff --git a/dashboard/composer.lock b/dashboard/composer.lock[m [1mindex 7ba63ad..23b4e2e 100644[m [1m--- a/dashboard/composer.lock[m [1m+++ b/dashboard/composer.lock[m [36m@@ -4,7 +4,7 @@[m "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",[m "This file is @generated automatically"[m ],[m [31m- "content-hash": "c514d8f7b9fc5970bdd94287905ef584",[m [32m+[m[32m "content-hash": "18c3a10710e6e4641721ddfbd649de8d",[m "packages": [[m {[m "name": "brick/math",[m [36m@@ -6195,6 +6195,67 @@[m },[m "time": "2025-04-30T06:54:44+00:00"[m },[m [32m+[m[32m {[m [32m+[m[32m "name": "laravel/breeze",[m [32m+[m[32m "version": "v2.4.1",[m [32m+[m[32m "source": {[m [32m+[m[32m "type": "git",[m [32m+[m[32m "url": "https://github.com/laravel/breeze.git",[m [32m+[m[32m "reference": "28cefeaf6af20177ddf5cc7b93e87e4ad79d533f"[m [32m+[m[32m },[m [32m+[m[32m "dist": {[m [32m+[m[32m "type": "zip",[m [32m+[m[32m "url": "https://api.github.com/repos/laravel/breeze/zipball/28cefeaf6af20177ddf5cc7b93e87e4ad79d533f",[m [32m+[m[32m "reference": "28cefeaf6af20177ddf5cc7b93e87e4ad79d533f",[m [32m+[m[32m "shasum": ""[m [32m+[m[32m },[m [32m+[m[32m "require": {[m [32m+[m[32m "illuminate/console": "^11.0|^12.0|^13.0",[m [32m+[m[32m "illuminate/filesystem": "^11.0|^12.0|^13.0",[m [32m+[m[32m "illuminate/support": "^11.0|^12.0|^13.0",[m [32m+[m[32m "illuminate/validation": "^11.0|^12.0|^13.0",[m [32m+[m[32m "php": "^8.2.0",[m [32m+[m[32m "symfony/console": "^7.0|^8.0"[m [32m+[m[32m },[m [32m+[m[32m "require-dev": {[m [32m+[m[32m "laravel/framework": "^11.0|^12.0|^13.0",[m [32m+[m[32m "orchestra/testbench-core": "^9.0|^10.0|^11.0",[m [32m+[m[32m "phpstan/phpstan": "^2.0"[m [32m+[m[32m },[m [32m+[m[32m "type": "library",[m [32m+[m[32m "extra": {[m [32m+[m[32m "laravel": {[m [32m+[m[32m "providers": [[m [32m+[m[32m "Laravel\\Breeze\\BreezeServiceProvider"[m [32m+[m[32m ][m [32m+[m[32m }[m [32m+[m[32m },[m [32m+[m[32m "autoload": {[m [32m+[m[32m "psr-4": {[m [32m+[m[32m "Laravel\\Breeze\\": "src/"[m [32m+[m[32m }[m [32m+[m[32m },[m [32m+[m[32m "notification-url": "https://packagist.org/downloads/",[m [32m+[m[32m "license": [[m [32m+[m[32m "MIT"[m [32m+[m[32m ],[m [32m+[m[32m "authors": [[m [32m+[m[32m {[m [32m+[m[32m "name": "Taylor Otwell",[m [32m+[m[32m "email": "taylor@laravel.com"[m [32m+[m[32m }[m [32m+[m[32m ],[m [32m+[m[32m "description": "Minimal Laravel authentication scaffolding with Blade and Tailwind.",[m [32m+[m[32m "keywords": [[m [32m+[m[32m "auth",[m [32m+[m[32m "laravel"[m [32m+[m[32m ],[m [32m+[m[32m "support": {[m [32m+[m[32m "issues": "https://github.com/laravel/breeze/issues",[m [32m+[m[32m "source": "https://github.com/laravel/breeze"[m [32m+[m[32m },[m [32m+[m[32m "time": "2026-03-10T19:59:01+00:00"[m [32m+[m[32m },[m {[m "name": "laravel/pail",[m "version": "v1.2.6",[m [1mdiff --git a/dashboard/package.json b/dashboard/package.json[m [1mindex 7686b29..2ea7e1d 100644[m [1m--- a/dashboard/package.json[m [1m+++ b/dashboard/package.json[m [36m@@ -7,11 +7,15 @@[m "dev": "vite"[m },[m "devDependencies": {[m [32m+[m[32m "@tailwindcss/forms": "^0.5.2",[m "@tailwindcss/vite": "^4.0.0",[m [32m+[m[32m "alpinejs": "^3.4.2",[m [32m+[m[32m "autoprefixer": "^10.4.2",[m "axios": "^1.11.0",[m "concurrently": "^9.0.1",[m "laravel-vite-plugin": "^2.0.0",[m [31m- "tailwindcss": "^4.0.0",[m [32m+[m[32m "postcss": "^8.4.31",[m [32m+[m[32m "tailwindcss": "^3.1.0",[m "vite": "^7.0.7"[m }[m }[m [1mdiff --git a/dashboard/resources/css/app.css b/dashboard/resources/css/app.css[m [1mindex 3e6abea..b5c61c9 100644[m [1m--- a/dashboard/resources/css/app.css[m [1m+++ b/dashboard/resources/css/app.css[m [36m@@ -1,11 +1,3 @@[m [31m-@import 'tailwindcss';[m [31m-[m [31m-@source '../../vendor/laravel/framework/src/Illuminate/Pagination/resources/views/*.blade.php';[m [31m-@source '../../storage/framework/views/*.php';[m [31m-@source '../**/*.blade.php';[m [31m-@source '../**/*.js';[m [31m-[m [31m-@theme {[m [31m- --font-sans: 'Instrument Sans', ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji',[m [31m- 'Segoe UI Symbol', 'Noto Color Emoji';[m [31m-}[m [32m+[m[32m@tailwind base;[m [32m+[m[32m@tailwind components;[m [32m+[m[32m@tailwind utilities;[m [1mdiff --git a/dashboard/resources/js/app.js b/dashboard/resources/js/app.js[m [1mindex e59d6a0..a8093be 100644[m [1m--- a/dashboard/resources/js/app.js[m [1m+++ b/dashboard/resources/js/app.js[m [36m@@ -1 +1,7 @@[m import './bootstrap';[m [32m+[m [32m+[m[32mimport Alpine from 'alpinejs';[m [32m+[m [32m+[m[32mwindow.Alpine = Alpine;[m [32m+[m [32m+[m[32mAlpine.start();[m [1mdiff --git a/dashboard/resources/views/layouts/app.blade.php b/dashboard/resources/views/layouts/app.blade.php[m [1mindex e086ead..0a471a4 100644[m [1m--- a/dashboard/resources/views/layouts/app.blade.php[m [1m+++ b/dashboard/resources/views/layouts/app.blade.php[m [36m@@ -1,305 +1,36 @@[m [m [31m-[m [31m-[m [31m-
[m [31m-