Merge branch 'develop' of github.com:laravel/laravel into develop

This commit is contained in:
Taylor Otwell 2019-02-19 21:58:38 -05:00
commit 1d8add88f7
17 changed files with 133 additions and 61 deletions

View File

@ -1,5 +1,33 @@
# Release Notes # Release Notes
## [Unreleased](https://github.com/laravel/laravel/compare/v5.7.19...master)
### Added
- Hint for lenient log stacks ([#4918](https://github.com/laravel/laravel/pull/4918))
- Attribute casting for `email_verified_at` on `User` model stub ([#4930](https://github.com/laravel/laravel/pull/4930))
### Changed
- Remove unused Bootstrap class ([#4917](https://github.com/laravel/laravel/pull/4917))
- Change order of boot and register methods in service providers ([#4921](https://github.com/laravel/laravel/pull/4921))
- `web.config` comment to help debug issues ([#4924](https://github.com/laravel/laravel/pull/4924))
- Use `Str::random()` instead of `str_random()` ([#4926](https://github.com/laravel/laravel/pull/4926))
- Remove unnecessary link type on "welcome" view ([#4935](https://github.com/laravel/laravel/pull/4935))
## [v5.7.19 (2018-12-15)](https://github.com/laravel/laravel/compare/v5.7.15...v5.7.19)
### Added
- Add language entry for `starts_with` rule ([#4866](https://github.com/laravel/laravel/pull/4866))
- Add env variable ([e1b8847](https://github.com/laravel/laravel/commit/e1b8847a92bdd85163990ee2e3284262da09b5fd))
### Changed
- Update .gitignore ([bc435e7](https://github.com/laravel/laravel/commit/bc435e7fdd8308d133a404b1daa811dd30d95fe5))
- Bump to Mix v4 ([4882](https://github.com/laravel/laravel/pull/4882))
### Fixed
- Fixed mixed up comment order ([#4867](https://github.com/laravel/laravel/pull/4867))
## [v5.7.15 (2018-11-22)](https://github.com/laravel/laravel/compare/v5.7.13...v5.7.15) ## [v5.7.15 (2018-11-22)](https://github.com/laravel/laravel/compare/v5.7.13...v5.7.15)
### Added ### Added
@ -101,7 +129,7 @@ ### Changed
- Set `bcrypt rounds` using the `hashing` config ([#4643](https://github.com/laravel/laravel/pull/4643)) - Set `bcrypt rounds` using the `hashing` config ([#4643](https://github.com/laravel/laravel/pull/4643))
## v5.6.12 (2018-03-14) ## [v5.6.12 (2018-03-14)](https://github.com/laravel/laravel/compare/v5.6.7...v5.6.12)
### Added ### Added
- Added message for `not_regex` validation rule ([#4602](https://github.com/laravel/laravel/pull/4602)) - Added message for `not_regex` validation rule ([#4602](https://github.com/laravel/laravel/pull/4602))
@ -115,7 +143,7 @@ ### Removed
- Removed "thanks" package ([#4593](https://github.com/laravel/laravel/pull/4593)) - Removed "thanks" package ([#4593](https://github.com/laravel/laravel/pull/4593))
## v5.6.7 (2018-02-27) ## [v5.6.7 (2018-02-27)](https://github.com/laravel/laravel/compare/v5.6.0...v5.6.7)
### Changed ### Changed
- Use `Hash::make()` in `RegisterController` ([#4570](https://github.com/laravel/laravel/pull/4570)) - Use `Hash::make()` in `RegisterController` ([#4570](https://github.com/laravel/laravel/pull/4570))
@ -125,7 +153,7 @@ ### Removed
- Removed Bootstrap 3 variables ([#4572](https://github.com/laravel/laravel/pull/4572)) - Removed Bootstrap 3 variables ([#4572](https://github.com/laravel/laravel/pull/4572))
## v5.6.0 (2018-02-07) ## [v5.6.0 (2018-02-07)](https://github.com/laravel/laravel/compare/v5.5.28...v5.6.0)
### Added ### Added
- Added `filesystems.disks.s3.url` config parameter ([#4483](https://github.com/laravel/laravel/pull/4483)) - Added `filesystems.disks.s3.url` config parameter ([#4483](https://github.com/laravel/laravel/pull/4483))
@ -145,7 +173,7 @@ ### Changed
- Use Mix environment variables ([224f994](https://github.com/laravel/laravel/commit/224f9949c74fcea2eeceae0a1f65d9c2e7498a27), [2db1e0c](https://github.com/laravel/laravel/commit/2db1e0c5e8525f3ee4b3850f0116c13224790dff)) - Use Mix environment variables ([224f994](https://github.com/laravel/laravel/commit/224f9949c74fcea2eeceae0a1f65d9c2e7498a27), [2db1e0c](https://github.com/laravel/laravel/commit/2db1e0c5e8525f3ee4b3850f0116c13224790dff))
## v5.5.28 (2018-01-03) ## [v5.5.28 (2018-01-03)](https://github.com/laravel/laravel/compare/v5.5.22...v5.5.28)
### Added ### Added
- Added `symfony/thanks` ([60de3a5](https://github.com/laravel/laravel/commit/60de3a5670c4a3bf5fb96433828b6aadd7df0e53)) - Added `symfony/thanks` ([60de3a5](https://github.com/laravel/laravel/commit/60de3a5670c4a3bf5fb96433828b6aadd7df0e53))
@ -157,7 +185,7 @@ ### Changed
- Updated default Echo configuration for Pusher ([#4525](https://github.com/laravel/laravel/pull/4525), [aad5940](https://github.com/laravel/laravel/commit/aad59400e2d69727224a3ca9b6aa9f9d7c87e9f7), [#4526](https://github.com/laravel/laravel/pull/4526), [a32af97](https://github.com/laravel/laravel/commit/a32af97ede49fdd57e8217a9fd484b4cb4ab1bbf)) - Updated default Echo configuration for Pusher ([#4525](https://github.com/laravel/laravel/pull/4525), [aad5940](https://github.com/laravel/laravel/commit/aad59400e2d69727224a3ca9b6aa9f9d7c87e9f7), [#4526](https://github.com/laravel/laravel/pull/4526), [a32af97](https://github.com/laravel/laravel/commit/a32af97ede49fdd57e8217a9fd484b4cb4ab1bbf))
## v5.5.22 (2017-11-21) ## [v5.5.22 (2017-11-21)](https://github.com/laravel/laravel/compare/v5.5.0...v5.5.22)
### Added ### Added
- Added `-Indexes` option in `.htaccess` ([#4422](https://github.com/laravel/laravel/pull/4422)) - Added `-Indexes` option in `.htaccess` ([#4422](https://github.com/laravel/laravel/pull/4422))
@ -173,7 +201,7 @@ ### Fixed
- Fixed directive order in `.htaccess` ([#4433](https://github.com/laravel/laravel/pull/4433)) - Fixed directive order in `.htaccess` ([#4433](https://github.com/laravel/laravel/pull/4433))
## v5.5.0 (2017-08-30) ## [v5.5.0 (2017-08-30)](https://github.com/laravel/laravel/compare/v5.4.30...v5.5.0)
### Added ### Added
- Added `same_site` to `session.php` config ([#4168](https://github.com/laravel/laravel/pull/4168)) - Added `same_site` to `session.php` config ([#4168](https://github.com/laravel/laravel/pull/4168))
@ -199,7 +227,7 @@ ### Removed
- Removed migrations from autoload classmap ([#4340](https://github.com/laravel/laravel/pull/4340)) - Removed migrations from autoload classmap ([#4340](https://github.com/laravel/laravel/pull/4340))
## v5.4.30 (2017-07-20) ## [v5.4.30 (2017-07-20)](https://github.com/laravel/laravel/compare/v5.4.23...v5.4.30)
### Changed ### Changed
- Simplified mix require ([#4283](https://github.com/laravel/laravel/pull/4283)) - Simplified mix require ([#4283](https://github.com/laravel/laravel/pull/4283))
@ -212,7 +240,7 @@ ### Fixed
- Use quotes in `app.scss` ([#4287](https://github.com/laravel/laravel/pull/4287)) - Use quotes in `app.scss` ([#4287](https://github.com/laravel/laravel/pull/4287))
## v5.4.23 (2017-05-11) ## [v5.4.23 (2017-05-11)](https://github.com/laravel/laravel/compare/v5.4.21...v5.4.23)
### Added ### Added
- Added SQL Server connection ([#4253](https://github.com/laravel/laravel/pull/4253), [#4254](https://github.com/laravel/laravel/pull/4254)) - Added SQL Server connection ([#4253](https://github.com/laravel/laravel/pull/4253), [#4254](https://github.com/laravel/laravel/pull/4254))
@ -226,7 +254,7 @@ ### Fixed
- Added missing `ipv4` and `ipv6` validation messages ([#4261](https://github.com/laravel/laravel/pull/4261)) - Added missing `ipv4` and `ipv6` validation messages ([#4261](https://github.com/laravel/laravel/pull/4261))
## v5.4.21 (2017-04-28) ## [v5.4.21 (2017-04-28)](https://github.com/laravel/laravel/compare/v5.4.19...v5.4.21)
### Added ### Added
- Added `FILESYSTEM_DRIVER` and `FILESYSTEM_CLOUD` environment variables ([#4236](https://github.com/laravel/laravel/pull/4236)) - Added `FILESYSTEM_DRIVER` and `FILESYSTEM_CLOUD` environment variables ([#4236](https://github.com/laravel/laravel/pull/4236))
@ -235,7 +263,7 @@ ### Changed
- Use lowercase doctype ([#4241](https://github.com/laravel/laravel/pull/4241)) - Use lowercase doctype ([#4241](https://github.com/laravel/laravel/pull/4241))
## v5.4.19 (2017-04-20) ## [v5.4.19 (2017-04-20)](https://github.com/laravel/laravel/compare/v5.4.16...v5.4.19)
### Added ### Added
- Added `optimize-autoloader` to `config` in `composer.json` ([#4189](https://github.com/laravel/laravel/pull/4189)) - Added `optimize-autoloader` to `config` in `composer.json` ([#4189](https://github.com/laravel/laravel/pull/4189))
@ -253,7 +281,7 @@ ### Changed
- Use fluent middleware definition in `LoginController` ([#4229](https://github.com/laravel/laravel/pull/4229)) - Use fluent middleware definition in `LoginController` ([#4229](https://github.com/laravel/laravel/pull/4229))
## v5.4.16 (2017-03-17) ## [v5.4.16 (2017-03-17)](https://github.com/laravel/laravel/compare/v5.4.15...v5.4.16)
### Added ### Added
- Added `unix_socket` to `mysql` in `config/database.php` ()[#4179](https://github.com/laravel/laravel/pull/4179)) - Added `unix_socket` to `mysql` in `config/database.php` ()[#4179](https://github.com/laravel/laravel/pull/4179))

View File

@ -12,13 +12,15 @@ class RedirectIfAuthenticated
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
* @param \Closure $next * @param \Closure $next
* @param string|null $guard * @param string[] ...$guards
* @return mixed * @return mixed
*/ */
public function handle($request, Closure $next, $guard = null) public function handle($request, Closure $next, ...$guards)
{ {
if (Auth::guard($guard)->check()) { foreach ($guards as $guard) {
return redirect('/home'); if (Auth::guard($guard)->check()) {
return redirect('/home');
}
} }
return $next($request); return $next($request);

View File

@ -6,16 +6,6 @@
class AppServiceProvider extends ServiceProvider class AppServiceProvider extends ServiceProvider
{ {
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
/** /**
* Register any application services. * Register any application services.
* *
@ -25,4 +15,14 @@ public function register()
{ {
// //
} }
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
//
}
} }

View File

@ -27,4 +27,13 @@ class User extends Authenticatable
protected $hidden = [ protected $hidden = [
'password', 'remember_token', 'password', 'remember_token',
]; ];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
} }

View File

@ -19,7 +19,7 @@
"fzaninotto/faker": "^1.4", "fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0", "mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0", "nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0" "phpunit/phpunit": "^7.5"
}, },
"config": { "config": {
"optimize-autoloader": true, "optimize-autoloader": true,

View File

@ -13,7 +13,8 @@
| using this caching library. This connection is used when another is | using this caching library. This connection is used when another is
| not explicitly specified when executing a given caching function. | not explicitly specified when executing a given caching function.
| |
| Supported: "apc", "array", "database", "file", "memcached", "redis" | Supported: "apc", "array", "database", "file",
| "memcached", "redis", "dynamodb"
| |
*/ */
@ -59,7 +60,7 @@
env('MEMCACHED_PASSWORD'), env('MEMCACHED_PASSWORD'),
], ],
'options' => [ 'options' => [
// Memcached::OPT_CONNECT_TIMEOUT => 2000, // Memcached::OPT_CONNECT_TIMEOUT => 2000,
], ],
'servers' => [ 'servers' => [
[ [
@ -75,6 +76,14 @@
'connection' => 'cache', 'connection' => 'cache',
], ],
'dynamodb' => [
'driver' => 'dynamodb',
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_REGION', 'us-east-1'),
'table' => env('DYNAMODB_CACHE_TABLE', 'cache'),
],
], ],
/* /*

View File

@ -54,6 +54,9 @@
'prefix_indexes' => true, 'prefix_indexes' => true,
'strict' => true, 'strict' => true,
'engine' => null, 'engine' => null,
'options' => array_filter([
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
]),
], ],
'pgsql' => [ 'pgsql' => [
@ -110,20 +113,30 @@
'redis' => [ 'redis' => [
'client' => 'predis', 'client' => env('REDIS_CLIENT', 'predis'),
'default' => [ 'options' => [
'host' => env('REDIS_HOST', '127.0.0.1'), 'cluster' => env('REDIS_CLUSTER', 'predis'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
], ],
'cache' => [ 'clusters' => [
'host' => env('REDIS_HOST', '127.0.0.1'), 'default' => [
'password' => env('REDIS_PASSWORD', null), [
'port' => env('REDIS_PORT', 6379), 'host' => env('REDIS_HOST', '127.0.0.1'),
'database' => env('REDIS_CACHE_DB', 1), 'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_DB', 0),
],
],
'cache' => [
[
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 1),
],
],
], ],
], ],

View File

@ -37,6 +37,7 @@
'stack' => [ 'stack' => [
'driver' => 'stack', 'driver' => 'stack',
'channels' => ['daily'], 'channels' => ['daily'],
'ignore_exceptions' => false,
], ],
'single' => [ 'single' => [
@ -61,7 +62,7 @@
], ],
'papertrail' => [ 'papertrail' => [
'driver' => 'monolog', 'driver' => 'monolog',
'level' => 'debug', 'level' => 'debug',
'handler' => SyslogUdpHandler::class, 'handler' => SyslogUdpHandler::class,
'handler_with' => [ 'handler_with' => [

View File

@ -46,6 +46,7 @@
'host' => 'localhost', 'host' => 'localhost',
'queue' => 'default', 'queue' => 'default',
'retry_after' => 90, 'retry_after' => 90,
'block_for' => 0,
], ],
'sqs' => [ 'sqs' => [

View File

@ -14,7 +14,7 @@
| you may specify any of the other wonderful drivers provided here. | you may specify any of the other wonderful drivers provided here.
| |
| Supported: "file", "cookie", "database", "apc", | Supported: "file", "cookie", "database", "apc",
| "memcached", "redis", "array" | "memcached", "redis", "dynamodb", "array"
| |
*/ */
@ -92,9 +92,9 @@
| Session Cache Store | Session Cache Store
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| |
| When using the "apc" or "memcached" session drivers, you may specify a | When using the "apc", "memcached", or "dynamodb" session drivers you may
| cache store that should be used for these sessions. This value must | list a cache store that should be used for these sessions. This value
| correspond with one of the application's configured cache stores. | must match with one of the application's configured cache "stores".
| |
*/ */

View File

@ -1,6 +1,7 @@
<?php <?php
use App\User; use App\User;
use Illuminate\Support\Str;
use Faker\Generator as Faker; use Faker\Generator as Faker;
/* /*
@ -20,6 +21,6 @@
'email' => $faker->unique()->safeEmail, 'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(), 'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'remember_token' => str_random(10), 'remember_token' => Str::random(10),
]; ];
}); });

View File

@ -23,11 +23,11 @@
</whitelist> </whitelist>
</filter> </filter>
<php> <php>
<env name="APP_ENV" value="testing"/> <server name="APP_ENV" value="testing"/>
<env name="BCRYPT_ROUNDS" value="4"/> <server name="BCRYPT_ROUNDS" value="4"/>
<env name="CACHE_DRIVER" value="array"/> <server name="CACHE_DRIVER" value="array"/>
<env name="MAIL_DRIVER" value="array"/> <server name="MAIL_DRIVER" value="array"/>
<env name="QUEUE_CONNECTION" value="sync"/> <server name="QUEUE_CONNECTION" value="sync"/>
<env name="SESSION_DRIVER" value="array"/> <server name="SESSION_DRIVER" value="array"/>
</php> </php>
</phpunit> </phpunit>

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,3 +1,8 @@
<!--
Rewrites requires Microsoft URL Rewrite Module for IIS
Download: https://www.microsoft.com/en-us/download/details.aspx?id=47337
Debug Help: https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-failed-request-tracing-to-trace-rewrite-rules
-->
<configuration> <configuration>
<system.webServer> <system.webServer>
<rewrite> <rewrite>

View File

@ -9,7 +9,7 @@
## About Laravel ## About Laravel
Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel attempts to take the pain out of development by easing common tasks used in the majority of web projects, such as: Laravel is a web application framework with expressive, elegant syntax. We believe development must be an enjoyable and creative experience to be truly fulfilling. Laravel takes the pain out of development by easing common tasks used in many web projects, such as:
- [Simple, fast routing engine](https://laravel.com/docs/routing). - [Simple, fast routing engine](https://laravel.com/docs/routing).
- [Powerful dependency injection container](https://laravel.com/docs/container). - [Powerful dependency injection container](https://laravel.com/docs/container).
@ -19,23 +19,24 @@ ## About Laravel
- [Robust background job processing](https://laravel.com/docs/queues). - [Robust background job processing](https://laravel.com/docs/queues).
- [Real-time event broadcasting](https://laravel.com/docs/broadcasting). - [Real-time event broadcasting](https://laravel.com/docs/broadcasting).
Laravel is accessible, yet powerful, providing tools needed for large, robust applications. Laravel is accessible, powerful, and provides tools required for large, robust applications.
## Learning Laravel ## Learning Laravel
Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of any modern web application framework, making it a breeze to get started learning the framework. Laravel has the most extensive and thorough [documentation](https://laravel.com/docs) and video tutorial library of all modern web application frameworks, making it a breeze to get started with the framework.
If you're not in the mood to read, [Laracasts](https://laracasts.com) contains over 1100 video tutorials on a range of topics including Laravel, modern PHP, unit testing, JavaScript, and more. Boost the skill level of yourself and your entire team by digging into our comprehensive video library. If you don't feel like reading, [Laracasts](https://laracasts.com) can help. Laracasts contains over 1100 video tutorials on a range of topics including Laravel, modern PHP, unit testing, and JavaScript. Boost you and your team's skills by digging into our comprehensive video library.
## Laravel Sponsors ## Laravel Sponsors
We would like to extend our thanks to the following sponsors for helping fund on-going Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell): We would like to extend our thanks to the following sponsors for funding Laravel development. If you are interested in becoming a sponsor, please visit the Laravel [Patreon page](https://patreon.com/taylorotwell).
- **[Vehikl](https://vehikl.com/)** - **[Vehikl](https://vehikl.com/)**
- **[Tighten Co.](https://tighten.co)** - **[Tighten Co.](https://tighten.co)**
- **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)** - **[Kirschbaum Development Group](https://kirschbaumdevelopment.com)**
- **[64 Robots](https://64robots.com)** - **[64 Robots](https://64robots.com)**
- **[Cubet Techno Labs](https://cubettech.com)** - **[Cubet Techno Labs](https://cubettech.com)**
- **[Cyber-Duck](https://cyber-duck.co.uk)**
- **[British Software Development](https://www.britishsoftware.co)** - **[British Software Development](https://www.britishsoftware.co)**
- **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)** - **[Webdock, Fast VPS Hosting](https://www.webdock.io/en)**
- **[DevSquad](https://devsquad.com)** - **[DevSquad](https://devsquad.com)**
@ -55,6 +56,7 @@ ## Laravel Sponsors
- [Steadfast Collective](https://steadfastcollective.com/) - [Steadfast Collective](https://steadfastcollective.com/)
- [We Are The Robots Inc.](https://watr.mx/) - [We Are The Robots Inc.](https://watr.mx/)
- [Understand.io](https://www.understand.io/) - [Understand.io](https://www.understand.io/)
- [Abdel Elrafa](https://abdelelrafa.com)
## Contributing ## Contributing
@ -66,4 +68,4 @@ ## Security Vulnerabilities
## License ## License
The Laravel framework is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT). The Laravel framework is open-source software licensed under the [MIT license](https://opensource.org/licenses/MIT).

View File

@ -2,7 +2,7 @@
<div class="container"> <div class="container">
<div class="row justify-content-center"> <div class="row justify-content-center">
<div class="col-md-8"> <div class="col-md-8">
<div class="card card-default"> <div class="card">
<div class="card-header">Example Component</div> <div class="card-header">Example Component</div>
<div class="card-body"> <div class="card-body">

View File

@ -7,7 +7,7 @@
<title>Laravel</title> <title>Laravel</title>
<!-- Fonts --> <!-- Fonts -->
<link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet" type="text/css"> <link href="https://fonts.googleapis.com/css?family=Nunito:200,600" rel="stylesheet">
<!-- Styles --> <!-- Styles -->
<style> <style>
@ -85,9 +85,10 @@
</div> </div>
<div class="links"> <div class="links">
<a href="https://laravel.com/docs">Documentation</a> <a href="https://laravel.com/docs">Docs</a>
<a href="https://laracasts.com">Laracasts</a> <a href="https://laracasts.com">Laracasts</a>
<a href="https://laravel-news.com">News</a> <a href="https://laravel-news.com">News</a>
<a href="https://blog.laravel.com">Blog</a>
<a href="https://nova.laravel.com">Nova</a> <a href="https://nova.laravel.com">Nova</a>
<a href="https://forge.laravel.com">Forge</a> <a href="https://forge.laravel.com">Forge</a>
<a href="https://github.com/laravel/laravel">GitHub</a> <a href="https://github.com/laravel/laravel">GitHub</a>