Laravel Material Design is a Complete Build of Laravel 5.6 and Google Material Design Lite 1.3 with Email Registration Verification, Social Authentication, User Roles and Permissions, User Profiles, and Admin restricted user management system.
- About
- Features
- Installation Instructions
- View the Project in Browser Using Artisan
- Seeds
- Routes
- Socialite
- Other API keys
- Environment File
- Helpful custom functions
- Screenshots
- File Tree
- Laravel References
- Opening an Issue
- Laravel Material Design License
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.
A Laravel 5.6.x with Material Design Lite 1.3.0 project.
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 |
- Run
git clone https://github.com/jeremykenedy/laravel-material-design.git laravel-material-design
- Create a MySQL database for the project
mysql -u root -p
, if using Vagrant:mysql -u homestead -psecret
create database laravel_material;
\q
- From the projects root run
cp .env.example .env
- Configure your
.env
file // NOTE: Google API Key will prevent maps error - Run
composer install
from the projects root folder - From the projects root folder run:
php artisan vendor:publish --tag=laravelroles
- (Optional permissions step) From the projects root folder run
sudo chmod -R ug+rwx storage bootstrap/cache
- From the projects root folder run
php artisan key:generate
- From the projects root folder run
php artisan migrate
- From the projects root folder run
composer dump-autoload
- From the projects root folder run
php artisan db:seed
- Compile the front end assets with npm steps or yarn steps.
- From the projects root folder run
npm install
- From the projects root folder run
npm run dev
ornpm run production
- You can watch assets with
npm run watch
- From the projects root folder run
yarn install
- From the projects root folder run
yarn run dev
oryarn run production
- You can watch assets with
yarn run watch
- From the projects root folder run
php artisan config:cache
And thats it with the caveat of setting up and configuring your development environment. I recommend Laravel Homestead
- From the projects root folder run
php artisan serve
- Open your web browser and go to
http://localhost
- Unverified - Level 0
- User - Level 1
- Administrator - Level 5
- view.users
- create.users
- edit.users
- delete.users
Password | Access | |
---|---|---|
user@user.com | password | User Access |
admin@admin.com | 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 |
+--------+---------------+----------------------------------------+---------------------------------+------------------------------------------------------------------------+----------------------------------------------+
- Google Captcha API
- Facebook API
- Twitter API
- Google + API
- GitHub API
- YouTube API
- Twitch TV API
- Instagram API
- 37 Signals API
- See full list of providers: http://socialiteproviders.github.io
-
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.
- Example:
composer require socialiteproviders/twitch
-
From the projects root folder run
composer update
-
Add the service provider to
/config/services.php
- Example:
'twitch' => [ 'client_id' => env('TWITCH_KEY'), 'client_secret' => env('TWITCH_SECRET'), 'redirect' => env('TWITCH_REDIRECT_URI'), ],
-
Add the API credentials to
/.env
- Example:
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:- Conventional HTML:
<a href="{{ route('social.redirect', ['provider' => 'twitch']) }}" class="btn btn-lg btn-primary btn-block twitch">Twitch</a>
- Use Laravel HTML Facade with Laravel Collective:
{!! 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_EXCEPTION_FROM=email@email.com
EMAIL_EXCEPTION_TO='email1@gmail.com, email2@gmail.com'
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
- Call Material Design Lite Dialog Box
mdl_dialog(trigger,close,dialog)
- The inputs are optional, the Defaults are as follows:
var trigger = trigger || document.querySelector('.dialog-button');
var close = close || document.querySelector('.dialog-close');
var dialog = dialog || document.querySelector('#dialog');
- Add the desired dialog view to your template view with:
@include('dialogs.dialog-save')
- Substitute with the desired dialog blade.
-
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
- Within the
@section('template_scripts')
section call the view with:
@include('scripts.mdl-datatables')
- Add class
data-table
to your<table>
to instantiate it as a datatable. 3 You should add classesmdl-data-table
andmdl-js-data-table
for MDL styling (not required). - Optionally exclude/disable any column from being sortable by adding class
no-sort
to the<th>
of the column. - Optionally exclude/disable any column from being searchable by adding class
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
- Snackbar
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 });
- Toast
mdl_snackbar({ msg: 'Profile Updated', timout: 4000, snackBarTrigger: '.mdl-snackbar-trigger' });
- EXAMPLE CTA TO SnackBar/Toast
<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
- Tree command can be installed using brew:
brew install tree
- File tree generated using command
tree -a -I '.git|node_modules|vendor|storage|tests'
- http://laravel.com/docs/5.6/authentication
- http://laravel.com/docs/5.6/authorization
- http://laravel.com/docs/5.6/routing
- http://laravel.com/docs/5.6/schema
- https://laravelcollective.com/docs/5.5/html
- http://laravel.com/docs/5.6/authentication
- http://laravel.com/docs/5.6/authorization
- http://laravel.com/docs/5.6/routing
Before opening an issue there are a couple of considerations:
- You are all awesome!
- Read the instructions and make sure all steps were followed correctly.
- Check that the issue is not specific to your development environment setup.
- Provide duplication steps.
- Attempt to look into the issue, and if you have a solution, make a pull request.
- Show that you have made an attempt to look into the issue.
- Check to see if the issue you are reporting is a duplicate of a previous reported issue.
- Following these instructions show me that you have tried.
- If you have a questions send me an email to jeremykenedy@gmail.com
- Need some help, I can do my best on Slack: https://opensourcehelpgroup.slack.com
- Please be considerate that this is an open source project that I provide to the community for FREE when opening an issue.
Open source projects are a the community’s responsibility to use, contribute, and debug.
Laravel-material-design is licensed under the MIT license. Enjoy!