The purpose of this repository is to show good development practices on Laravel as well as to present cases of use of the framework's functionalities like :
- Authentication
- API
- Token authentication
- API Resources
- Versioning
- Blade
- Broadcasting
- Cache
- Filesystem
- Helpers
- Jobs & Queues
- Localization
- Migrations
- Policies
- Providers
- Requests
- Seeding & Factories
- Testing
Beside Laravel, this project uses other tools like :
- Bootstrap 4 Beta
- PHP-CS-Fixer
- Travis CI
- Font Awesome
- Vue.js
- axios
- Many more to discover.
Development environment requirements :
Setting up your development environment on your local machine :
$ git clone https://github.com/guillaumebriday/laravel-blog.git
$ cd laravel-blog
$ cp .env.example .env
$ docker-compose run blog-server composer install
$ docker-compose run blog-server php artisan key:generate
$ docker-compose up -d
Now you can access the site via http://localhost or http://laravel-blog.app if you added the domain to your hosts file.
You need to run the migrations :
$ docker-compose run blog-server php artisan migrate
Seed the database :
$ docker-compose run blog-server php artisan db:seed
This will create a new user that you can use to sign in :
Email : darthvader@deathstar.ds
Password : 4nak1n
And then, compile the assets :
$ docker run --rm -it -v $(pwd):/app -w /app node npm install
$ docker run --rm -it -v $(pwd):/app -w /app node npm run dev
Running tests :
$ docker-compose run blog-server ./vendor/bin/phpunit
Running php-cs-fixer :
$ docker-compose run blog-server ./vendor/bin/php-cs-fixer fix --config=.php_cs --verbose --dry-run --diff
Generating fake data :
$ docker-compose run blog-server php artisan db:seed --class=DevDatabaseSeeder
Starting job for newsletter :
$ docker-compose run blog-server php artisan tinker
> App\Jobs\PrepareNewsletterSubscriptionEmail::dispatch();
Discover package
$ docker-compose run blog-server php artisan package:discover
Clients can access to the REST API. API requests require authentication via token. You can create a new token in your user profil.
Then, you can use this token either as url parameter or in Authorization header :
# Url parameter
GET http://laravel-blog.app/api/v1/posts?api_token=your_private_token_here
# Authorization Header
curl --header "Authorization: Bearer your_private_token_here" http://laravel-blog.app/api/v1/posts
API are prefixed by api
and the API version number like so v1
.
Do not forget to set the X-Requested-With
header to XMLHttpRequest
. Otherwise, Laravel won't recognize the call as an AJAX request.
To list all the available routes for API :
$ docker-compose run blog-server php artisan route:list --path=api
Before using WebSockets, you need to create a free Pusher account at https://pusher.com/signup then login to your dashboard and create an app.
Set the BROADCAST_DRIVER
in your .env
file :
BROADCAST_DRIVER=pusher
Then fill in your Pusher app credentials in your .env
file:
PUSHER_APP_ID=xxxxxx
PUSHER_APP_KEY=xxxxxx
PUSHER_APP_SECRET=xxxxxx
PUSHER_APP_CLUSTER=xx
More details are available or to come on Guillaume Briday's blog (French).
Do not hesitate to contribute to the project by adapting or adding features ! Bug reports or pull requests are welcome.
This project is released under the MIT license.