Laravel 5.6 on Material Design Lite 1.3 with user authentication, registration with email confirmation, social media authentication, password recovery, and captcha protection. This makes full use of Controllers for the routes, templates for the views, and makes use of middleware for routing. Uses laravel ORM modeling and has CRUD (Create Read Update Delete) functionality for all tasks. Quick setup, can be done in 5 minutes. It will take longer to obtain your Facebook, Twitter, and Google Plus API Keys than it will to set this up.
Laravel 5.6 with user authentication, registration with email confirmation, social media authentication, password recovery, and captcha protection. This makes full use of Controllers for the routes, templates for the views, and makes use of middleware for routing. Uses laravel ORM modeling and has CRUD (Create Read Update Delete) functionality for all tasks. Quick setup, can be done in 5 minutes. It will take longer to obtain your Facebook, Twitter, and Google Plus API Keys than it will to set this up.
Laravel Material Design Features |
---|
Built on Laravel 5.6 |
Built on Material Design Lite 1.3.0 |
Uses MySQL Database (can be changed) and include migrations and seeds |
Uses Artisan to manage database migration, schema creations, and create/publish page controller templates |
Dependencies are managed with COMPOSER |
Laravel Scaffolding User and Administrator Authentication |
Uses Socialite Logins ready to go - See API list used below |
Google Maps API v3 for User Location lookup and Geocoding |
CRUD (Create, Read, Update, Delete) Tasks Management |
CRUD (Create, Read, Update, Delete) User Management |
Eloquent user profiles |
Users can pick theme through dropdown or colorwheel |
Users can upload profile background images |
User Avatar Image AJAX Upload with Dropzone.js |
User Gravatar using Gravatar API |
User Registration with email verification |
Google reCaptcha Protection with Google API |
Makes us of Laravel Mix to compile assets |
Makes use of Language Localization Files |
Active Nav states using Laravel Requests |
Restrict User Email Activation Attempts |
Capture IP to users table upon signup |
User uploads are in protected storage API |
Uses Laravel Debugger for development |
User Password Reset via Email Token |
User Login with remember password |
User Delete with Goodby email |
User Restore Deleted Account |
User Roles/ACL Implementation |
Configurable Email Notification via Laravel-Exception-Notifier |
Makes of Laravel's Soft Delete Structure |
Soft Deleted Users Management System |
Permanently Delete Soft Deleted Users |
User Delete Account with Goodbye email |
User Restore Deleted Account Token |
Restore Soft Deleted Users |
View Soft Deleted Users |
Captures Soft Delete Date |
Captures Soft Delete IP |
Admin Routing Details UI |
Admin PHP Information UI |
404 Page |
git clone https://github.com/jeremykenedy/laravel-material-design.git laravel-material-design
mysql -u root -p
, if using Vagrant: mysql -u homestead -psecret
create database laravel_material;
\q
cp .env.example .env
.env
file // NOTE: Google API Key will prevent maps errorcomposer install
from the projects root folderphp artisan vendor:publish --tag=laravelroles
sudo chmod -R ug+rwx storage bootstrap/cache
php artisan key:generate
php artisan migrate
composer dump-autoload
php artisan db:seed
npm install
npm run dev
or npm run production
npm run watch
yarn install
yarn run dev
or yarn run production
yarn run watch
php artisan config:cache
php artisan serve
http://localhost
Password | Access | |
---|---|---|
[email protected] | password | User Access |
[email protected] | password | Admin Access |
+--------+---------------+----------------------------------------+---------------------------------+------------------------------------------------------------------------+----------------------------------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+---------------+----------------------------------------+---------------------------------+------------------------------------------------------------------------+----------------------------------------------+
| | GET|HEAD | / | public.home | App\Http\Controllers\UserController@index | web,auth,activated |
| | GET|HEAD | _debugbar/assets/javascript | debugbar.assets.js | Barryvdh\Debugbar\Controllers\AssetController@js | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | GET|HEAD | _debugbar/assets/stylesheets | debugbar.assets.css | Barryvdh\Debugbar\Controllers\AssetController@css | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | DELETE | _debugbar/cache/{key}/{tags?} | debugbar.cache.delete | Barryvdh\Debugbar\Controllers\CacheController@delete | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | GET|HEAD | _debugbar/clockwork/{id} | debugbar.clockwork | Barryvdh\Debugbar\Controllers\OpenHandlerController@clockwork | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | GET|HEAD | _debugbar/open | debugbar.openhandler | Barryvdh\Debugbar\Controllers\OpenHandlerController@handle | Barryvdh\Debugbar\Middleware\DebugbarEnabled |
| | GET|HEAD | account | {username} | App\Http\Controllers\ProfilesController@account | web,auth,activated,currentUser |
| | GET|HEAD | activate | activate | App\Http\Controllers\Auth\ActivateController@initial | web,auth |
| | GET|HEAD | activate/{token} | authenticated.activate | App\Http\Controllers\Auth\ActivateController@activate | web,auth |
| | GET|HEAD | activation | authenticated.activation-resend | App\Http\Controllers\Auth\ActivateController@resend | web,auth |
| | GET|HEAD | activation-required | activation-required | App\Http\Controllers\Auth\ActivateController@activationRequired | web,auth,activated |
| | POST | avatar/upload | avatar.upload | App\Http\Controllers\ProfilesController@upload | web,auth,activated,currentUser |
| | POST | background/upload | background.upload | App\Http\Controllers\ProfilesController@uploadBackground | web,auth,activated,currentUser |
| | GET|POST|HEAD | broadcasting/auth | | Illuminate\Broadcasting\BroadcastController@authenticate | web |
| | GET|HEAD | exceeded | exceeded | App\Http\Controllers\Auth\ActivateController@exceeded | web,auth |
| | GET|HEAD | home | public.home | App\Http\Controllers\UserController@index | web,auth,activated |
| | GET|HEAD | images/profile/{id}/avatar/{image} | | App\Http\Controllers\ProfilesController@userProfileAvatar | web,auth,activated |
| | GET|HEAD | images/profile/{id}/background/{image} | | App\Http\Controllers\ProfilesController@userProfileBackgroundImage | web,auth,activated |
| | POST | login | | App\Http\Controllers\Auth\LoginController@login | web,guest |
| | GET|HEAD | login | login | App\Http\Controllers\Auth\LoginController@showLoginForm | web,guest |
| | GET|HEAD | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web,auth,activated |
| | POST | logout | logout | App\Http\Controllers\Auth\LoginController@logout | web |
| | GET|HEAD | logs | | Rap2hpoutre\LaravelLogViewer\LogViewerController@index | web,auth,activated,role:admin |
| | GET|HEAD | material.min.css.template | | App\Http\Controllers\ThemesManagementController@template | web,auth |
| | POST | password/email | password.email | App\Http\Controllers\Auth\ForgotPasswordController@sendResetLinkEmail | web,guest |
| | GET|HEAD | password/reset | password.request | App\Http\Controllers\Auth\ForgotPasswordController@showLinkRequestForm | web,guest |
| | POST | password/reset | | App\Http\Controllers\Auth\ResetPasswordController@reset | web,guest |
| | GET|HEAD | password/reset/{token} | password.reset | App\Http\Controllers\Auth\ResetPasswordController@showResetForm | web,guest |
| | GET|HEAD | php | | App\Http\Controllers\AdminDetailsController@listPHPInfo | web,auth,activated,role:admin |
| | GET|HEAD | profile/create | profile.create | App\Http\Controllers\ProfilesController@create | web,auth,activated,currentUser |
| | GET|HEAD | profile/{profile} | profile.show | App\Http\Controllers\ProfilesController@show | web,auth,activated,currentUser |
| | PUT|PATCH | profile/{profile} | profile.update | App\Http\Controllers\ProfilesController@update | web,auth,activated,currentUser |
| | GET|HEAD | profile/{profile}/edit | profile.edit | App\Http\Controllers\ProfilesController@edit | web,auth,activated,currentUser |
| | GET|HEAD | profile/{username} | {username} | App\Http\Controllers\ProfilesController@show | web,auth,activated |
| | DELETE | profile/{username}/deleteUserAccount | {username} | App\Http\Controllers\ProfilesController@deleteUserAccount | web,auth,activated,currentUser |
| | POST | profile/{username}/updateAjax | {username} | App\Http\Controllers\ProfilesController@update | web,auth,activated,currentUser |
| | PUT | profile/{username}/updateUserAccount | {username} | App\Http\Controllers\ProfilesController@updateUserAccount | web,auth,activated,currentUser |
| | PUT | profile/{username}/updateUserPassword | {username} | App\Http\Controllers\ProfilesController@updateUserPassword | web,auth,activated,currentUser |
| | GET|HEAD | re-activate/{token} | user.reactivate | App\Http\Controllers\RestoreUserController@userReActivate | web |
| | GET|HEAD | register | register | App\Http\Controllers\Auth\RegisterController@showRegistrationForm | web,guest |
| | POST | register | | App\Http\Controllers\Auth\RegisterController@register | web,guest |
| | GET|HEAD | routes | | App\Http\Controllers\AdminDetailsController@listRoutes | web,auth,activated,role:admin |
| | GET|HEAD | social/handle/{provider} | social.handle | App\Http\Controllers\Auth\SocialController@getSocialHandle | web |
| | GET|HEAD | social/redirect/{provider} | social.redirect | App\Http\Controllers\Auth\SocialController@getSocialRedirect | web |
| | GET|HEAD | tasks | tasks.index | App\Http\Controllers\TasksController@index | web,auth,activated,currentUser |
| | POST | tasks | tasks.store | App\Http\Controllers\TasksController@store | web,auth,activated,currentUser |
| | GET|HEAD | tasks/create | tasks.create | App\Http\Controllers\TasksController@create | web,auth,activated,currentUser |
| | GET|HEAD | tasks/{task} | tasks.show | App\Http\Controllers\TasksController@show | web,auth,activated,currentUser |
| | PUT|PATCH | tasks/{task} | tasks.update | App\Http\Controllers\TasksController@update | web,auth,activated,currentUser |
| | DELETE | tasks/{task} | tasks.destroy | App\Http\Controllers\TasksController@destroy | web,auth,activated,currentUser |
| | GET|HEAD | tasks/{task}/edit | tasks.edit | App\Http\Controllers\TasksController@edit | web,auth,activated,currentUser |
| | POST | themes | themes.store | App\Http\Controllers\ThemesManagementController@store | web,auth,activated,role:admin |
| | GET|HEAD | themes | themes | App\Http\Controllers\ThemesManagementController@index | web,auth,activated,role:admin |
| | GET|HEAD | themes/create | themes.create | App\Http\Controllers\ThemesManagementController@create | web,auth,activated,role:admin |
| | GET|HEAD | themes/{theme} | themes.show | App\Http\Controllers\ThemesManagementController@show | web,auth,activated,role:admin |
| | DELETE | themes/{theme} | themes.destroy | App\Http\Controllers\ThemesManagementController@destroy | web,auth,activated,role:admin |
| | PUT|PATCH | themes/{theme} | themes.update | App\Http\Controllers\ThemesManagementController@update | web,auth,activated,role:admin |
| | GET|HEAD | themes/{theme}/edit | themes.edit | App\Http\Controllers\ThemesManagementController@edit | web,auth,activated,role:admin |
| | GET|HEAD | users | users | App\Http\Controllers\UsersManagementController@index | web,auth,activated,role:admin |
| | POST | users | users.store | App\Http\Controllers\UsersManagementController@store | web,auth,activated,role:admin |
| | GET|HEAD | users/create | create | App\Http\Controllers\UsersManagementController@create | web,auth,activated,role:admin |
| | GET|HEAD | users/deleted | deleted.index | App\Http\Controllers\SoftDeletesController@index | web,auth,activated,role:admin |
| | DELETE | users/deleted/{deleted} | deleted.destroy | App\Http\Controllers\SoftDeletesController@destroy | web,auth,activated,role:admin |
| | PUT|PATCH | users/deleted/{deleted} | deleted.update | App\Http\Controllers\SoftDeletesController@update | web,auth,activated,role:admin |
| | GET|HEAD | users/deleted/{deleted} | deleted.show | App\Http\Controllers\SoftDeletesController@show | web,auth,activated,role:admin |
| | DELETE | users/{user} | user.destroy | App\Http\Controllers\UsersManagementController@destroy | web,auth,activated,role:admin |
| | PUT|PATCH | users/{user} | users.update | App\Http\Controllers\UsersManagementController@update | web,auth,activated,role:admin |
| | GET|HEAD | users/{user} | users.show | App\Http\Controllers\UsersManagementController@show | web,auth,activated,role:admin |
| | GET|HEAD | users/{user}/edit | users.edit | App\Http\Controllers\UsersManagementController@edit | web,auth,activated,role:admin |
+--------+---------------+----------------------------------------+---------------------------------+------------------------------------------------------------------------+----------------------------------------------+
Go to http://socialiteproviders.github.io and select the provider to be added.
From the projects root folder in terminal run composer command to get the needed package.
composer require socialiteproviders/twitch
From the projects root folder run composer update
Add the service provider to /config/services.php
'twitch' => [
'client_id' => env('TWITCH_KEY'),
'client_secret' => env('TWITCH_SECRET'),
'redirect' => env('TWITCH_REDIRECT_URI'),
],
Add the API credentials to /.env
TWITCH_KEY=YOURKEYHERE
TWITCH_SECRET=YOURSECRETHERE
TWITCH_REDIRECT_URI=http://YOURWEBSITEURL.COM/social/handle/twitch
Add the social media login link:
Example:
In file /resources/views/auth/login.blade.php
add ONE of the following:
<a href="{{ route('social.redirect', ['provider' => 'twitch']) }}" class="btn btn-lg btn-primary btn-block twitch">Twitch</a>
{!! HTML::link(route('social.redirect', ['provider' => 'twitch']), 'Twitch', array('class' => 'btn btn-lg btn-primary btn-block twitch')) !!}
Example .env
file:
APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
LOG_CHANNEL=stack
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_material
DB_USERNAME=homestead
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS=
MAIL_FROM_NAME=''
EMAIL_EXCEPTION_ENABLED=false
[email protected]
EMAIL_EXCEPTION_TO='[email protected], [email protected]'
EMAIL_EXCEPTION_CC=''
EMAIL_EXCEPTION_BCC=''
EMAIL_EXCEPTION_SUBJECT=''
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
PUSHER_APP_CLUSTER=
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"
ACTIVATION=true
ACTIVATION_LIMIT_TIME_PERIOD=24
ACTIVATION_LIMIT_MAX_ATTEMPTS=3
NULL_IP_ADDRESS=0.0.0.0
DEBUG_BAR_ENVIRONMENT=local
USER_RESTORE_CUTOFF_DAYS=31
USER_RESTORE_ENRYPTION_KEY=
DEFAULT_GRAVATAR_SIZE=80
DEFAULT_GRAVATAR_FALLBACK=http://c1940652.r52.cf0.rackcdn.com/51ce28d0fb4f442061000000/Screen-Shot-2013-06-28-at-5.22.23-PM.png
DEFAULT_GRAVATAR_SECURE=false
DEFAULT_GRAVATAR_MAX_RATING=g
DEFAULT_GRAVATAR_FORCE_DEFAULT=false
DEFAULT_GRAVATAR_FORCE_EXTENSION=jpg
// NOTE: YOU CAN REMOVE THE KEY CALL IN app.blade.php IF YOU GET A POP UP AND DO NOT WANT TO SETUP A KEY FOR DEV
# Google Maps API v3 Key - https://developers.google.com/maps/documentation/javascript/get-api-key#get-an-api-key
GOOGLEMAPS_API_KEY=YOURGOOGLEMAPSkeyHERE
# https://console.developers.google.com/ - NEED OAUTH CREDS
GOOGLE_ID=YOURGOOGLEPLUSidHERE
GOOGLE_SECRET=YOURGOOGLEPLUSsecretHERE
GOOGLE_REDIRECT=http://yourwebsiteURLhere.com/social/handle/google
# https://www.google.com/recaptcha/admin#list
ENABLE_RECAPTCHA=true
RE_CAP_SITE=YOURGOOGLECAPTCHAsitekeyHERE
RE_CAP_SECRET=YOURGOOGLECAPTCHAsecretHERE
# https://developers.facebook.com/
FB_ID=YOURFACEBOOKidHERE
FB_SECRET=YOURFACEBOOKsecretHERE
FB_REDIRECT=http://yourwebsiteURLhere.com/social/handle/facebook
# https://apps.twitter.com/
TW_ID=YOURTWITTERidHERE
TW_SECRET=YOURTWITTERkeyHERE
TW_REDIRECT=http://yourwebsiteURLhere.com/social/handle/twitter
# https://github.com/settings/applications/new
GITHUB_ID=YOURIDHERE
GITHUB_SECRET=YOURSECRETHERE
GITHUB_URL=https://larablog.io/social/handle/github
# https://developers.google.com/youtube/v3/getting-started
YOUTUBE_KEY=YOURKEYHERE
YOUTUBE_SECRET=YOURSECRETHERE
YOUTUBE_REDIRECT_URI=https://larablog.io/social/handle/youtube
# http://www.twitch.tv/kraken/oauth2/clients/new
TWITCH_KEY=YOURKEYHERE
TWITCH_SECRET=YOURSECRETHERE
TWITCH_REDIRECT_URI=http://laravel-authentication.local/social/handle/twitch
# https://instagram.com/developer/register/
INSTAGRAM_KEY=YOURKEYHERE
INSTAGRAM_SECRET=YOURSECRETHERE
INSTAGRAM_REDIRECT_URI=http://laravel-authentication.local/social/handle/instagram
# https://basecamp.com/
# https://github.com/basecamp/basecamp-classic-api
37SIGNALS_KEY=YOURKEYHERE
37SIGNALS_SECRET=YOURSECRETHERE
37SIGNALS_REDIRECT_URI=http://laravel-authentication.local/social/handle/37signals
mdl_dialog(trigger,close,dialog)
var trigger = trigger || document.querySelector('.dialog-button');
var close = close || document.querySelector('.dialog-close');
var dialog = dialog || document.querySelector('#dialog');
@include('dialogs.dialog-save')
Options a. DELETE DIALOG OPTIONS You can override the delete dialog title and save button text by passing your variables, otherwise the defaults will display.
Example:
@include('dialogs.dialog-delete', ['dialogTitle' => 'Confirm Task Deletion', 'dialogSaveBtnText' => 'Delete'])
Give a table functionality with DataTables
@section('template_scripts')
section call the view with:@include('scripts.mdl-datatables')
data-table
to your <table>
to instantiate it as a datatable.
3 You should add classes mdl-data-table
and mdl-js-data-table
for MDL styling (not required).no-sort
to the <th>
of the column.no-search
to the <th>
of the column.Use Google Material Design Lite built in notificatons outlined below:
Include @include('scripts.mdl-snackbar')
call in the @section('template_scripts')
section
Include @include('partials.mdl-snackbar')
in your template
Call Snackbar/Toast using JavaScript: EXAMPLES BELOW
var someActions = function(event) {
document.querySelector('.mdl-snackbar-trigger').style.backgroundColor = 'red';
};
mdl_snackbar({
msg: 'Profile Updated',
timout: 4000, // OPTIONAL
snackBarTrigger: '.mdl-snackbar-trigger', // OPTIONAL
actionText: 'Undo', // OPTIONAL
actionHandler: someActions, // OPTIONAL
});
mdl_snackbar({
msg: 'Profile Updated',
timout: 4000,
snackBarTrigger: '.mdl-snackbar-trigger'
});
<button class="mdl-button mdl-js-button mdl-button--raised mdl-snackbar-trigger" type="button">Show Toast</button>
laravel-material-design/
├── .env.example
├── .env.travis
├── .gitattributes
├── .gitignore
├── .travis.yml
├── LICENSE
├── README.md
├── app
│ ├── Console
│ │ ├── Commands
│ │ │ └── DeleteExpiredActivations.php
│ │ └── Kernel.php
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── AdminDetailsController.php
│ │ │ ├── Auth
│ │ │ │ ├── ActivateController.php
│ │ │ │ ├── ForgotPasswordController.php
│ │ │ │ ├── LoginController.php
│ │ │ │ ├── RegisterController.php
│ │ │ │ ├── ResetPasswordController.php
│ │ │ │ └── SocialController.php
│ │ │ ├── Controller.php
│ │ │ ├── ProfilesController.php
│ │ │ ├── RestoreUserController.php
│ │ │ ├── SoftDeletesController.php
│ │ │ ├── TasksController.php
│ │ │ ├── ThemesManagementController.php
│ │ │ ├── UserController.php
│ │ │ ├── UsersManagementController.php
│ │ │ └── WelcomeController.php
│ │ ├── Kernel.php
│ │ ├── Middleware
│ │ │ ├── Authenticate.php
│ │ │ ├── CheckCurrentUser.php
│ │ │ ├── CheckIsUserActivated.php
│ │ │ ├── EncryptCookies.php
│ │ │ ├── RedirectIfAuthenticated.php
│ │ │ ├── TrimStrings.php
│ │ │ └── VerifyCsrfToken.php
│ │ └── ViewComposers
│ │ ├── ThemeComposer.php
│ │ └── UsersComposer.php
│ ├── Logic
│ │ ├── Activation
│ │ │ └── ActivationRepository.php
│ │ └── Macros
│ │ └── HtmlMacros.php
│ ├── Mail
│ │ └── ExceptionOccured.php
│ ├── Models
│ │ ├── Activation.php
│ │ ├── Profile.php
│ │ ├── Social.php
│ │ ├── Task.php
│ │ ├── Theme.php
│ │ └── User.php
│ ├── Notifications
│ │ ├── SendActivationEmail.php
│ │ └── SendGoodbyeEmail.php
│ ├── Providers
│ │ ├── AppServiceProvider.php
│ │ ├── AuthServiceProvider.php
│ │ ├── BroadcastServiceProvider.php
│ │ ├── ComposerServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ ├── LocalEnvironmentServiceProvider.php
│ │ ├── MacroServiceProvider.php
│ │ └── RouteServiceProvider.php
│ └── Traits
│ ├── ActivationTrait.php
│ ├── CaptchaTrait.php
│ └── CaptureIpTrait.php
├── artisan
├── bootstrap
│ ├── app.php
│ ├── autoload.php
│ └── cache
│ ├── .gitignore
│ ├── packages.php
│ └── services.php
├── composer.json
├── config
│ ├── app.php
│ ├── auth.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── database.php
│ ├── debugbar.php
│ ├── exceptions.php
│ ├── filesystems.php
│ ├── gravatar.php
│ ├── hashing.php
│ ├── mail.php
│ ├── queue.php
│ ├── roles.php
│ ├── services.php
│ ├── session.php
│ ├── settings.php
│ └── view.php
├── database
│ ├── .gitignore
│ ├── factories
│ │ └── ModelFactory.php
│ ├── migrations
│ │ ├── 2014_10_12_000000_create_users_table.php
│ │ ├── 2014_10_12_100000_create_password_resets_table.php
│ │ ├── 2016_01_15_105324_create_roles_table.php
│ │ ├── 2016_01_15_114412_create_role_user_table.php
│ │ ├── 2016_01_26_115212_create_permissions_table.php
│ │ ├── 2016_01_26_115523_create_permission_role_table.php
│ │ ├── 2016_02_09_132439_create_permission_user_table.php
│ │ ├── 2017_03_09_082449_create_social_logins_table.php
│ │ ├── 2017_03_09_082526_create_activations_table.php
│ │ ├── 2017_03_20_213554_create_themes_table.php
│ │ ├── 2017_03_21_042918_create_profiles_table.php
│ │ └── 2017_05_20_095210_create_tasks_table.php
│ └── seeds
│ ├── ConnectRelationshipsSeeder.php
│ ├── DatabaseSeeder.php
│ ├── PermissionsTableSeeder.php
│ ├── RolesTableSeeder.php
│ ├── ThemesTableSeeder.php
│ └── UsersTableSeeder.php
├── favicon.png
├── license.svg
├── package.json
├── phpunit.xml
├── public
│ ├── .htaccess
│ ├── css
│ │ ├── app.css
│ │ └── mdl-themes
│ │ ├── material-grid.css
│ │ ├── material-grid.min.css
│ │ ├── material.amber-blue.min.css
│ │ ├── material.amber-cyan.min.css
│ │ ├── material.amber-deep_orange.min.css
│ │ ├── material.amber-deep_purple.min.css
│ │ ├── material.amber-green.min.css
│ │ ├── material.amber-indigo.min.css
│ │ ├── material.amber-light_blue.min.css
│ │ ├── material.amber-light_green.min.css
│ │ ├── material.amber-lime.min.css
│ │ ├── material.amber-orange.min.css
│ │ ├── material.amber-pink.min.css
│ │ ├── material.amber-purple.min.css
│ │ ├── material.amber-red.min.css
│ │ ├── material.amber-teal.min.css
│ │ ├── material.amber-yellow.min.css
│ │ ├── material.blue-amber.min.css
│ │ ├── material.blue-cyan.min.css
│ │ ├── material.blue-deep_orange.min.css
│ │ ├── material.blue-deep_purple.min.css
│ │ ├── material.blue-green.min.css
│ │ ├── material.blue-indigo.min.css
│ │ ├── material.blue-light_blue.min.css
│ │ ├── material.blue-light_green.min.css
│ │ ├── material.blue-lime.min.css
│ │ ├── material.blue-orange.min.css
│ │ ├── material.blue-pink.min.css
│ │ ├── material.blue-purple.min.css
│ │ ├── material.blue-red.min.css
│ │ ├── material.blue-teal.min.css
│ │ ├── material.blue-yellow.min.css
│ │ ├── material.blue_grey-amber.min.css
│ │ ├── material.blue_grey-blue.min.css
│ │ ├── material.blue_grey-cyan.min.css
│ │ ├── material.blue_grey-deep_orange.min.css
│ │ ├── material.blue_grey-deep_purple.min.css
│ │ ├── material.blue_grey-green.min.css
│ │ ├── material.blue_grey-indigo.min.css
│ │ ├── material.blue_grey-light_blue.min.css
│ │ ├── material.blue_grey-light_green.min.css
│ │ ├── material.blue_grey-lime.min.css
│ │ ├── material.blue_grey-orange.min.css
│ │ ├── material.blue_grey-pink.min.css
│ │ ├── material.blue_grey-purple.min.css
│ │ ├── material.blue_grey-red.min.css
│ │ ├── material.blue_grey-teal.min.css
│ │ ├── material.blue_grey-yellow.min.css
│ │ ├── material.brown-amber.min.css
│ │ ├── material.brown-blue.min.css
│ │ ├── material.brown-cyan.min.css
│ │ ├── material.brown-deep_orange.min.css
│ │ ├── material.brown-deep_purple.min.css
│ │ ├── material.brown-green.min.css
│ │ ├── material.brown-indigo.min.css
│ │ ├── material.brown-light_blue.min.css
│ │ ├── material.brown-light_green.min.css
│ │ ├── material.brown-lime.min.css
│ │ ├── material.brown-orange.min.css
│ │ ├── material.brown-pink.min.css
│ │ ├── material.brown-purple.min.css
│ │ ├── material.brown-red.min.css
│ │ ├── material.brown-teal.min.css
│ │ ├── material.brown-yellow.min.css
│ │ ├── material.css
│ │ ├── material.cyan-amber.min.css
│ │ ├── material.cyan-blue.min.css
│ │ ├── material.cyan-deep_orange.min.css
│ │ ├── material.cyan-deep_purple.min.css
│ │ ├── material.cyan-green.min.css
│ │ ├── material.cyan-indigo.min.css
│ │ ├── material.cyan-light_blue.min.css
│ │ ├── material.cyan-light_green.min.css
│ │ ├── material.cyan-lime.min.css
│ │ ├── material.cyan-orange.min.css
│ │ ├── material.cyan-pink.min.css
│ │ ├── material.cyan-purple.min.css
│ │ ├── material.cyan-red.min.css
│ │ ├── material.cyan-teal.min.css
│ │ ├── material.cyan-yellow.min.css
│ │ ├── material.deep_orange-amber.min.css
│ │ ├── material.deep_orange-blue.min.css
│ │ ├── material.deep_orange-cyan.min.css
│ │ ├── material.deep_orange-deep_purple.min.css
│ │ ├── material.deep_orange-green.min.css
│ │ ├── material.deep_orange-indigo.min.css
│ │ ├── material.deep_orange-light_blue.min.css
│ │ ├── material.deep_orange-light_green.min.css
│ │ ├── material.deep_orange-lime.min.css
│ │ ├── material.deep_orange-orange.min.css
│ │ ├── material.deep_orange-pink.min.css
│ │ ├── material.deep_orange-purple.min.css
│ │ ├── material.deep_orange-red.min.css
│ │ ├── material.deep_orange-teal.min.css
│ │ ├── material.deep_orange-yellow.min.css
│ │ ├── material.deep_purple-amber.min.css
│ │ ├── material.deep_purple-blue.min.css
│ │ ├── material.deep_purple-cyan.min.css
│ │ ├── material.deep_purple-deep_orange.min.css
│ │ ├── material.deep_purple-green.min.css
│ │ ├── material.deep_purple-indigo.min.css
│ │ ├── material.deep_purple-light_blue.min.css
│ │ ├── material.deep_purple-light_green.min.css
│ │ ├── material.deep_purple-lime.min.css
│ │ ├── material.deep_purple-orange.min.css
│ │ ├── material.deep_purple-pink.min.css
│ │ ├── material.deep_purple-purple.min.css
│ │ ├── material.deep_purple-red.min.css
│ │ ├── material.deep_purple-teal.min.css
│ │ ├── material.deep_purple-yellow.min.css
│ │ ├── material.green-amber.min.css
│ │ ├── material.green-blue.min.css
│ │ ├── material.green-cyan.min.css
│ │ ├── material.green-deep_orange.min.css
│ │ ├── material.green-deep_purple.min.css
│ │ ├── material.green-indigo.min.css
│ │ ├── material.green-light_blue.min.css
│ │ ├── material.green-light_green.min.css
│ │ ├── material.green-lime.min.css
│ │ ├── material.green-orange.min.css
│ │ ├── material.green-pink.min.css
│ │ ├── material.green-purple.min.css
│ │ ├── material.green-red.min.css
│ │ ├── material.green-teal.min.css
│ │ ├── material.green-yellow.min.css
│ │ ├── material.grey-amber.min.css
│ │ ├── material.grey-blue.min.css
│ │ ├── material.grey-cyan.min.css
│ │ ├── material.grey-deep_orange.min.css
│ │ ├── material.grey-deep_purple.min.css
│ │ ├── material.grey-green.min.css
│ │ ├── material.grey-indigo.min.css
│ │ ├── material.grey-light_blue.min.css
│ │ ├── material.grey-light_green.min.css
│ │ ├── material.grey-lime.min.css
│ │ ├── material.grey-orange.min.css
│ │ ├── material.grey-pink.min.css
│ │ ├── material.grey-purple.min.css
│ │ ├── material.grey-red.min.css
│ │ ├── material.grey-teal.min.css
│ │ ├── material.grey-yellow.min.css
│ │ ├── material.indigo-amber.min.css
│ │ ├── material.indigo-blue.min.css
│ │ ├── material.indigo-cyan.min.css
│ │ ├── material.indigo-deep_orange.min.css
│ │ ├── material.indigo-deep_purple.min.css
│ │ ├── material.indigo-green.min.css
│ │ ├── material.indigo-light_blue.min.css
│ │ ├── material.indigo-light_green.min.css
│ │ ├── material.indigo-lime.min.css
│ │ ├── material.indigo-orange.min.css
│ │ ├── material.indigo-pink.min.css
│ │ ├── material.indigo-purple.min.css
│ │ ├── material.indigo-red.min.css
│ │ ├── material.indigo-teal.min.css
│ │ ├── material.indigo-yellow.min.css
│ │ ├── material.light_blue-amber.min.css
│ │ ├── material.light_blue-blue.min.css
│ │ ├── material.light_blue-cyan.min.css
│ │ ├── material.light_blue-deep_orange.min.css
│ │ ├── material.light_blue-deep_purple.min.css
│ │ ├── material.light_blue-green.min.css
│ │ ├── material.light_blue-indigo.min.css
│ │ ├── material.light_blue-light_green.min.css
│ │ ├── material.light_blue-lime.min.css
│ │ ├── material.light_blue-orange.min.css
│ │ ├── material.light_blue-pink.min.css
│ │ ├── material.light_blue-purple.min.css
│ │ ├── material.light_blue-red.min.css
│ │ ├── material.light_blue-teal.min.css
│ │ ├── material.light_blue-yellow.min.css
│ │ ├── material.light_green-amber.min.css
│ │ ├── material.light_green-blue.min.css
│ │ ├── material.light_green-cyan.min.css
│ │ ├── material.light_green-deep_orange.min.css
│ │ ├── material.light_green-deep_purple.min.css
│ │ ├── material.light_green-green.min.css
│ │ ├── material.light_green-indigo.min.css
│ │ ├── material.light_green-light_blue.min.css
│ │ ├── material.light_green-lime.min.css
│ │ ├── material.light_green-orange.min.css
│ │ ├── material.light_green-pink.min.css
│ │ ├── material.light_green-purple.min.css
│ │ ├── material.light_green-red.min.css
│ │ ├── material.light_green-teal.min.css
│ │ ├── material.light_green-yellow.min.css
│ │ ├── material.lime-amber.min.css
│ │ ├── material.lime-blue.min.css
│ │ ├── material.lime-cyan.min.css
│ │ ├── material.lime-deep_orange.min.css
│ │ ├── material.lime-deep_purple.min.css
│ │ ├── material.lime-green.min.css
│ │ ├── material.lime-indigo.min.css
│ │ ├── material.lime-light_blue.min.css
│ │ ├── material.lime-light_green.min.css
│ │ ├── material.lime-orange.min.css
│ │ ├── material.lime-pink.min.css
│ │ ├── material.lime-purple.min.css
│ │ ├── material.lime-red.min.css
│ │ ├── material.lime-teal.min.css
│ │ ├── material.lime-yellow.min.css
│ │ ├── material.min.css
│ │ ├── material.orange-amber.min.css
│ │ ├── material.orange-blue.min.css
│ │ ├── material.orange-cyan.min.css
│ │ ├── material.orange-deep_orange.min.css
│ │ ├── material.orange-deep_purple.min.css
│ │ ├── material.orange-green.min.css
│ │ ├── material.orange-indigo.min.css
│ │ ├── material.orange-light_blue.min.css
│ │ ├── material.orange-light_green.min.css
│ │ ├── material.orange-lime.min.css
│ │ ├── material.orange-pink.min.css
│ │ ├── material.orange-purple.min.css
│ │ ├── material.orange-red.min.css
│ │ ├── material.orange-teal.min.css
│ │ ├── material.orange-yellow.min.css
│ │ ├── material.pink-amber.min.css
│ │ ├── material.pink-blue.min.css
│ │ ├── material.pink-cyan.min.css
│ │ ├── material.pink-deep_orange.min.css
│ │ ├── material.pink-deep_purple.min.css
│ │ ├── material.pink-green.min.css
│ │ ├── material.pink-indigo.min.css
│ │ ├── material.pink-light_blue.min.css
│ │ ├── material.pink-light_green.min.css
│ │ ├── material.pink-lime.min.css
│ │ ├── material.pink-orange.min.css
│ │ ├── material.pink-purple.min.css
│ │ ├── material.pink-red.min.css
│ │ ├── material.pink-teal.min.css
│ │ ├── material.pink-yellow.min.css
│ │ ├── material.purple-amber.min.css
│ │ ├── material.purple-blue.min.css
│ │ ├── material.purple-cyan.min.css
│ │ ├── material.purple-deep_orange.min.css
│ │ ├── material.purple-deep_purple.min.css
│ │ ├── material.purple-green.min.css
│ │ ├── material.purple-indigo.min.css
│ │ ├── material.purple-light_blue.min.css
│ │ ├── material.purple-light_green.min.css
│ │ ├── material.purple-lime.min.css
│ │ ├── material.purple-orange.min.css
│ │ ├── material.purple-pink.min.css
│ │ ├── material.purple-red.min.css
│ │ ├── material.purple-teal.min.css
│ │ ├── material.purple-yellow.min.css
│ │ ├── material.red-amber.min.css
│ │ ├── material.red-blue.min.css
│ │ ├── material.red-cyan.min.css
│ │ ├── material.red-deep_orange.min.css
│ │ ├── material.red-deep_purple.min.css
│ │ ├── material.red-green.min.css
│ │ ├── material.red-indigo.min.css
│ │ ├── material.red-light_blue.min.css
│ │ ├── material.red-light_green.min.css
│ │ ├── material.red-lime.min.css
│ │ ├── material.red-orange.min.css
│ │ ├── material.red-pink.min.css
│ │ ├── material.red-purple.min.css
│ │ ├── material.red-teal.min.css
│ │ ├── material.red-yellow.min.css
│ │ ├── material.teal-amber.min.css
│ │ ├── material.teal-blue.min.css
│ │ ├── material.teal-cyan.min.css
│ │ ├── material.teal-deep_orange.min.css
│ │ ├── material.teal-deep_purple.min.css
│ │ ├── material.teal-green.min.css
│ │ ├── material.teal-indigo.min.css
│ │ ├── material.teal-light_blue.min.css
│ │ ├── material.teal-light_green.min.css
│ │ ├── material.teal-lime.min.css
│ │ ├── material.teal-orange.min.css
│ │ ├── material.teal-pink.min.css
│ │ ├── material.teal-purple.min.css
│ │ ├── material.teal-red.min.css
│ │ ├── material.teal-yellow.min.css
│ │ ├── material.yellow-amber.min.css
│ │ ├── material.yellow-blue.min.css
│ │ ├── material.yellow-cyan.min.css
│ │ ├── material.yellow-deep_orange.min.css
│ │ ├── material.yellow-deep_purple.min.css
│ │ ├── material.yellow-green.min.css
│ │ ├── material.yellow-indigo.min.css
│ │ ├── material.yellow-light_blue.min.css
│ │ ├── material.yellow-light_green.min.css
│ │ ├── material.yellow-lime.min.css
│ │ ├── material.yellow-orange.min.css
│ │ ├── material.yellow-pink.min.css
│ │ ├── material.yellow-purple.min.css
│ │ ├── material.yellow-red.min.css
│ │ └── material.yellow-teal.min.css
│ ├── favicon.ico
│ ├── fonts
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.svg
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ ├── fontawesome-webfont.woff2
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.svg
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ ├── glyphicons-halflings-regular.woff2
│ │ └── weather-icons
│ │ ├── WeatherIcons-Regular.otf
│ │ ├── weathericons-regular-webfont.eot
│ │ ├── weathericons-regular-webfont.svg
│ │ ├── weathericons-regular-webfont.ttf
│ │ └── weathericons-regular-webfont.woff
│ ├── images
│ │ ├── buffer.svg
│ │ ├── default-user-bg.png
│ │ ├── tick-mask.svg
│ │ ├── tick.svg
│ │ ├── wink.png
│ │ └── wink.svg
│ ├── index.php
│ ├── js
│ │ ├── app.js
│ │ └── mdl.js
│ ├── mix-manifest.json
│ ├── robots.txt
│ └── web.config
├── resources
│ ├── assets
│ │ ├── js
│ │ │ ├── app.js
│ │ │ ├── bootstrap.js
│ │ │ ├── components
│ │ │ │ └── Example.vue
│ │ │ └── laravel-mdl
│ │ │ ├── alerts.js
│ │ │ ├── dialogs.js
│ │ │ ├── jQuery.animate-bg.js
│ │ │ ├── jQuery.simpleWeather.js
│ │ │ ├── mdl-colorwheel.js
│ │ │ ├── mdl-datatables.js
│ │ │ ├── mdl-selectfield.js
│ │ │ ├── mdl-snackbars.js
│ │ │ ├── select.js
│ │ │ └── spinners.js
│ │ └── sass
│ │ ├── app.scss
│ │ ├── components
│ │ │ ├── _alerts.scss
│ │ │ ├── _avatar.scss
│ │ │ ├── _badges.scss
│ │ │ ├── _breadcrumbs.scss
│ │ │ ├── _cards.scss
│ │ │ ├── _chips.scss
│ │ │ ├── _dialogs.scss
│ │ │ ├── _dropzone.scss
│ │ │ ├── _inputs.scss
│ │ │ ├── _labels.scss
│ │ │ ├── _lists.scss
│ │ │ ├── _material-icons.scss
│ │ │ ├── _mdl-color-wheel.scss
│ │ │ ├── _mdl-selectfield.scss
│ │ │ ├── _mdl-tabs.scss
│ │ │ ├── _mdl-toggle.scss
│ │ │ ├── _select.scss
│ │ │ ├── _social-icons.scss
│ │ │ ├── _spinners.scss
│ │ │ ├── _tables.scss
│ │ │ ├── _weather-card.scss
│ │ │ └── weather-icons
│ │ │ ├── icon-classes
│ │ │ │ ├── classes-beaufort.scss
│ │ │ │ ├── classes-day.scss
│ │ │ │ ├── classes-direction.scss
│ │ │ │ ├── classes-misc.scss
│ │ │ │ ├── classes-moon-aliases.scss
│ │ │ │ ├── classes-moon.scss
│ │ │ │ ├── classes-neutral.scss
│ │ │ │ ├── classes-night.scss
│ │ │ │ ├── classes-time.scss
│ │ │ │ ├── classes-wind-aliases.scss
│ │ │ │ ├── classes-wind-degrees.scss
│ │ │ │ └── classes-wind.scss
│ │ │ ├── icon-variables
│ │ │ │ ├── variables-beaufort.scss
│ │ │ │ ├── variables-day.scss
│ │ │ │ ├── variables-direction.scss
│ │ │ │ ├── variables-misc.scss
│ │ │ │ ├── variables-moon.scss
│ │ │ │ ├── variables-neutral.scss
│ │ │ │ ├── variables-night.scss
│ │ │ │ ├── variables-time.scss
│ │ │ │ └── variables-wind-names.scss
│ │ │ ├── mappings
│ │ │ │ ├── simpleweather-js.scss
│ │ │ │ ├── wi-forecast-io.scss
│ │ │ │ ├── wi-owm.scss
│ │ │ │ ├── wi-wmo4680.scss
│ │ │ │ ├── wi-wunderground.scss
│ │ │ │ └── wi-yahoo.scss
│ │ │ ├── weather-icons-classes.scss
│ │ │ ├── weather-icons-core.scss
│ │ │ ├── weather-icons-variables.scss
│ │ │ ├── weather-icons-wind.min.scss
│ │ │ ├── weather-icons-wind.scss
│ │ │ ├── weather-icons.min.scss
│ │ │ └── weather-icons.scss
│ │ ├── layouts
│ │ │ ├── _auth.scss
│ │ │ └── _dashboard.scss
│ │ ├── original
│ │ │ ├── _badges.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _helpers.scss
│ │ │ ├── _hideShowPassword.scss
│ │ │ ├── _lists.scss
│ │ │ ├── _logs.scss
│ │ │ ├── _margins.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _modals.scss
│ │ │ ├── _panels.scss
│ │ │ ├── _password.scss
│ │ │ ├── _socials.scss
│ │ │ ├── _typography.scss
│ │ │ ├── _variables.scss
│ │ │ ├── _wells.scss
│ │ │ └── app.scss
│ │ └── partials
│ │ ├── _base.scss
│ │ ├── _demo.scss
│ │ ├── _helpers.scss
│ │ ├── _mixins.scss
│ │ ├── _typography.scss
│ │ └── _variables.scss
│ ├── lang
│ │ └── en
│ │ ├── auth.php
│ │ ├── dialogs.php
│ │ ├── emails.php
│ │ ├── forms.php
│ │ ├── modals.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ ├── permsandroles.php
│ │ ├── profile.php
│ │ ├── socials.php
│ │ ├── themes.php
│ │ ├── titles.php
│ │ ├── usersmanagement.php
│ │ └── validation.php
│ └── views
│ ├── auth
│ │ ├── activation.blade.php
│ │ ├── exceeded.blade.php
│ │ ├── login.blade.php
│ │ ├── passwords
│ │ │ ├── email.blade.php
│ │ │ └── reset.blade.php
│ │ └── register.blade.php
│ ├── cards
│ │ ├── check-list-card.blade.php
│ │ ├── hero-image-card.blade.php
│ │ ├── user-profile-card.blade.php
│ │ └── weather-card.blade.php
│ ├── dialogs
│ │ ├── dialog-delete.blade.php
│ │ ├── dialog-restore.blade.php
│ │ └── dialog-save.blade.php
│ ├── emails
│ │ └── exception.blade.php
│ ├── errors
│ │ ├── 403.blade.php
│ │ ├── 404.blade.php
│ │ ├── 500.blade.php
│ │ ├── 503.blade.php
│ │ └── general.blade.php
│ ├── home.blade.php
│ ├── layouts
│ │ ├── app.blade.php
│ │ ├── auth.blade.php
│ │ └── dashboard.blade.php
│ ├── modals
│ │ ├── modal-delete.blade.php
│ │ ├── modal-form.blade.php
│ │ └── modal-save.blade.php
│ ├── pages
│ │ ├── admin
│ │ │ ├── home.blade.php
│ │ │ ├── php-details.blade.php
│ │ │ └── route-details.blade.php
│ │ ├── status.blade.php
│ │ └── user
│ │ └── home.blade.php
│ ├── panels
│ │ └── welcome-panel.blade.php
│ ├── partials
│ │ ├── account-nav.blade.php
│ │ ├── drawer-nav.blade.php
│ │ ├── errors.blade.php
│ │ ├── form-status-ajax.blade.php
│ │ ├── form-status.blade.php
│ │ ├── header-nav.blade.php
│ │ ├── mdl-filter.blade.php
│ │ ├── mdl-highlighter.blade.php
│ │ ├── mdl-search.blade.php
│ │ ├── mdl-snackbar.blade.php
│ │ ├── nav.blade.php
│ │ ├── search-bar.blade.php
│ │ ├── socials-icons.blade.php
│ │ ├── socials.blade.php
│ │ ├── status-panel.blade.php
│ │ └── status.blade.php
│ ├── profiles
│ │ ├── account.blade.php
│ │ ├── edit.blade.php
│ │ └── show.blade.php
│ ├── scripts
│ │ ├── check-changed.blade.php
│ │ ├── datatables.blade.php
│ │ ├── delete-modal-script.blade.php
│ │ ├── filter-data-script.blade.php
│ │ ├── form-modal-script.blade.php
│ │ ├── gmaps-address-lookup-api3.blade.php
│ │ ├── google-maps-geocode-and-map.blade.php
│ │ ├── highlighter-script.blade.php
│ │ ├── html5-password-match-check.blade.php
│ │ ├── mdl-datatables.blade.php
│ │ ├── mdl-file-upload.blade.php
│ │ ├── mdl-required-input-fix.blade.php
│ │ ├── mdl-save-ajax.blade.php
│ │ ├── mdl-select.blade.php
│ │ ├── mdl-snackbar.blade.php
│ │ ├── save-modal-script.blade.php
│ │ ├── toggleStatus.blade.php
│ │ ├── tooltips.blade.php
│ │ └── weather.blade.php
│ ├── tasks
│ │ ├── create.blade.php
│ │ ├── edit.blade.php
│ │ ├── filtered.blade.php
│ │ ├── index.blade.php
│ │ └── partials
│ │ ├── create-task.blade.php
│ │ ├── edit-task.blade.php
│ │ ├── task-row.blade.php
│ │ └── task-tab.blade.php
│ ├── themesmanagement
│ │ ├── add-theme.blade.php
│ │ ├── edit-theme.blade.php
│ │ ├── show-theme.blade.php
│ │ ├── show-themes.blade.php
│ │ └── template.blade.php
│ ├── usersmanagement
│ │ ├── create-user.blade.php
│ │ ├── edit-user.blade.php
│ │ ├── show-deleted-user.blade.php
│ │ ├── show-deleted-users.blade.php
│ │ ├── show-user.blade.php
│ │ └── show-users.blade.php
│ └── welcome.blade.php
├── routes
│ ├── api.php
│ ├── channels.php
│ ├── console.php
│ └── web.php
├── server.php
└── webpack.mix.js
brew install tree
tree -a -I '.git|node_modules|vendor|storage|tests'
Before opening an issue there are a couple of considerations:
Open source projects are a the community’s responsibility to use, contribute, and debug.
Laravel-material-design is licensed under the MIT license. Enjoy!