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 features like:
- Authentication
- API
- Token authentication
- API Resources
- Versioning
- Blade
- Broadcasting
- Cache
- Email Verification
- Filesystem
- Helpers
- Horizon
- Localization
- Migrations
- Policies
- Providers
- Requests
- Seeding & Factories
- Testing
- Homestead
Beside Laravel, this project uses other tools like:
- Bootstrap 4
- PHP-CS-Fixer
- Travis CI
- Font Awesome
- Vue.js
- axios
- Redis
- spatie/laravel-medialibrary
- Many more to discover.
You can find some screenshots of the application on : https://imgur.com/a/Jbnwj
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 $ composer install $ vagrant up $ vagrant sshAll following commands must be run inside the VM:
$ cd code $ yarn install $ artisan key:generate $ artisan horizon:install $ artisan telescope:install $ artisan storage:linkNow you can access the application via http://localhost:8000.
There is no need to run php artisan serve. PHP is already running in the dedicated virtual machine.
You need to run the migrations with the seeds :
$ artisan migrate --seedThis will create a new user that you can use to sign in :
email: darthvader@deathstar.ds password: 4nak1nAnd then, compile the assets :
$ yarn dev # or yarn watchStarting job for newsletter :
$ artisan tinker > PrepareNewsletterSubscriptionEmail::dispatch();Seeding the database :
$ artisan db:seedRunning tests :
$ ./vendor/bin/phpunit --cache-result --order-by=defects --stop-on-defectRunning php-cs-fixer :
$ ./vendor/bin/php-cs-fixer fix --config=.php_cs --verbose --dry-run --diffGenerating backup :
$ artisan vendor:publish --provider="Spatie\Backup\BackupServiceProvider" $ artisan backup:runGenerating fake data :
$ artisan db:seed --class=DevDatabaseSeederDiscover package
$ artisan package:discoverIn development environnement, rebuild the database :
$ artisan migrate:fresh --seedClients can access to the REST API. API requests require authentication via token. You can create a new token in your user profile.
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/postsAPI 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 :
$ artisan route:list --path=apiDo 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.